修改的
我停止使用VLC并切换到GMax FLV Encoder。它在IMO方面做得更好。
原帖
我将我的桌面(屏幕)作为H264视频流发送到另一台机器,使用以下命令行将其保存到文件中:
流的发件人:
vlc -I dummy
--sout='#transcode{vcodec=h264,vb=512,scale=0.5}
:rtp{mux=ts,dst=192.168.0.1,port=4444}'
流的接收者:
vlc -I rc
rtp://@:4444
--sout='#std{access=file,mux=ps,dst=/home/user/output.mp4}'
--ipv4
这有效,但有一些问题:
有人能指出我如何解决这些问题的正确方向吗?
编辑:我取得了一些进展。
播放的初始延迟是因为播放器正在等待关键帧。通过强制流的发送者每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}'
然而,寻求问题并没有解决,但我理解它好一点。 RTP流以原始流格式保存为文件,通常不能作为常规视频文件播放。 VLC设法播放此文件,但大多数其他播放器没有。所以我需要将其转换为常规视频文件。我正在调查是否可以使用ffmpeg执行此操作,如果我为其提供了录制流的SDP文件。
欢迎所有帮助!
答案 0 :(得分:6)
使用以下命令更新发件人命令行:
venc=x264{scenecut=20,bframes=0}
您的客户端命令行为:
vlc -I rc rtp://@:4444 --sout='#std{access=file,mux=mp4,dst=/tmp/output.mp4}' --ipv4
应该解决你的问题。你测试过哪些球员?
答案 1 :(得分:0)
<强>发件人:强>
$ vlc screen:// :screen-fps=5 :screen-caching=100 --sout='#transcode{vcodec=h264,venc=x264{scenecut=20,bframes=0},vb=512,scale=0.5}:rtp{mux=ts,dst=127.0.0.1,port=1234}'
VLC media player 1.1.11 The Luggage (revision exported)
Blocked: call to unsetenv("DBUS_ACTIVATION_ADDRESS")
Blocked: call to unsetenv("DBUS_ACTIVATION_BUS_TYPE")
[0x9caf8fc] main libvlc: Running vlc with the default interface. Use 'cvlc' to use vlc without interface.
Blocked: call to setlocale(6, "")
Warning: call to srand(1314435080)
Warning: call to rand()
Blocked: call to setlocale(6, "")
(process:11597): Gtk-WARNING **: Locale not supported by C library.
Using the fallback 'C' locale.
x264 [info]: using cpu capabilities: MMX2 Cache64
x264 [info]: profile High, level 3.2
x264 [info]: using SAR=1/1
x264 [info]: using cpu capabilities: MMX2 Cache64
x264 [info]: profile High, level 4.0
x264 [info]: frame I:1 Avg QP:16.44 size: 57235
x264 [info]: frame P:152 Avg QP:10.01 size: 2747
x264 [info]: mb I I16..4: 33.8% 2.7% 63.5%
x264 [info]: mb P I16..4: 0.9% 0.0% 0.9% P16..4: 2.1% 0.4% 0.3% 0.0% 0.0% skip:95.4%
x264 [info]: 8x8 transform intra:1.8% inter:44.3%
x264 [info]: coded y,uvDC,uvAC intra: 45.5% 42.9% 40.5% inter: 1.5% 1.5% 1.4%
x264 [info]: i16 v,h,dc,p: 45% 54% 0% 0%
x264 [info]: i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 24% 41% 22% 2% 2% 2% 4% 1% 3%
x264 [info]: i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 16% 49% 13% 2% 3% 3% 5% 2% 7%
x264 [info]: i8c dc,h,v,p: 43% 49% 7% 2%
x264 [info]: Weighted P-Frames: Y:0.0% UV:0.0%
x264 [info]: ref P L0: 85.8% 4.5% 9.1% 0.7%
x264 [info]: kb/s:124.12
^C[0x9d4ee6c] signals interface error: Caught Interrupt signal, exiting...
<强>接收器:强>
$ vlc udp://:1234
VLC media player 1.1.11 The Luggage (revision exported)
Blocked: call to unsetenv("DBUS_ACTIVATION_ADDRESS")
Blocked: call to unsetenv("DBUS_ACTIVATION_BUS_TYPE")
[0x8c728fc] main libvlc: Running vlc with the default interface. Use 'cvlc' to use vlc without interface.
Blocked: call to setlocale(6, "")
Warning: call to srand(1314469032)
Warning: call to rand()
Blocked: call to setlocale(6, "")
(process:11707): Gtk-WARNING **: Locale not supported by C library.
Using the fallback 'C' locale.
libdvbpsi error (PSI decoder): TS discontinuity (received 1, expected 0) for PID 0
libdvbpsi error (PSI decoder): TS discontinuity (received 1, expected 0) for PID 66
libdvbpsi error (PSI decoder): TS discontinuity (received 6, expected 5) for PID 0
libdvbpsi error (PSI decoder): TS discontinuity (received 8, expected 7) for PID 0
libdvbpsi error (PSI decoder): TS discontinuity (received 10, expected 9) for PID 0
libdvbpsi error (PSI decoder): TS discontinuity (received 14, expected 13) for PID 0
libdvbpsi error (PSI decoder): TS discontinuity (received 0, expected 15) for PID 66
libdvbpsi error (PSI decoder): TS discontinuity (received 2, expected 1) for PID 66
libdvbpsi error (PSI decoder): TS discontinuity (received 12, expected 11) for PID 66
libdvbpsi error (PSI decoder): TS discontinuity (received 14, expected 13) for PID 66
libdvbpsi error (PSI decoder): TS discontinuity (received 0, expected 15) for PID 66
libdvbpsi error (PSI decoder): TS discontinuity (received 2, expected 1) for PID 66
libdvbpsi error (PSI decoder): TS discontinuity (received 7, expected 6) for PID 0
libdvbpsi error (PSI decoder): TS discontinuity (received 9, expected 8) for PID 0
libdvbpsi error (PSI decoder): TS discontinuity (received 11, expected 10) for PID 0
libdvbpsi error (PSI decoder): TS discontinuity (received 13, expected 12) for PID 66
libdvbpsi error (PSI decoder): TS discontinuity (received 15, expected 14) for PID 66
libdvbpsi error (PSI decoder): TS discontinuity (received 1, expected 0) for PID 0
libdvbpsi error (PSI decoder): TS discontinuity (received 8, expected 7) for PID 66
libdvbpsi error (PSI decoder): TS discontinuity (received 11, expected 10) for PID 0
libdvbpsi error (PSI decoder): TS discontinuity (received 13, expected 12) for PID 66
libdvbpsi error (PSI decoder): TS discontinuity (received 4, expected 3) for PID 0
libdvbpsi error (PSI decoder): TS discontinuity (received 8, expected 7) for PID 66
[0xb740070c] main input error: ES_OUT_SET_(GROUP_)PCR is called too late (pts_delay increased to 300 ms)
^C[0x8d11cec] signals interface error: Caught Interrupt signal, exiting...