Detailed explanation of functions and structures used in ffmpeg audio and video de packaging

207 thousand Unauthorized reproduction is prohibited Understanding the course
Course Introduction
discuss {{interaction.discussNum ? '(' + interaction.discussNum + ')' : ''}}
Suitable for people
Students who have some C or C++foundation and want to improve their practical ability or want to learn ffmpeg and qt
You will learn
Based on the current popular FFMpeg video processing framework and the popular QT cross platform library. A complete video player developed is not based on video playback controls, but is fully implemented from the bottom
Course Introduction

The course content has been updated to add basic knowledge, solve the problem of stuck and synchronization, and add the opengl shader to play yuv, and release the XPlay 2.0 version.

This course is based on the current popular FFMpeg video processing framework and the popular QT cross platform library. A complete video player developed is not based on video playback controls, but is fully implemented from the bottom.
This course enables you to experience the whole process of an actual project from functional requirements analysis, basic principles explanation to code implementation demonstration.
It is especially suitable for students with a certain C or C++foundation who want to improve their practical ability. After learning this course, you can add one item to your project experience. You have developed the C++program of qt and ffmpeg, and realized all the audio and video functions of a player.
This course is also suitable for students who want to learn ffmpeg and qt. After learning this course, you can put ffmpeg into practical project applications. You also know the basic principles of QT very well. You can realize complex qt interfaces, and you can independently develop various audio and video applications, including UAVs, security, live video broadcast, video conference, And can develop cross platform applications


FFMpeg+Qt5 Development Player C++Practical Video Course Version 2.0 Update

  1. It supplements the basic knowledge so that students without basic audio and video can learn.

  2. Supplement the compilation process of ffmpeg under linux

  3. Independent code demonstration is based on ffmpeg audio and video de encapsulation for easy reference

  4. Independent code demonstration based on ffmpeg audio and video decoding, audio resampling, video pixel format conversion and size conversion

  5. Independent code demonstration Qt based audio playback

  6. Independent code demonstration: drawing yuv data with opengl shader based on Qt

  7. Supplemented all the source code of the example, and added Commented

  8. The original image size conversion strategy based on QImage (based on low CPU efficiency) was replaced by high-performance opengl material implementation (based on GPU)

  9. The original use of sws_scale's yuv conversion RGB (based on low CPU efficiency) is replaced by the use of opengl Shader (based on GPU using glsl)

  10. Full screen playback function added

  11. Fixed the problem that Seek could not reach the actual position (h264 can only jump to the key frame), jumping to the target position

  12. Fixed the problem of blurred screen caused by special video size (line alignment problem, solved by line copying)

  13. Fixed the situation that the program would go down when exiting (added thread exit processing)

  14. XPlay code refactoring reduces coupling, isolates and understands encapsulation and decoding

  15. XPlay code refactoring adds unpacking, audio and video threads

  16. The QOpenGL Widget that overloads QT uses opengl to draw yuv images, and qt controls can be superimposed on the video without blinking

  17. Corrected the audio and video synchronization problem, including the audio playback buffer time of QT



Lecturer: Xia Caojun

 Directory 1.png

 Directory 2.png

Expand more
release
 head portrait

{{ item.user.nick_name }} {{ EROLE_NAME[item.user.identity] }}

Topping note
 Discussion Chart
{{ item.create_time }} reply
  • delete

    Are you sure to delete?

    confirm
    cancel
  • {{item. is_top==1? 'Cancel topping': 'topping'}}

    The discussion that has been set to the top, do you want to replace the existing one?

    confirm
    cancel
{{ tag.text}}
 head portrait
{{ subitem.user.nick_name }} {{ EROLE_NAME[subitem.user.identity] }}
{{ subitem.create_time }} reply
delete

Are you sure to delete?

confirm
cancel
release
{{pageType==='video '?' The discussion area grabs the sofa, and you can get double credits': 'The discussion area is empty, please say two sentences~'}}
release
{{tips.text}}
{{ noteHeaderTitle }} note {{hasMyNote? 'My notes':' Take notes'}}
{{hasMyNote? 'My notes':' Take notes'}}
Quality Notes
Updated on: {{$dayjs. format ('YYYY-MM-DD HH: mm: ss', item.last_uptime*1000) }}
 head portrait
{{ detail.username }}

Public notes are visible to others and have the opportunity to be rated as "high-quality notes" by the administrator

{{ noteEditor.content.length }}/2000

Public Notes
preservation
put questions to

The lecturer will answer your questions as soon as possible. If you choose to ask questions in public, you can get more help from students.

Record time point
Record the time when the video is played when asking questions, so as to facilitate subsequent viewing
Open questions
Submit