Jam*_*lor 23 h.264 ffmpeg html5
我有一个视频库,所有这些都应该通过将moovatom放在视频的其余部分之前来针对网络流媒体进行调整。这允许在客户端完全下载视频之前开始播放。
有没有一种可靠的方法可以通过定位moov原子中出现的字节数来检查某个视频是否已被调整?这仅用于调试目的。
slh*_*hck 23
FFmpeg 不会向您显示这些信息,真的。
您可以使用AtomicParsley来解析文件,例如:
AtomicParsley input.mp4 -T
Run Code Online (Sandbox Code Playgroud)
这将显示原子在树中的位置。如果moov原子在文件的开头,它必须紧跟在ftyp原子之后,所以你可以尝试解析输出,例如在 Bash 中,只打印第二行并检查它是否包含moov:
AtomicParsley input.mp4 -T | sed -n 2p | grep -q "moov" && echo "yup" || echo "nope"
Run Code Online (Sandbox Code Playgroud)
mar*_*k4o 16
使用这个qtfaststart(与 ffmpeg 的不同qt-faststart),qtfaststart -l 输入.mp4 将显示顶级原子的顺序。
$ qtfaststart -l bad.mp4
ftyp (32 bytes)
free (8 bytes)
mdat (559619 bytes)
moov (52916 bytes)
$ qtfaststart -l good.mp4
ftyp (32 bytes)
moov (52916 bytes)
mdat (559619 bytes)
$
Run Code Online (Sandbox Code Playgroud)
Tre*_*vor 12
使用另一个问题的答案ffmpeg描述了执行此操作的方法。运行以下 Bash 命令:
$ ffmpeg -v trace -i file.mp4 2>&1 | grep -e type:\'mdat\' -e type:\'moov\'
Run Code Online (Sandbox Code Playgroud)
输出将如下所示:
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x55ea95500ac0] type:'mdat' parent:'root' sz: 52958326 32 52971704
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x55ea95500ac0] type:'moov' parent:'root' sz: 13354 52958358 52971704
Run Code Online (Sandbox Code Playgroud)
在此示例中,由于moov出现在 后面mdat,因此 moov 原子不在文件的开头,并且未启用faststart 。如果moov出现在 之前mdat,则 moov 原子将位于文件的开头,并且将启用 faststart。
您可以使用 FFprobe 执行此操作:
ffprobe -v trace infile.mp4
Run Code Online (Sandbox Code Playgroud)
或者使用Bento4:
$ mp4info infile.m4a 文件: 主要品牌:isom 次要版本:200 兼容品牌: isom 兼容品牌:iso2 兼容品牌: mp41 快速启动:无 $ mp4info 输出文件.m4a 文件: 主要品牌:isom 次要版本:200 兼容品牌: isom 兼容品牌:iso2 兼容品牌: mp41 快速启动:是的
| 归档时间: |
|
| 查看次数: |
34522 次 |
| 最近记录: |