深入理解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();

相关推荐
Echo_NGC22371 天前
【神经视频编解码NVC】传统神经视频编解码完全指南:从零读懂 AI 视频压缩的基石
人工智能·深度学习·算法·机器学习·视频编解码
jbk33111 天前
开发了一个免费的批量视频语音字幕识别工具,核心点是可批量自动处理识别任务
音视频
GeniuswongAir1 天前
苹果电脑上启动一个 RTSP 推流,用来做测试
ffmpeg
Coovally AI模型快速验证1 天前
超越Sora的开源思路:如何用预训练组件高效训练你的视频扩散模型?(附训练代码)
人工智能·算法·yolo·计算机视觉·音视频·无人机
weixin_436804071 天前
音频在线预览工具 - 输入URL即刻播放远程音频
音视频
Benny的老巢1 天前
n8n工作流通过Execute Command用FFmpeg处理音频,报错 stderr maxBuffer length exceeded的解决方案
ffmpeg·音频合成·n8n·n8n工作流·execute command
kaizq1 天前
AI-MCP本地流媒音频服务器设计与CherryStudio部署应用
音视频·cherrystudio·fastmcp·streamablehttp·本地mcp流媒服务器
thinkMoreAndDoMore1 天前
audioservice
音视频
TEL189246224771 天前
IT6517BFN:单芯片DisplayPort转VGA转换器,集成MCU
音视频·实时音视频·视频编解码
TEL189246224771 天前
IT6516BFN:单芯片DisplayPort转VGA转换器,集成MCU
音视频·实时音视频·视频编解码