最近在做局域网内屏幕分享方面的东西,要把录制一台设备的屏幕然后实时推送给内网的一个或多个用户。
做了很多实验,效果还没有达到要求,这里分享一下推rtmp流的实验。
实验使用到的各种工具:FFmpeg.exe、crtmp(推rtmp时需要其做为服务器)、vlcplayer。
一、 启动crtmp推流服务
二、 使用命令行工具调用FFmpeg程序,所用命令如下(参数略有不同,每次使用一条即可):
ffmpeg -f gdigrab -video_size 1920x1080 -framerate 15 -i desktop -vcodec libx264 -f flv rtmp://127.0.0.1/live/mystream
ffmpeg -f dshow -i video="screen-capture-recorder" -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -f flv rtmp://127.0.0.1/live/mystream
注:第二条命令需要安装Screen Capturer Recorder后才能使用。参见http://blog.csdn.net/leixiaohua1020/article/details/38284961
三、 推流稳定之后,使用vlcplayer播放录制视频
播放的地址为rtmp://127.0.0.1/live/mystream live=1,能正常播放
问题:
- 系统资源占用太多,CPU一直在9%左右(i7-4790),内容则吃掉了1G
- 延迟太大,本机播放延迟大约10秒(希望控制在2秒以内)