如何在 Windows 中使用 FFMPEG 流式传输桌面?
我努力了
ffmpeg -list_devices true -f dshow -i dummy
然后将其流化
ffmpeg -f dshow -i video="Chicony USB 2.0 Camera" -r 30 -vcodec mpeg4 -q 12 -f mpegts udp://192.168.2.7:6666?pkt_size=188?buffer_size=65535
使用这个我就可以流式传输相机。
我必须输入什么命令才能在 Windows 中流式传输桌面?
答案1
使用以下方式捕获桌面内置 GDI 屏幕抓取工具:
ffmpeg -f gdigrab -framerate 30 -i desktop output.mkv
流式传输:
ffmpeg -f gdigrab -framerate 30 -i desktop -vcodec mpeg4 -q 12 -f mpegts udp://192.168.2.7:6666
播放流:
ffplay -f mpegts udp://192.168.2.1:6666
保存流:
ffmpeg -f mpegts -i udp://192.168.2.1:6666 output.mkv
这里您可以在同一个流中找到带有音频的示例。
如果视频流没有立即启动,并且 ffmpeg 输出类似“不存在 PPS 0 引用“——您只是还没有收到关键帧,等待十几秒它就会出现。
答案2
或者,您可以使用UScreenCapture
。它使用 DirectX 的 DShow API,适用于 x86 和 x64 架构。安装后,您将找到一个新的输入源“UScreenCapture”,它就是您的实时桌面屏幕。
如果您将其发送到 Wowza 服务器,则需要以下命令:
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=1316
请注意,我明确更改了像素格式(pix_fmt),因为 ffmpeg 使用了yuv444p
。yuv420p
我必须这样做才能使其工作。
对我来说,它非常有效。
问候,G。