【问题标题】:GStreamer play multi-video mp4 fileGStreamer 播放多视频 mp4 文件
【发布时间】:2016-07-25 23:39:58
【问题描述】:

在 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 的食谱,单台相机工作,包括命令行示例和我的程序。

有人有什么想法吗?

谢谢。

-赖利。

【问题讨论】:

  • 更新到版本 1.8.2 没有任何乐趣。

标签: gstreamer


【解决方案1】:

我想你忘了在开始时将-e 添加到 gst-launch 中。我用你的管道的简化版本进行了测试:

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 中执行密码,所以使用完整路径..

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++ 程序,但我使用 gst_parse_launch 以获得灵活性。我知道 uri 是错误的;我试图限制我的帖子的大小以显示相关部分。感谢您的建议,寿。让他们来!
  • @Reilly 和我的测试管道怎么样 - 它有效吗?
  • 我完全隔开,没有运行你的例子;我只是尝试修改它们以供我使用。今天我运行了您的示例,它确实有效。我怀疑你对 EOS 感兴趣。让我用 RTSP 摄像头和命令行再试一次。
  • 我会接受你的回答。我认为 Windows gstreamer 端口或我的管道中存在错误。不到一半的时间,使用我的 rtsp 源,我可以创建一个文件,其中 gst 可以在 src_1 播放流。但是流 src_0 总是只是黑色的。谢谢你的帮助。我认为 EoS 是实现这一目标的关键。
  • 我有两个 .mp4 文件,而不是 videotestsrc。我如何将两个 mp4 合并(不附加)到单个 mp4 文件中?任何输入
猜你喜欢
  • 2014-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-03
  • 1970-01-01
相关资源
最近更新 更多