4

我有一台索尼网络摄像机 (SNC-RZ25N),我正在拼命尝试以某种有意义的格式从中获取数据。文档说它发送 MPEG-4 原始数据,但没有比这更具体。我可以使用 curl ( http://techhead.biz/media/tsv.m4v )捕获流的一部分,它将使用 VLC 和 ffplay 播放(尽管它在 ffplay 中播放速度太快)。

经过一天半的修修补补,我才发现我无法使用 ffmpeg 直接转换此流。一方面,ffmpeg 接受管道数据作为输入(我知道)的唯一方法是采用“yuv4mpegpipe”格式。

我尝试使用 'm4v' 作为指定格式通过管道传输到 ffmpeg,但它似乎想在开始处理之前读取整个流。

有谁知道我该怎么做?使用命令行工具?任何编程语言的开源库?更简单的解决方案是首选,但任何可行的解决方案都会很棒。

4

1 回答 1

1

看来 mplayer 可以通过 HTTP 播放您的 m4v 文件,并且至少使用您的示例文件可以正常工作:

mkfifo /tmp/fifo
mplayer -benchmark -vo yuv4mpeg:file=/tmp/fifo http://techhead.biz/media/tsv.m4v
ffmpeg -f yuv4mpegpipe -i /tmp/fifo -vcodec libx264 -vpre libx264-hq /tmp/foo.mp4

(-benchmark 告诉 mplayer 忽略帧持续时间,可能需要也可能不需要)

或者,仅使用 mencoder:

mencoder -o /tmp/foo.avi -of avi -ovc x264 -x264encopts bitrate=250 http://techhead.biz/media/tsv.m4v

最后,如果您实际上不需要 H.264,您可以将现有的 MPEG-ES 数据放入您需要的任何容器格式;MP4Box 可能可以做到这一点,如果 ffmpeg 和 mencoder 支持输出格式,则可以。

于 2009-09-02T21:11:23.523 回答