深入理解FFmpeg--libavformat接口使用

libavformat(lavf)是一个用于处理各种媒体容器格式的库。它的主要两个目的是去复用(即将媒体文件拆分为组件流)和复用的反向过程(以指定的容器格式写入提供的数据)。它还有一个I/O模块,支持多种访问数据的协议(如文件、tcp、http等)。在使用lavf之前,您需要调用av_register_all()来注册所有已编译的复用器、解复用器和协议。除非您绝对确定不会使用libavformat的网络功能,否则还应该调用avformat_network_init();

一、媒体流封装(Muxing)

媒体流封装主要是指以AVPackets的形式获取编码后的数据后,以指定的容器格式将其写入到文件或者其他方式输出到字节流中。

Muxing实际执行的主要API有:

初始化:avformat_alloc_output_context2();

创建媒体流(如果有的话):avformat_new_stream();

写文件头:avformat_write_header();

写数据包:av_write_frame()/av_interleaved_write_frame();

写文件尾:av_write_trailer();

相关推荐
Ulyanov21 分钟前
从零构建现代化Python音频播放器:ttk深度应用与皮肤系统设计
python·架构·音视频·数据可视化
Ulyanov1 小时前
音视频分离与音频处理核心技术深度解析 从MP4到高品质音乐文件的完整技术实现
python·音视频
2501_921930831 小时前
Flutter for OpenHarmony三方库适配实战:image_picker 图片视频选择
flutter·音视频
Flamingˢ4 小时前
ZYNQ+OV5640+VDMA+HDMI视频链路搭建实录:从摄像头采集到实时显示
arm开发·嵌入式硬件·fpga开发·vim·音视频
Black蜡笔小新5 小时前
视频融合平台EasyCVR核心技术架构解析与多场景应用实践
架构·音视频
EasyGBS5 小时前
国标GB28181视频分析平台EasyGBS视频质量诊断重塑工业园区监控智能运维新生态
大数据·网络·音视频
Wxinxiaozhang5 小时前
音频生成bin文件步骤
音视频
TEL136997627505 小时前
SSS1700音频对录线方案 SSS1700规格书
音视频
xuxie995 小时前
N18 RTC
单片机·嵌入式硬件·实时音视频
YWamy5 小时前
智能硬件音视频SDK选型:RTC关键指标全指南
音视频