一:视频编码流程
1.1 纯净的视频编码流程
像素数据->压缩编码数据。
例如编码YUV,就是“YUV->H.264”。
1.2 一般的视频编码流程
将像素流存储为一定封装格式(例如H264等)中。
例如将像素流编程成MP4格式,就是“YUV->H.264码流->MP4”。
二:FFmpeg编码流程
三:FFmpeg编码函数
av_register_all():注册所有组件。
av_guess_format():已经注册的最合适的输出格式
avcodec_find_encoder():查找一个已经注册的音视频编码器
avcode_open2():打开编码码器
avformat_write_header():把流头信息写入到媒体文件中
av_read_frame():读取一帧压缩数据。
avcodec_send_frame():发送一帧像素数据
avcodec_receive_packet():接受一帧编码数据
av_packet_rescale_ts():时间基转换
av_write_frame():写一帧数据
flush_encoder():将最后一帧写入文件
av_write_trailer():把流尾信息写入文件
av_code_close():关闭流
四:FFmpeg编码的数据结构
五:FFmpeg数据结构简介
六:FFmpeg数据结构分析