如果我在我的手机(Samsung S5)上录制.mp4并使用以下命令通过FFmpeg传递,则输出文件(fileX.avi
)是一个灰度位图未压缩视频文件。
允许我查找视频帧数据的fileX.avi
(FFmpeg输出)中的偏移值始终为5680字节。
帧间标题为62个字节。
数据是未压缩的RGB24,因此我可以轻松地从高x宽x 3计算视频帧的大小。
因此,我的C#应用程序可以在fileX.avi
处访问上述偏移量中的视频帧
(这很好用)。
我的FFmpeg命令是:
ffmpeg.exe -i source.mp4 -b 1150 -r 20.97 -g 120 -an -vf format=gray -f rawvideo -pixfmt gray -s 384x216 -vcodec rawvideo -y fileX.avi
然而......我最近从不同的来源(由Power Director 14制作而不是直接从我的手机制作)获取了.mp4文件,并将其用作输入source.mp4
。但现在fileX.avi
的结构不同,因为从fileX.avi
开始的5680 + 62字节的偏移值不会在视频数据帧的开头出现。
.mp4似乎有不同的文件格式 - 显然如果有我的粗略偏移方法将不适用于所有。我怀疑当时我写的代码我的方法太容易解决了!
那么有人可以就我现在采取的方法提出建议吗?我应该检查原始.mp4或输出文件(fileX.avi
)以确定"文件类型" 我可以确定不同的偏移量吗?
至少我需要能够识别出有效的.mp4文件的&#34;类型&#34; ,这样我才能声明可以使用我的软件的类型。< / p>