最简单的基于FFMPEG+SDL2.0 的视频播放器
最简单的基于FFMPEG+SDL2.0 的视频播放器
refer:
https://blog.csdn.net/leixiaohua1020/article/details/38868499
整体流程图:
FFmpeg解码一个视频流程如下图所示:
graph TD;
id0["Start"]
id1["av_register_all()"]
id2["avformat_open_input()"]
id3["avformat_find_stream_info()"]
id4["avcodec_find_decoder()"]
id5["avcodec_open2()"]
id6["av_read_frame()"]
id7{"Get Pocket?"}
id8["AV Pocket"]
id9{"Video Pocket"}
id10["avcodec_decode_video2"]
id11["END"]
id0-->id1
id1-->id2
id2-->id3
id3-->id4
id4-->id5
id5-->id6
id6-->id7
id7-->|False|id11
id7-->|True|id8
id8-->id9
id9-->|True|id10
id9-->|False|id6
id10-->id6
SDL2.0显示YUV的流程图:
graph TD;
id0["SDL_Init()"]
id1["SDL_CreateWindow()"]
id3["SDL_Window"]
id4["SDL_CreateRenderer()"]
id5["SDL_Renderer"]
id6["SDL_CreateTexture()"]
id7["SDL_Texture"]
id8["SDL_UpdateYUVTexture()"]
id9["SDL_RenderClear()"]
id10["SDL_RenderCopy()"]
id11["SDL_RenderPresent()"]
id12{"Display"}
id13["Decode()"]
id14["YUV"]
id0-->id1
id1-->id3
id3-->id4
id4-->id5
id5-->id6
id6-->id7
id7-->id8
id8-->id9
id9-->id10
id10-->id11
id11-->id12
id11-->id13
id13-->id14
id14-->id7