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

08|FFmpeg 和它的朋友们是怎么处理 MP4 的?

你好,我是刘歧。
我们日常看电视剧,录视频时,最常见的就是 MP4 格式了。你有没有想过,MP4 格式为什么使用得这么广泛呢?
因为 MP4 标准非常灵活,可扩展性比较好,有很多常见的格式是基于 MP4 做了一些扩展,然后被应用到比较广的范围,比如 CMAF、DASH、HLS。而且 MP4 的参考标准是一个开放的标准,我们通常以编号为 ISO-14496-12 来查找标准文档。因为 MP4 的使用范围比较广,我们在第 3 节课的时候,也着重讲了 MP4 封装容器格式,你可以回顾一下。
MP4扩展出来的格式
基于 MP4 的重要地位,我这节课来给你讲一讲,如何用 FFmpeg、GPAC 等工具生成与解析 MP4。
尽管 FFmpeg 的目标是自己不去创造标准,但是难免会有一些工具或者用户会根据自己的臆测做一些定制或者修改,导致与我们公认的标准出现一些偏差。为了让 MP4 的标准性更好地得到验证,我们通常会选择使用多种工具,所以这节课除了给你介绍 FFmpeg 对 MP4 的 mux 与 demux(封装与解封装)之外,我还会介绍一些其他的 MP4 相关的工具,例如 MP4Box、Shaka- Packager。
在我们使用 FFmpeg 做音视频处理的时候,经常会使用 FFmpeg 生成 MP4 文件,或者使用 FFmpeg 输入 MP4 文件然后转换成其他格式。这里我们就先来了解一下 FFmpeg 对 MP4 都有哪些能力支持。这就需要用到上节课的知识了,你可以停下来先想一下我们应该怎么在 FFmpeg 中查找自己想要的帮助信息。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文介绍了使用FFmpeg、GPAC和Shaka-Packager等工具处理MP4格式的内容。重点介绍了如何使用FFmpeg生成和解析MP4文件,以及常用参数如faststart和DASH。此外,还介绍了GPAC中的MP4Box工具和Shaka-Packager的应用。文章强调了MP4格式的广泛应用和重要性,以及不同工具在处理MP4文件时的特点和优势。通过实际操作示例,读者可以快速了解这些工具在处理MP4格式时的能力和应用场景。文章还提出了思考题,引发读者对视频流加密和解密的思考。整体而言,本文为读者提供了实用的技术指导和思考方向。

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

全部留言(4)

  • 最新
  • 精选
  • peter
    请教老师几个问题: Q1:FFmpeg能够生成MP4文件吗? 文中提高用GPAC等工具MP4文件,请问FFmpeg能生成MP4文件吗? Q2:怎么通过查帮助来解决一个具体问题? 问题:我买了老师的《FFmpeg从入门到精通》,操作第二章的一个例子时遇到问题: ffplay -debug vis_mb_type -window_title "show vis_mb_type" -ss 30 -t 20 -autoexit cas.mp4 Undefined constant or missing '(' in 'vis_mb_type' [aac @ 00000237ca4cff80] Unable to parse option value "vis_mb_type" [aac @ 00000237ca4cff80] Error setting option debug to value vis_mb_type. 首先这个问题怎么解决? 其次,我用的最新的5.1版本,书上用的似乎是3.X版本,感觉应该是版本不同导致的。我尝试了查帮助来解决,但没有成功。 请问:怎么从帮助中查vis_mb_type的用法? Q3:FFmpeg,老师用的时候版本是多少? 我用的是最新的5.1版本,执行ffmpeg -h muxer=mp4后,显示:Default video codec: mpeg4, 缺省视频编码是mpeg4,不是h264。 Q4:moov 与 mdat 的前后位置关系,对播放有什么影响? Q5:能否提供可执行的mp4info,以及GPAC和Shaka-Packager? 我从官网下载了mp4info,解压后是“MP4Info-0.3.3.gem”,无法执行。老师如果有可执行的mp4info,能否提供一个下载地址?还有GPAC和Shaka-Packager等工具,能否放到一个地方供下载? (这个有点难为老师,抱歉,不方便的话可以忽略这个问题;我的工作和音视频无关,平时工作忙,每天只能抽出部分时间看专栏,实在没有时间)

    作者回复: 1. 能,-f mp4 就可以 2. 新版本弃用了,5.1的话,可以考虑使用codecview滤镜,具体的可以参考官方文档。书的第二版还在整理草稿中 3. 如果你安装了H.264编码器的话,默认就会是H.264了,如果没有H.264编码器的话,默认编译ffmpeg的话通常是带mpeg4的编码器的,所以你看到的就是mpeg4了 4. moov在mdat后面的话,主要在http点播场景中会显现出比较突出的问题,基本上就是文件末尾了,差一点的播放器会先下载完成moov以后才开始播放,好一点的可能会多一个http的range请求拿到moov信息后开始播放。如果moov在文件的开头的话,也就是mdat前面的话,会比moov放在mdat后面快很多。 5. 都可以直接在网上下载到的,目前的mp4info.exe都是windows版本的,gpac和shaka都是github上就可以找到的

    2022-08-10归属地:北京
    1
  • jcy
    简单解答思考题: 加密视频 ffmpeg -i test.mkv -vcodec copy -acodec copy -t 5 -encryption_scheme cenc-aes-ctr -encryption_key 76a6c65c5ea762046bd749a2e632ccbb -encryption_kid a7e61c373e219033c21091fa607bf3b8 test.mp4 解密播放: ffplay SampleVideo_1280x720_1mb_encrypted.mp4 -decryption_key 76a6c65c5ea762046bd749a2e632ccbb
    2022-08-24归属地:北京
    1
  • ifelse
    学习打卡
    2023-12-26归属地:浙江
  • 木偶人King
    打卡
    2023-07-05归属地:上海
收起评论
显示
设置
留言
4
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部