GStreamer播放多视频mp4文件

GStreamer播放多视频mp4文件,gstreamer,Gstreamer,在Windows上,使用gst 1.8.2(从1.6开始),我使用以下gst启动管道从多个IP摄像头流式创建mp4文件到单个mp4文件(我已重新格式化我的gst启动命令,使其在此处看起来更好,但它们是单行): 我可以使用VLC media player播放生成的文件,但无法使用gstreamer播放该文件。当我创建一个管道时,比如 gst-launch-1.0 uridecodebin name=u uri=file:/file.mp4 u.src_0 ! queue ! autovid

在Windows上,使用gst 1.8.2(从1.6开始),我使用以下gst启动管道从多个IP摄像头流式创建mp4文件到单个mp4文件(我已重新格式化我的gst启动命令,使其在此处看起来更好,但它们是单行):

我可以使用VLC media player播放生成的文件,但无法使用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电脑上尝试同样的命令,得到同样的结果

我设置了环境变量以生成“点”管道图文件。它们没有显示正确的视频格式、宽度或高度;我想它永远不会走那么远。我遵循otopolsky的配方,使用一个命令行示例和我的程序制作了一个摄像头

有人有什么想法吗

谢谢


-赖利。

我想你忘了在一开始的gst发布中添加
-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 

我想你一开始忘了在gst发布中添加
-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 

我在命令行中尝试了-e;我的rtsp来源没有乐趣。实际上,我编写了C++程序,但是我使用GSTYPARSESELAST来实现灵活性。我知道uri是错误的;我试图限制我的帖子的大小,以显示相关部分。谢谢你的建议,tho。让他们来@雷利,那我的测试管怎么办?它能用吗?我完全分散了注意力,没有运行你的示例;我只是试着修改它们以供我使用。今天我运行了您的示例,它确实有效。我怀疑你和EoS有关。让我用RTSP摄像机和命令行再试一次。我会接受你的回答。我认为Windows gstreamer端口或我的管道中存在错误。使用我的rtsp源代码,我可以创建一个文件,其中gst可以在src_1播放流。但是流src_0总是黑色的。谢谢你的帮助。我认为EoS是实现这一目标的关键。我有两个.mp4文件,而不是
videotestsrc
。如何将这两个mp4合并(而不是附加)到单个mp4文件中?任何输入我都在命令行中尝试了-e;我的rtsp来源没有乐趣。实际上,我编写了C++程序,但是我使用GSTYPARSESELAST来实现灵活性。我知道uri是错误的;我试图限制我的帖子的大小,以显示相关部分。谢谢你的建议,tho。让他们来@雷利,那我的测试管怎么办?它能用吗?我完全分散了注意力,没有运行你的示例;我只是试着修改它们以供我使用。今天我运行了您的示例,它确实有效。我怀疑你和EoS有关。让我用RTSP摄像机和命令行再试一次。我会接受你的回答。我认为Windows gstreamer端口或我的管道中存在错误。使用我的rtsp源代码,我可以创建一个文件,其中gst可以在src_1播放流。但是流src_0总是黑色的。谢谢你的帮助。我认为EoS是实现这一目标的关键。我有两个.mp4文件,而不是
videotestsrc
。如何将这两个mp4合并(而不是附加)到单个mp4文件中?任何输入更新到版本1.8.2,但没有乐趣。更新到版本1.8.2,但没有乐趣。