c# - 如何将网络摄像机视频流转换为视频文件?

标签 c# ffmpeg video-streaming mp4 rtsp

我有一个 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/

相关文章:

php - ffmpeg 修复视频方向

ffmpeg - 从 MPEG-4 获得 PTS?

ios - 在 iOS 上流式传输 RTSP 时接收 "End of file"

azure - 是否可以从 Windows Azure 直播视频

c# - 在计算目录大小时获取 UnauthorizedAccessException

C# TCP 服务器停止接收客户端消息,在服务重新启动时恢复

c# - C# 和 Javascript 中的动态对象属性

javascript - Node.JS:FFmpeg 管道视频编码未创建缩略图

python - 将透明视频叠加到摄像机供稿OpenCV

c# - SVC 文件和 WCF 项目之间的关系?