快手 · 音视频技术入门课
刘歧
快手音视频首席架构师
4513 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 18 讲
快手 · 音视频技术入门课
15
15
1.0x
00:00/00:00
登录|注册

13 | FFmpeg 有哪些常见的应用场景?

你好,我是刘歧。
FFmpeg API 应用部分的前两节课,我们了解了 AVFormat、AVCodec 以及常用的操作接口,但是现在这些知识还是“各忙各的”的状态,好像没有真正地把图像与封装格式、传输协议给串起来,形成一个完整的音视频图形图像处理的链条,可能你都没空看 FFmpeg 源代码目录里面提供的例子。
别急,这节课我们就一起来看一看 FFmpeg 源代码里面的例子,主要是不转码只转封装、转码转封装和直播推流三个场景,通过分析这三个场景案例,加深一下你对 API 使用的理解。

Remuxing

在使用 FFmpeg 的 API 做开发之前,我们先来梳理一下想要做 Remuxing 的话都需要用到哪些结构体与模块,看一下基本的流程。
打开输入文件和打开输出文件,我们可以理解为初始化操作。
从输入文件中读取音视频数据包,将音视频数据包写入输出文件,我们可以把它理解为一个循环操作,直到遇到结束相关的操作信息才停止。
关闭输出文件和输入文件,我们可以理解为收尾操作。
下面,我们逐步剖析一下。
初始化操作部分的代码大概会使用这些函数。
使用 avformat_open_input、avformat_find_stream_info 来打开输入文件,并根据输入文件中的音视频流信息建立音视频流,也就是 AVStreams。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

FFmpeg多媒体处理技术应用场景总结 本文深入介绍了FFmpeg在多媒体处理中的常见应用场景,包括Remuxing和Transcoding。在Remuxing中,详细解释了使用FFmpeg API进行开发时所需的结构体、模块以及相应的代码示例。而在Transcoding中,介绍了打开输入文件、打开输出文件、编解码等操作的流程,并给出了相应的代码示例。通过分析FFmpeg源代码中的例子,读者能够快速了解FFmpeg的常见应用场景,加深对API使用的理解。文章内容丰富,对于想要深入了解FFmpeg的读者来说,是一份非常有价值的技术资料。 在推流方面,可以选择Remuxing或Transcoding中的任何一个例子。设置输出文件时,需要注意将输出格式设置为FLV,以适配RTMP的直播流。控制节奏时,可以在循环av_read_frame操作的下一句加上usleep(40000)来实现。最后,读者还可以思考如何通过Remuxing将一个视频编码是H.264,音频编码是AAC编码的直播流,收录为MP4文件,并且MP4文件是moov在mdat的前面的情景。 通过本文的学习,读者可以掌握FFmpeg中API的使用方法,实现音视频内容的收录和转码。灵活运用所学内容,基本可以满足大部分的场景需求。然而,仍需从FFmpeg源代码的doc/examples目录下提供的例子入手,多改、多看、多学习,以加深对FFmpeg的API的理解。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《快手 · 音视频技术入门课》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(3)

  • 最新
  • 精选
  • peter
    请教老师两个问题: Q1:双声道合并单声道,还能听到两个声道,有什么意义? 用这个命令:ffmpeg -i input.aac -ac 1 output.aac,可以把双声道合并为单声道,但是,合并后的文件,还是能听到两个声道的声音,怎么能算是“单声道”呢? 用命令“ffmpeg -i jixiaolan_aac.aac -map_channel 0.0.0 left.aac -map_channel 0.0.1 right.aac”生成的两个文件,无论是left.aac还是right.aac ,两个耳机都能听到,为什么? 这个问题是看书《FFmpeg从入门到精通》遇到的。 Q2:文中的代码,应该是C代码。这些代码可以下载并执行吗? (比如:从github上下载,然后编译、执行,能看到结果)。如果有一个完整的步骤,能操作成功并看到结果就更好了。

    作者回复: 1. 和声道布局有关系,ffmpeg -layouts 2. 下载ffmpeg源代码后可以先编译ffmpeg,./configure ;make然后make examples可以编译examples代码

    2022-08-23归属地:北京
    1
  • Amos
    请教老师个问题:如果将视频文件的码率下降一半,其他编码参数不变,视频文件的大小也应该下降一半吧?

    作者回复: 有可能,取决于最终的算法

    2023-09-21归属地:北京
  • ifelse
    学习打卡
    2023-12-31归属地:浙江
收起评论
显示
设置
留言
3
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部