作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
ffmpeg -i infile.avi out.mp4
输出无碎片的 MP4。
如何获取碎片mp4?
更新分段 mp4 文件在内部被分成几个背对背的 block 或 MPEG-4 电影片段。每个 block 都有自己的 moof 原子 - 因此文件中存在多个交错的 moof 原子,而不是像未碎片的 mp4 那样在末尾有一个 moof 原子。这使得在涉及缓冲的慢速网络上进行流传输变得更容易
有几个工具,例如 mp4box将普通 mp4 转换为碎片 MP4。不幸的是我们不能使用这样的东西
ffmpeg <options to output mp4> | mp4box
因为 ffmpeg 在生成 mp4 容器时不会生成可查找的输出。
最佳答案
这应该可以解决问题:
ffmpeg -re -i infile.ext -g 52 \
-c:a aac -b:a 64k -c:v libx264 -b:v 448k \
-f mp4 -movflags frag_keyframe+empty_moov \
output.mp4
frag_keyframe
导致碎片输出,empty_moov
将导致输出 100% 碎片化;如果没有这个,第一个片段将被混合为一个短片(使用moov
),然后是片段中的其余媒体,-re
在直播时很有用(使用输入媒体帧速率),如果您正在创建文件,请勿使用它,-g 52
强制(至少)每第 52 帧成为关键帧要计算健康的关键帧间隔,请参阅有关 fragment sizes 的段落在我的流媒体服务器的文档中。 - 您还可以考虑使用 WebM,它是 H.264 的免费替代品(并且在某些平台上比碎片 mp4 有更好的支持)。
重要说明:FFMpeg 的复用器会将每个 tkhd
和 mdhd
原子中的持续时间设置为 0xffffffff追踪。这会导致某些播放器出现问题(例如 Quicktime 不会播放此类文件)。您应该找到一个工具并将其更改为零(0x00000000)。
关于ffmpeg - 如何用ffmpeg输出碎片mp4?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8616855/
我是一名优秀的程序员,十分优秀!