• 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】

  • 相关阅读:
    CSS property
    CSS animation
    React 嵌套渲染对象,内部对象会是 undefined 报错的解决办法。
    flex 属性
    margin 折叠
    CSS经典布局——双飞翼布局
    CSS经典布局——圣杯布局
    CSS 正常流
    CSS selectors 选择器
    CSS function
  • 原文地址:https://www.cnblogs.com/wang-junxi/p/10105069.html
Copyright © 2020-2023  润新知