gpt4 book ai didi

ffmpeg - 如何用ffmpeg输出碎片mp4?

转载 作者:行者123 更新时间:2023-12-03 06:51:26 25 4
gpt4 key购买 nike

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 的复用器会将每个 tkhdmdhd 原子中的持续时间设置为 0xffffffff追踪。这会导致某些播放器出现问题(例如 Quicktime 不会播放此类文件)。您应该找到一个工具并将其更改为零(0x00000000)。

关于ffmpeg - 如何用ffmpeg输出碎片mp4?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8616855/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com