美文网首页
学习笔记|(三)FFMPEG常用命令

学习笔记|(三)FFMPEG常用命令

作者: yanerly | 来源:发表于2018-11-16 16:19 被阅读28次
    常用命令.png

    参考资料:https://ffmpeg.org/ffmpeg-all.html#Synopsis

    一、基本信息查询命令:

    • ffmpeg -version显示版本信息

      版本信息.png
    • ffmpeg devices支持的设备

      ![可用的demuxers.png](https://img.haomeiwen.com/i1340588/586df158a79aa8d4.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    • ffmpeg -demuxers显示可用的demuxers(解封装)
      ![所有的编解码器.png](https://img.haomeiwen.com/i1340588/338010c5e0070aa2.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    • ffmpeg -muxers 显示可用的muxers(封装)
      可用的muxers.png
    • ffmpeg -codecs显示所有的编解码器
      所有的编解码器.png
    • ffmpeg -decoders显示可用的解码器
      所有的解码器.png
    • ffmpeg -encoders显示可用的编码器

      所有的编码器.png
    • ffmpeg -bsfs显示比特流filter

      显示所有的比特流filter.png
    • ffmpeg -formats显示可用的格式
      ![ 显示可用的协议.png
    • ffmpeg protocols显示可用的协议
      显示可用的协议.png
    • ffmpeg -filters显示可用的过滤器

      可用的过滤器.png
    • ffmpeg -pix_fmts显示可用的像素格式

      可用的像素格式.png
    • ffmpeg -sample_fmts显示可用的采样格式

      可用的采样格式.png
    • ffmpeg -layout显示可用的chanel名称(声道)

      可用的声道.png
    • ffmpeg -color显示可识别的颜色名称

      可用的颜色名称.png

    二、录制命令:

    • 录制桌面视频
      【MAC】 ffmpeg -f avfoundation -i 1 -r 30 out.yuv

    -f:使用什么库采集数据,ios中使用的是avfoundation
    -i:从哪采集数据(是一个文件索引)
    -r:帧率
    out.yuv:表示原始格式数据,采集到的是什么样,存储的就是什么样

    • 录制声音
      【MAC】ffmpeg -f avfoundation -i :0 out.wav

    -f : 使用什么库采集数据,ios中使用的是avfoundation
    -i : 采集谁的数据::xx 表示音频设备,xx : 表示视频设备

    查看windows上的采集库:

    下载ffempeg的源码http://ffmpeg.org/download.html,通过cygwin进入到源码的根目录下,执行命令./configure --list-indevs就可以看到所有支持的库了;

    下载ffempeg的源码.png 查看win上的采集库.png

    三、分解与复用命令

    1.分解与复用:文件格式的转换(Mp4-->mov/flv等)
    复用解复用流程.png
    【MAC】ffmpeg -i out.mp4 -vcodec copy -acodec copy out.flv

    -i : 输入文件(要对哪个文件做处理)
    -vcodec copy : 视频编码处理方式
    -acodec copy :音频编码处理方式
    out.flv : 输出格式

    2.处理原始数据:

    原始数据:就是ffmpeg解码后的数据,音频就是pcm数据,对于视频就是yuv数据,

    2.1. 从视频中提取yuv数据

    【MAC】ffmpeg -i input.mp4 -an -c:v rawvideo -pix_fmt yuv420p out.yuv

    -i:输入数据,要对哪个文件做处理
    -an:a指音频,n指no,即输出结果中不包括音频
    -c:v:指对视频进行编码,用rawvideo方式(原始视频)
    -pix_fmt : 既然是用原始数据编码,所以就要有像素格式,即yuv420p(yuv 4:2:0)
    out.yuv : 输出文件

    在播放yuv格式的视频的时候,要设置一个分辨率,否则会报错,Picture size 0x0 is invalid out.yuv,这里的分辨率可以在解码的过程中获取到
    【MAC】播放视频 : ffplay -s 638x358 out.yuv

    2.2.从音频中提取pcm数据

    【MAC】ffmpeg -i out.mp4 -vn -ar 44100 -ac2 -f s16le out.pcm

    -i :输入数据,也就是要对哪个文件做处理
    -vn : video no,即输出结果中不包括视频
    -ar : audio read,即音频的采样率,这里的44100表示44.1k
    -ac : audio chennel,即声道,这里的ac2表示双声道
    -f : format,即抽取出来的音频的存储格式是什么,s16le中s表示有符号的,有正有负,16表示每一个数值都是用16位表示,le : little end即小头,是一种存储方式;
    out.pcm :输出的文件名字

    【MAC】播放音频: ffplay -ar 44100 -ac 2 -f s16le out.pcm

    四、滤镜命令

    1.处理流程
    滤镜处理流程.png
    2.命令(有很多,比如加水印,去水印等)
    • 视频裁剪

    【MAC】ffmpeg -i in.mov -vf crop=in_w-200:in_h-200 -c:v libx264 -c:a copy out.mp4

    -i : 要处理的文件
    -vf : vedio filter视频滤镜,这里用的是crop滤镜,后面的in_w-200:in_h-200为滤镜参数,表示宽高为原始宽高-200
    -c:v :视频的编码器,这里为libx264
    -c:a : 音频编码器,copy表示不对音频做特殊处理
    out.mp4 : 输出文件

    五.裁剪合并编辑命令

    • 裁剪视频:
      【MAC】ffmpeg -i in.mp4 -ss 00:00:00 -t 10 out.ts

    -i : 要处理的文件,指定多媒体文件是什么
    -ss : 开始裁剪的时间(时分秒)
    -t : 要裁剪的时长(单位:s)
    out.ts : 输出文件

    【MAC】播放:ffplay out.ts`

    • 音视频合并
      【MAC】ffmpeg -f concat -i inputs.txt out.flv

    -f concat : 要对后面的文件进行拼接
    -i : 要拼接的文件,inputs.txt中是一个列表,是要合并的视频名字
    inputs.txt内容为:file filename格式
    out.flv :输出文件的名字,这里的flv只是事例

    【MAC】播放:ffplay out.flv

    六、图片/视频互转命令

    • 视频转图片:
      【MAC】ffmpeg -i in.flv -r 1 -f image2 image-%3d.jpeg

    -i : 要处理的文件
    -r : 要转换图片的帧率,1表示每秒转一张图片
    -f : 转换后的格式,image的第二版

    image-%3d.jpeg :输出文件,%3d表示是以image开头,后面是三个数字

    【MAC】查看第一张图片:open image-001.jpeg

    • 图片转视频:
      【MAC】ffmpeg -i image-%3d.jpeg out.mp4

    【MAC】播放:ffplay out.mp4,这时候会一下子放完,是因为

    Ffmpeg 会从多媒体文件中读取帧率,一般情况下多媒体文件都是有帧率的。但对于流是不知道其帧率的,所以对于流相关的要主动给他一个帧率

    七、直播

    参考的直播链接:https://blog.csdn.net/u014162133/article/details/81188410
    1,RTMP协议直播源
    香港卫视:rtmp://live.hkstv.hk.lxdns.com/live/hks
    2,RTSP协议直播源
    珠海过澳门大厅摄像头监控:rtsp://218.204.223.237:554/live/1/66251FC11353191F/e7ooqwcfbqjoo80j.sdp
    大熊兔(点播):rtsp://184.72.239.149/vod/mp4://BigBuckBunny_175k.mov
    3,HTTP协议直播源 香港卫视:http://live.hkstv.hk.lxdns.com/live/hks/playlist.m3u8
    CCTV1高清:http://ivi.bupt.edu.cn/hls/cctv1hd.m3u8
    CCTV3高清:http://ivi.bupt.edu.cn/hls/cctv3hd.m3u8
    CCTV5高清:http://ivi.bupt.edu.cn/hls/cctv5hd.m3u8
    CCTV5+高清:http://ivi.bupt.edu.cn/hls/cctv5phd.m3u8
    CCTV6高清:http://ivi.bupt.edu.cn/hls/cctv6hd.m3u8
    苹果提供的测试源(点播):http://devimages.apple.com.edgekey.net/streaming/examples/bipbop_4x3/gear2/prog_index.m3u8

    • 直播推流
      【MAC】ffmpeg -re -i out.mp4 -c copy -f flv rtmp://server/live/streamName

    -re : 表示减慢帧率速度
    -i :要推的流
    -c : 音视频编解码,具体的音频编码是-acodec,视频编码是-vcodec,copy表示音视频的参数不变
    -f : 推出的文件格式,这里是flv
    rtmp : 表示推送到这个地址上面去

    • 直播拉流
      【MAC】ffmpeg -i rtmp://server/live/streamName -c copy dump.flv

    -i : 表示从哪拉流
    -c : 拉到的流是否重新编码,copy 表示不重新编码
    dump.flv : 保存的文件

    相关文章

      网友评论

          本文标题:学习笔记|(三)FFMPEG常用命令

          本文链接:https://www.haomeiwen.com/subject/cvtjfqtx.html