将流式MPEG-4原始数据转换为H.264

时间:2009-09-01 06:17:11

标签: ffmpeg mp4 vlc h.264 mpeg

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

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

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

任何人都知道如何做到这一点?使用命令行工具?用任何编程语言开源库?更简单的解决方案是首选,但任何有效的解决方案都会很棒。

1 个答案:

答案 0 :(得分: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

( - 基准告诉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支持输出格式,则可以这样做。