ffmpeg采集视频+压缩转码成h264+实时播放。

转自: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).

你可能感兴趣的:(ffmpeg采集视频+压缩转码成h264+实时播放。)