GStreamer播放多视频mp4文件

时间:2016-07-22 14:26:08

标签: gstreamer

在Windows上,使用gst 1.8.2(从1.6开始),我使用以下gst-launch管道从多个IP摄像机创建mp4文件流式传输到单个mp4文件(我已经重新格式化了我的gst-launch命令以在这里看起来更好,但它们是单行的:

mp4mux name=m ! filesink location=file.mp4   
rtspsrc location="rtsp://x" latency=0 name=Camera1 ! rtph264depay ! h264parse ! tee name=t1 
   t1. ! queue ! m.video_1 
   t1. ! queue ! decodebin ! autovideosink name=video1   
rtspsrc location="rtsp://y" latency=0 name=Camera2 ! rtph264depay ! h264parse ! tee name=t2 
   t2. ! queue ! m.video_2 
   t2. ! queue ! decodebin ! autovideosink name=video2

我可以使用VLC媒体播放器播放生成的文件,但我无法播放使用gstreamer的文件。当我创建像

这样的管道时
gst-launch-1.0 uridecodebin name=u uri=file:/file.mp4 
   u.src_0 ! queue ! autovideosink 
   u.src_1 ! queue ! autovideosink

永远不会玩。在等待视频的同时,我看到了

Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
Redistribute latency...
Redistribute latency...

当我后来点击ctrl-c时,响应是

handling interrupt.
Interrupt: Stopping pipeline ...
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
Freeing pipeline ...

同事在他的Mac上尝试相同的命令并获得相同的结果。

我设置环境变量以生成“DOT”管道图文件。它们没有显示正确的视频格式,宽度或高度;我想它永远不会那么遥远。我按照otopolsky的配方和单个相机工作,都有一个命令行示例和我的程序。

有人有什么想法吗?

感谢。

-reilly。

1 个答案:

答案 0 :(得分:0)

我想你忘了在开头的gst-launch中添加-e。我测试了管道的简化版本:

gst-launch-1.0 -e mp4mux name=m ! filesink location=file.mp4 videotestsrc ! x264enc ! m.video_1 videotestsrc ! x264enc ! m.video_2

像这样玩。你的uri错了..你需要提供完整路径或使用filesrc(位置可以是相对的)和decodebin而不是..

这是正确的管道 - 不知道如何在Windows中执行pwd所以使用完整路径..

gst-launch-1.0 uridecodebin name=u uri=file://`pwd`/file.mp4 ! video/x-raw ! queue ! videoconvert ! autovideosink u. ! video/x-raw ! queue ! videoconvert ! autovideosink