如何将 IP 摄像机中的原始 h264 文件转换为可在 PC 上播放的文件?

如何将 IP 摄像机中的原始 h264 文件转换为可在 PC 上播放的文件?

我的安全摄像头(维图 PC730) 如果检测到任何动作,就会将短视频存储在 SD 卡上。

这些文件被命名为xx.h264

没有播放器(VLC、MPlayer 等)能够播放它。

它似乎是某种 h264 压缩。

我尝试用 FFmpeg 转换它

ffmpeg -i 00.264 -bsf h264_mp4toannexb -vcodec libx264 out00.mp4

还有许多其他选项。转换总是会产生很多错误,例如:

out00.h264: corrupt decoded frame in stream 0
[h264 @ 0000000000509a00] concealing 7804 DC, 7804 AC, 7804 MV errors in P frame

out00.h264: corrupt decoded frame in stream 0
[h264 @ 00000000036e2a00] concealing 8045 DC, 8045 AC, 8045 MV errors in P frame

[h264 @ 000000000366fc80] top block unavailable for requested intra mode -1
[h264 @ 000000000366fc80] error while decoding MB 78 0, bytestream 1153
[h264 @ 000000000366fc80] concealing 8131 DC, 8131 AC, 8131 MV errors in P frame

out00.h264: corrupt decoded frame in stream 0
[h264 @ 0000000002bf0e40] concealing 7930 DC, 7930 AC, 7930 MV errors in P frame

[NULL @ 00000000004f2980] illegal POC type 10
out00.h264: corrupt decoded frame in stream 0
[h264 @ 00000000036e2a00] illegal POC type 10
frame= 1489 fps= 12 q=28.0 size=    5888kB time=00:00:57.44 bitrate= 839.7kbits/
[h264 @ 00000000036e2a00] illegal POC type 10
    Last message repeated 1 times
out00.h264: corrupt decoded frame in stream 0
[h264 @ 00000000004e2bc0] top block unavailable for requested intra mode -1
[h264 @ 00000000004e2bc0] error while decoding MB 62 0, bytestream 1441

以下是该文件的开头:

第一个字节的十六进制转储图像

您可以经常看到 NAL 单元分隔符00 00 01,因此该文件似乎包含 NAL 单元,但我不熟悉 NAL 单元内部的有效负载。

欢迎提出任何有关如何将其转换为可播放格式的想法。

答案1

您很可能不需要转换视频,而是需要将该流放入 MP4 视频容器中。因此请使用如下命令:

ffmpeg -i input.h264 -c copy output.mp4

这只会将 的原始内容复制input.h264到 中output.mp4。但它现在将位于 MP4 容器中,该容器应在所有兼容播放器中按预期播放。甚至可以强制像这样的帧速率:

ffmpeg -framerate 30 -i input.h264 -c copy output.mp4

如果视频流确实损坏了,请尝试这个命令,它基本上执行与第一个命令类似的操作,但在这种情况下它会忽略错误:

ffmpeg -err_detect ignore_err -i input.h264 -c copy output.mp4

答案2

您说过您尝试过使用 VLC,所以我认为这是您感兴趣的一个选项。

所以我刚刚raw.h264从崩溃的 DJI 无人机控制器中提取了一些文件。

对我来说,使用 VLC 的最新版本播放文件是可行的。但我无法在任何其他设备上以这种格式使用这些文件,而且在 VLC 中观看文件似乎确实很滞后。所以我发现 VLC 有一个选项可以转换文件。

在 Mac 上raw.h264使用 VLC 打开文件。然后在菜单中转到“文件”并选择“转换/流...”。

您将看到如下所示的屏幕,您可以在其中选择输入raw.h264文件并选择所需的输出文件和位置。

VLC 转换和流

编辑:实际上,我发现通过此页面进行转换可以获得更好的输出:https://h264-to-mp4.file-converter-online.com/

答案3

如果是 530/540 型号,视频是加密的。除非您在相机设置中禁用加密,否则您只能在其应用程序上查看视频。不确定您是否可以禁用它,但启用 onvif 就可以了。

相关内容