RTMP / RTSP 在线示例视频流记录与直接从视频流中抽取视频帧以及ffmpeg技巧

引入:在涉及视频流生成与保存工作,除了自己手动循环播放视频生成视频流之外,还可以借助现在有的一些公开视频流。


一、在线示例视频流记录

ffmpeg

  • RTMP类
  1. 广西卫视: rtmp://58.200.131.2:1935/livetv/gxtv
  2. 湖南卫视: rtmp://58.200.131.2:1935/livetv/hunantv
  3. 广东卫视: rtmp://58.200.131.2:1935/livetv/gdtv
  4. 东方卫视: rtmp://58.200.131.2:1935/livetv/dftv
  5. 兵团卫视: rtmp://58.200.131.2:1935/livetv/bttv
  6. 东南卫视: rtmp://58.200.131.2:1935/livetv/dntv
  • RTSP类
  1. 一个动画: 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为音频设备

【后半部分转载自:https://blog.csdn.net/yourijing/article/details/50786758】

原文地址:https://www.cnblogs.com/wang-junxi/p/10105069.html