我有一个 URL ( <ip>/ipcam/mpeg4.cgi
) 指向我的 IP 摄像机,它通过以太网连接。
访问 URL 会产生无限的视频(可能带有音频)数据流。
我想将这些数据存储到一个视频文件中,稍后用视频播放器播放(HTML5 的 video
标签作为播放器是首选)。
然而,一种直接的方法,就是将流数据简单地保存到.mp4
中。文件,没用。
我查看了文件,这是我看到的(点击放大):
事实证明,有一些 HTML header ,我进一步使用二进制编辑工具手动排除了这些 header ,但没有播放器可以播放文件的其余部分。
HTML header 是:
--myboundary
Content-Type: image/mpeg4
Content-Length: 76241
X-Status: 0
X-Tag: 1693923
X-Flags: 0
X-Alarm: 0
X-Frametype: I
X-Framerate: 30
X-Resolution: 1920*1080
X-Audio: 1
X-Time: 2000-02-03 02:46:31
alarm: 0000
我的问题现在很清楚了,我希望得到任何帮助或建议。我怀疑,我必须根据上面的这些值自己手动创建一些 MP4 header ,但是,我无法理解格式描述,例如 these .
我的网络摄像机上有以下视频流设置(点击放大):
我也可以使用 ffmpeg
工具,但无论我如何尝试将参数混合到程序中,它一直告诉我这个错误:
最佳答案
看起来您的服务器正在发送附件 B 字节流格式的 H.264 编码“原始视频”。
它可能会被重新格式化为 .mp4,类似下面的命令行:
ffmpeg -i {input file} -f rawvideo -bsf h264_mp4toannexb -vcodec copy out.mp4
将音频/视频流保存到文件中并非易事。如果只是视频,使用 MPEG2 TS 格式是最简单的方法。
对于 .mp4 流,考虑 -movflags faststart
-> Recommendation on the best quality/performance H264 encoder for video encoding?
** 更新:-bsf h264_mp4toannexb
选项可以省略,我不确定。
关于c# - 如何将网络摄像机视频流转换为视频文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26883207/