最近,我正在尝试利用ffmpeg将实时桌面屏幕流式传输到Wowza 媒体服务器。
到目前为止,我在这个主题上取得了部分成功:
我已经设法使用 UScreenCapture directx dshow 过滤器记录桌面屏幕,并且我还能够将此记录发送到服务器。但是,当我尝试将屏幕直接发送到服务器时,每次都会失败。播放器的缓冲速度很慢,完成后会显示一个空白屏幕(计数器不断计数)。
所以,这里是工作方法
对于录制屏幕:
ffmpeg -f dshow -i video="UScreenCapture" -r 25 -vcodec libx264 output.flv
对于流媒体视频:
ffmpeg -re -i <input_file_here> -map 0 -c copy -vbsf h264_mp4toannexb -f mpegts udp://stream.server.xyz:52000?pkt_size=1024
这是我正在使用的代码:
ffmpeg -f dshow -i video="UScreenCapture" -s width x height -r framerate -vcodec libx264 -pix_fmt yuv420p -b:v bitrate -an -vbsf h264_mp4toannexb -f mpegts udp:// your.destination.url:PORTNUMBER ? pkt_size= some_bytes
据我所知,在我升级 wowza 之前它运行良好。
一些附加信息:
- 操作系统: win7 sp1 64位
- ffmpeg N-49610-gc2dd5a1(Zeranoe FFmpeg build 2013 Feb 5)
- UScreenCapture: x64 版 2.0.14 版
- 在 Debian linux 2.6.32-5-amd64 上运行的Wowza 3.5.2
- Flowplayer: 3.2.15
通过查看 Wowza 日志文件,有些东西引起了我的注意。似乎当我正在流式传输桌面屏幕时,服务器 somhow 会收到不完整的数据包,但是当我正在流式传输视频文件时,不会发生错误。
RTPDePacketizerMPEGTS.handleRTPPacket
WARN server comment 2013-04-11 11:26:24 - - - - - 152629.665 - - - - - - - -RTPDePacketizerMPEGTS.handleRTPPacket: Incomplete packet: 1504:1472
WARN server comment 2013-04-11 11:26:27 - - - - - 152632.782 - - - - - - - -RTPDePacketizerMPEGTS.handleRTPPacket: Incomplete packet: 1504:1472
WARN server comment 2013-04-11 11:26:31 - - - - - 152636.383 - - - - - - - -RTPDePacketizerMPEGTS.handleRTPPacket: Incomplete packet: 1504:1472
WARN server comment 2013-04-11 11:26:38 - - - - - 152643.484 - - - - - - - -RTPDePacketizerMPEGTS.handleRTPPacket: Incomplete packet: 1504:1472
WARN server comment 2013-04-11 11:26:47 - - - - - 152653.088 - - - - - - - -RTPDePacketizerMPEGTS.handleRTPPacket: Incomplete packet: 1504:1472
WARN server comment 2013-04-11 11:26:52 - - - - - 152657.587 - - - - - - - -RTPDePacketizerMPEGTS.handleRTPPacket: Incomplete packet: 1504:1472
WARN server comment 2013-04-11 11:26:56 - - - - - 152661.624 - - - - - - - -RTPDePacketizerMPEGTS.handleRTPPacket: Incomplete packet: 1504:1472
WARN server comment 2013-04-11 11:27:05 - - - - - 152670.805 - - - - - - - -RTPDePacketizerMPEGTS.handleRTPPacket: Incomplete packet: 1504:1472
是什么导致了这个错误?有任何想法吗?
提前致谢!