转自:http://blog.csdn.net/bjcic/article/details/5438070 感谢bjcic!
http://blog.csdn.net/cherayliu/article/details/8175150 感谢秋兔子!
ffmpeg视频采集功能非常强大,不仅可以采集视频采集卡或USB摄像头的图像,还可以进行屏幕录制,同时还支持以RTP方式将视频流传送给支持RTSP的流媒体服务器,支持直播应用。
——————————————————————————————————————————————————
命令1:ffplay z.sdp
命令2:ffmpeg -f video4linux2 -s 320x300 -r 30 -i /dev/video0 -vcodec libx264 -f rtp rtp://127.0.0.1:5060 > x.sdp
执行顺序:
若x.sdp已存在,则直接执行命令1,命令2;
若x.sdp不存在,则先执行命令2,待x.sdp生成后,再执行命令1,命令2;
警告:若先执行命令2再执行命令1,会因为一些关键包的丢失造成解码不正常,播放出来会先花屏一阵子,然后变正常;
说明:libx264选项必须自行下载x264编译安装,之后在ffmpeg配置时enable了然后对ffmpeg联合编译后才可使用,详细这里不赘述,可以参照我的上一篇ubuntu安装ffmpeg。
x264最新源代码在这里:http://www.videolan.org/
附:(关于选项)
-s :size 视频大小
-r :fps 帧率
-i :input 输入
-vcodec :视频编码格式
——————————————————————————————————
录制屏幕:
ffmpeg -t 30 -f x11grab -s 640x480 -r 25 -i :0.0+65+24 -vcodec libx264 -f rtp rtp://127.0.0.1:5060 > x.sdp
其中-f指定x11grab表示屏幕录像(*编译时必须加上--enable-x11grab选项*),-s设定尺寸,写成缩写或1024x768格式均可,-r设定fps,-i中的:0.0表示你的x11屏幕,+0,0表示偏移,如果你想录制某个小窗口,可以用xwininfo -frame来找到具体坐标。
——————————————————————————————————
待解决问题:(1) 延迟较大;
(2)VLC播放失败。SDP required: A description in SDP format is required to receive the RTP stream. Note that rtp:// URIs cannot work with dynamic RTP payload format (96).