如何通过stdin / stdout流式传输mp4视频?

时间:2019-05-16 09:53:23

标签: linux video streaming stdin

我需要将视频流传输到stdout,然后再次从stdin中读取该流以显示它。最后,中间会有一个应用程序来处理网络,但现在我想直接对其进行测试。尝试此操作时,视频计时器可以工作,但是屏幕保持黑屏。

vlc -I dummy video.mp4 --sout '#standard{access=file,mux=ogg,dst=-}' | vlc -

我也尝试过gstreamer,但是我还无法成功流式传输视频。

gst-launch-1.0 filesrc location=video.mp4 ! fdsink | gst-launch-1.0 fdsrc fd=0 ! decodebin ! autovideosink

有人知道怎么做吗? 预先感谢!

1 个答案:

答案 0 :(得分:0)

为了使这项工作有效,我不得不在VLC选项上付出很多努力,甚至不能确定那里没有多余/无用/错误的设置(例如多余的冗长;-) 记录下来,我从VLC's wiki获得了帮助。

在接收方:

vlc rtp://192.168.56.101

在发送方:

vlc -vvv video.mp4 --sout '#duplicate{dst=display,dst="transcode{vcodec=mp4v,acodec=mpga,vb=800,ab=128,deinterlace}:rtp{mux=ts,dst=192.168.56.101,sdp=sap,name="TestStream"}"}'

NB:

  • 您将看到2个视频输出,这是由于流选项中的“ duplicate”参数(值为--sout
  • 不要忘记在两个命令中都添加工作站的IP地址