ffmpeg学习。程序员

FFmpeg常用命令总结

2019-03-13  本文已影响0人  宫山眉

ffmpeg命令分为8大类

  1. 查询命令
    ffmpeg -devices
    查看当前电脑的录制设备架构

    ffmpeg -f avfoundation -list_devices true -i ""
    查看当前电脑的录制设备列表

    ffmpeg f
    查看当前ffmpeg的各类详细信息

    ffmpeg -help
    查看ffmpeg的帮助文档

  2. 录制命令
    ffmpeg -f avfoundation -i 1 -r 30 out.yuv
    使用1图像设备(0:摄像头;1:录屏)录制文件名为out.yuv的30fps的视频

    ffmpeg -f avfoundation -i :0 out.aac
    使用0音频设备(0:电脑自带的麦克风)录制名为out.aac的音频

  3. 解复用命令
    ffmpeg -i demo.mp4 -vcodec copy -acodec copy demo.flv
    将demo.mp4文件的音频和视频原封不动的拷贝成demo.flv文件,不改变其分辨率,格式,滤镜等

    ffmpeg -i demo.mp4 -vcodec copy -an demo.h264
    将demo.mp4文件的视频原封不动的拷贝成demo.flv文件,但是不含音频

    ffmpeg -i demo.mp4 -vn -acodec copy demo.aac
    将demo.mp4文件中的音频原封不动的拷贝成demo.aac文件,但是不含视频

  4. 处理原始数据命令
    ffmpeg -i demo.mp4 -an -c:v rawvideo -pix_fmt yuv420p demo.yuv
    将demo.mp4文件转成demo.yuv这样的原始视频数据文件,其中不包含音频。并且编码为rawvideo原始视频文件像素格式是yuv420p。yuv常用像素格式444p,422p,420p

    ffmpeg -i demo.mp4 -vn -ar 44100 -ac 2 -f s16le demo.pcm
    将demo.mp4文件中的音频抽取出来转成demo.pcm这样的音频原始文件,其中不包含视频。其中音频采样率(audio rate)为44100,音频声道为2声道(audio channel)音频编码格式是s16le(s代表有符号的,即正负;16代表16进制;le代表小的little end)

  5. 音视频裁剪命令
    ffmpeg -i demo.mp4 -ss 00:02:00 -t 20 demo.ts
    将demo,mp4从2分钟进行裁剪,裁剪成10秒的一个视频
    -ss代表从什么时间点开始裁剪
    -t代表裁剪的时长
    .ts格式是一种日本高清摄像机录制之后封装的视频格式

  6. 视频图片互转命令
    ffmpeg -i demo.mp4 -r 1 -f image2 image_%3d.jpeg
    将demo.mp4视频按照1秒钟1张图片的方式截成image2格式的图片,如果视频有22秒,那么最终就是22张
    -r代表按照多少秒的间隔截取图片
    image2是一种图片格式
    image_%3d代表一种动态的命名规范,比如:image_001.jpeg

    ffmpeg -i image_%3d.jpeg demoImage.mp4
    将符合image_%3.jpeg文件格式的所有文件转成mp4文件

  7. 直播流命令
    推流命令
    ffmpeg -re -i demo.mp4 -c copy -f flv rtmp://server/live/streamName
    将demo.mp4文件推送到直播流地址中
    -re代表减慢推流速度,让当前录制的视频和推流视频保持一致
    -c代表音视频同时编码,如果只对视频编码-vcodec,音频就是-acodec
    -f代表格式

    拉流命令
    ffmpeg rtmp://server/live/steamName -c copy demo.flv
    将rtmp地址上的视频拉到本地,同时对音视频编码保存到本地

  8. 滤镜命令
    滤镜原理:
    1. 拿到解码后的原始视频数据帧
    2. 对原始视频数据帧进行加滤镜
    3. 再进行编码得到滤镜后的编码数据包
    ffmpeg -i demo.mp4 -vf crop=demo_w-200:demo_h-200 -c:v libx264 -c:a copy demo.mp4
    将demo.mp4进行宽高各裁剪200像素的滤镜操作
    -vf是对视频进行操作,crop是裁剪的意思后面跟着参数
    -c:v 是对视频进行编码,后面跟着视频编码器,这里用的是lib264x
    -c:a 是对音频进行编码,后面跟着音频编码器,这里用copy就是不变动音频

  9. 其他命令
    ffplay demo.mp4
    播放demo.mp4文件

    ffplay -s 1280x800 -pix_fmt uyvy422 demo.yuv
    播放分辨率是1280x800的像素格式是uyvy422的demo.yuv视频原始文件

附录:
-i:后面接文件名,“i”是“index”索引的简称,用于找到文件
-s:后面接一个分辨率或者大小,“s”是“size”大小的简称,用于指定原始视频文件(如:yuv格式)的分辨率,如果不指定的话,视频无法正常播放
-c:后面接编码命令,-c代表对音视频同时编码,如果单独对音频或者视频编码使用-acodec或者-vcodec
-pix_fmt:后面接一个视频格式,如:yuv420p,uyvy422等。“pix”是“pixel”像素的简称,“fmt”是“fomat”格式的简称。同样,如果不指定的话,原始视频文件无法正常播放
-f:后面接一个格式,比如:flv,MP4等
-vn:不对视频编辑或者屏蔽视频的命令,“v”代表“video”视频,“n”代表“no”
-an:不对音频编辑或者屏蔽音频的命令,“a”代表“audio”音频,“n”代表“no”
-vcodec:对视频进行编码
-avodec:对音频进行编码
copy:拷贝命令,一般用于更改视频或者音频格式
-ac:代表音频声道,“a”代表“audio”,“c”代表“channel”
-ar:代表音频采样率,“a”代表“audio”,“r”代表“rate”

上一篇下一篇

猜你喜欢

热点阅读