RTMP / RTSP 在线示例视频流记录与直接从视频流中抽取视频帧以及ffmpeg技巧
引入:在涉及视频流生成与保存工作,除了自己手动循环播放视频生成视频流之外,还可以借助现在有的一些公开视频流。
一、在线示例视频流记录
- RTMP类
- 广西卫视: rtmp://58.200.131.2:1935/livetv/gxtv
- 湖南卫视: rtmp://58.200.131.2:1935/livetv/hunantv
- 广东卫视: rtmp://58.200.131.2:1935/livetv/gdtv
- 东方卫视: rtmp://58.200.131.2:1935/livetv/dftv
- 兵团卫视: rtmp://58.200.131.2:1935/livetv/bttv
- 东南卫视: rtmp://58.200.131.2:1935/livetv/dntv
- RTSP类
-
一个动画: rtsp://184.72.239.149/vod/mp4://BigBuckBunny_175k.mov
二、从视频流中获取图像帧
linux命令:
tcp协议推流需要加上 -rtsp_transport tcp
- ffmpeg -i rtsp://184.72.239.149/vod/mp4://BigBuckBunny_175k.mov -r 1/20 -f image2 ./%03d_rtsp.jpg
- ffmpeg -i rtmp://live.hkstv.hk.lxdns.com/live/hks -c copy ./test1.flv 直接保存RTMP视频流到本地
- ffmpeg -i rtsp://184.72.239.149/vod/mp4://BigBuckBunny_175k.mov -vcodec copy -acodec copy ./rtsp1.flv 直接保存RTSP视频流到本地
命令解释:
- -i “rtmp.../rtsp...” :后接地址,地址最好用双引号括起来,如果是rtmp直播流,双引号里,后面要追加【 live=1】,注意有空格
- -y :如果提示文件已经存在,自动执行y,对已存在文件进行覆盖
- -t 0.001 :开始截图时间,seconds or in
hh:mm:ss[.xxx] 如果截图开始时间越接近篇尾,所花费的时间就会越长
- -vframes :截图帧数
- -s :图片宽高比,设置长宽像素比之后,像素可能会比较低
- -ss 1 :延迟1秒后开始,有一个需要引起注意的点,如果-ss 直接放在ffmpeg后,那么截图的处理时间会极大缩短,直接跳转到延时n秒后的视频帧,进行截取图像
- -f image2 :以图片格式保存
- -r 1 :帧数,此处为截取一帧, 如果是 -r 1/20 那么就是每
- b-%3d.jpg :格式化文件命名,会生成 b-001.jpg,b-002.jpg 等
三、ffmpeg使用技巧
1 音频转换
ffmpeg -i my_audio.wav my_audio.mp3
-i 后为要转换的音频文件,my_audio.mp3为目的音频文件
2 视频转换
ffmpeg -i my_video.mpeg -s 500×500 my_video.flv
-i 后为源视频文件, -s 表示设置目标视频文件的分辨率 my_video.flv为目的视频文件
3 从视频中截取图片
ffmpeg -i test.mpg image%d.jpg
默认1s截取25张图片,可以通过-r设置每秒截取的图片数量
-r fps 设置帧率,也就是每秒截取图片的数量(默认25)
ffmpeg -i test.mpg -r 1 image%d.jpg
这样子每1s截取1张图片
还可以设置截取间隔,起止
-ss 设定时间位置,语法:hh:mm:ss[.xxx]
-t 时长:限制转码/捕获视频的时间,语法:hh:mm:ss[.xxx]
ffmpeg -i test.mpg -r 25 -ss 00:00:10 -t 00:00:05 images%05d.png
在第10秒开始,以每秒截取25张图片的速度,截取5秒时长的图片
4 从视频中采集音频
ffmpeg -i video.avi -f mp3 audio.mp3
-f 强制选择格式
ffmpeg -i video.avi -vn audio.mp3
-vn 取消截取视频(也就是只输出音频文件)
5 创建截屏视频
ffmpeg -f x11grab -r 25 -s wxga -i :0.0 /tmp/outputFile.mpg
0.0 是你X11 server的屏幕显示号吗,和DISPLAY一样样的.
此条命令以每秒25帧的速率来截取wxga屏幕视频,当然这里可以用-s 来设置视频分辨率,输出文件是/tmp/outputFile.mpg
6 用图片制作视频
ffmpeg -f image2 -i img%d.jpg /tmp/a.mpg
将`img001.jpg’, `img002.jpg'这种顺序排列的图片文件转制作为视频
7 从webcam中截取视频
ffmpeg -f video4linux2 -s 320x240 -i /dev/video0 out.mpg
同时截取音频和视频:
ffmpeg -f oss -i /dev/dsp -f video4linux2 -s 320x240 -i /dev/video0 out.mpg
/dev/video0为视频设备 /dev/dsp为音频设备