VLC桌面流媒体

Sta*_*ked 5 video vlc video-streaming

编辑
我停止使用VLC并切换到GMax FLV编码器.它在IMO方面做得更好.

原帖
我将我的桌面(屏幕)作为H264视频流发送到另一台机器,使用以下命令行将其保存到文件中:

流的发件人:

vlc -I dummy
    --sout='#transcode{vcodec=h264,vb=512,scale=0.5}
            :rtp{mux=ts,dst=192.168.0.1,port=4444}'
Run Code Online (Sandbox Code Playgroud)

流的接收者:

vlc -I rc
    rtp://@:4444
    --sout='#std{access=file,mux=ps,dst=/home/user/output.mp4}'
    --ipv4
Run Code Online (Sandbox Code Playgroud)

这有效,但有一些问题:

  • 大多数玩家无法播放该文件.
  • VLC能够播放文件,但有些奇怪:
  • =>播放实际开始前大约需要10秒钟.
  • =>寻求不起作用.

有人能指出我如何解决这些问题的正确方向吗?

编辑:我取得了一些进展.

播放的初始延迟是因为播放器正在等待关键帧.通过强制流的发送者每4秒创建一个新的关键帧,我可以减少延迟:

:screen-fps=10
--sout='#transcode{vcodec=h264,venc=x264{keyint=40},vb=512,scale=0.5}
       :rtp{mux=ts,dst=192.168.0.1,port=4444}'
Run Code Online (Sandbox Code Playgroud)

然而寻求问题并没有解决,但我理解它好一点.RTP流以原始流格式保存为文件,通常不能作为常规视频文件播放.VLC设法播放此文件,但大多数其他播放器没有.所以我需要将其转换为常规视频文件.我正在调查我是否可以使用ffmpeg执行此操作,如果我为其提供记录流的SDP文件.

欢迎大家帮忙!

小智 6

更新发件人命令行:

venc=x264{scenecut=20,bframes=0}
Run Code Online (Sandbox Code Playgroud)

并且您的客户端命令行为:

vlc -I rc rtp://@:4444 --sout='#std{access=file,mux=mp4,dst=/tmp/output.mp4}' --ipv4
Run Code Online (Sandbox Code Playgroud)

应该解决你的问题.你测试过哪些球员?