ffmpeg 常用命令示例及解释

参考博文
https://c7sky.com/common-ffmpeg-commands.html
https://www.cnblogs.com/frost-yen/p/5848781.html
https://blog.csdn.net/doublefi123/article/details/24325159

FFMPEG 命令格式

ffmpeg [global_options] {[input_file_options] -i input_url} ... {[output_file_options] output_url} ...

1. 摄像头采集视频

ffmpeg -f video4linux2 -i /dev/video0 out.avi

video4linux2 是linux系统下的视频采集接口
/dev/video0 表示摄像头设备
默认使用MPEG4进行视频编码

2. 声卡采集音频

ffmpeg -f alsa -ar 22050 -ac 1 -i hw:0 out.wav

-ar 16000 表示音频采样率为22050Hz
-ac 1 表示默认单通道
hw:0 是默认的声卡

3. 同时采集视频和音频,并制定编码格式,封装成flv, 推送至Nginx服务器

ffmpeg -f alsa -thread_queue_size 131072 -ar 22050 -ac 1 -i hw:0 -f video4linux2 -r 29.97 -s 640x360 -i /dev/video0 -vcodec libx264 -b:v 1000k -acodec aac -strict -2 -f flv rtmp://127.0.0.1:1935/myapp

4. 视频格式转换

ffmpeg -i out.avi out.mp4

5. 指定规格参数

ffmpeg -i out.avi -c:v libx264 -preset slow -crf 18 -c:a aac -b:a 128k -pix_fmt yuv420p out_para.mp4

-c:v 等价于 -vcodec 指明视频编码格式
-preset slow 慢速模式 耗时间 清晰度高
-crf 控制视频输出质量,取值范围为0-51,0为无损,从主观上讲,18-28是一个合理的范围
-c:a 等价于 -acodec 指明音频编码格式
-pix_fmt 指定像素的格式,yuv420p,yuv422

6. 视频剪切

ffmpeg -ss 0:0 -t 0:10 -i input.mov output.mp4

从0:0开始,裁剪10秒钟的视频

7. 裁剪视频尺寸

ffmpeg -i input.mov -vf scale=iw/2:-1,crop=ih output.mp4

将原视频缩小一半,并裁剪画面正中的正方形区域
scale=width:height iw/ih 表示输入宽度/高度 -1 表示按输入尺寸等比自动计算
crop=width:height:x:y x:y 指定裁剪的左上角位置,默认值为 (in_w-out_w)/2 和 (in_h-out_h)/2,即输出视频为原视频的中央区域
-vf 是video filter, 对视频进行翻转,旋转,缩放,裁剪等

8. 加速/减速视频

ffmpeg -i input.mp4 -filter_complex "[0:v]setpts=0.5*PTS[v];[0:a]atempo=2[a]" -map "[v]" -map "[a]" output.mp4

setpts=0.5*PTS 中的 0.5 是视频速度放慢一半
atempo=2 中的 2 是相对应的音频速度(=1/视频速度)

9. 提取视频/提取音频

ffmpeg -i input.mov -vcodec copy -an output.mp4

-vcodec copy 复制视频编码
-an 禁止音频输出

ffmpeg -i input.mov -vn -acodec copy output.mp3

-vn 禁止视频输出

10. 视频截图

每秒输出一张图:

ffmpeg -i input.mov -vf fps=1 -q:v 2 output%03d.png

-q:v 2 表示视频质量

输出第 10 秒的截图

ffmpeg -i input.mov -ss 00:00:10 -vframes 1 output.jpg

每秒截图,大小为原视频的一半,输出一张 10x3 的网格图:

ffmpeg -y -i input.mp4 -vf "fps=1,scale=iw/2:-1,tile=10x3" -an output.jpg

11. 输出YUV420原始数据

ffmpeg -i input.mp4 output.yuv

要得到某一帧的YUV数据,可以先抽取JPEG图片

ffmpeg -i input.mp4 -ss 00:00:20 -t 10 -r 1 -q:v 2 -f image2 pic-%03d.jpeg

再将JPEG图片转为YUV

ffmpeg -i pic-001.jpeg -s 1440x1440 -pix_fmt yuv420p xxx3.yuv 

-s w*h 表示视频的大小
-pix_fmt 制定像素格式

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 教程一:视频截图(Tutorial 01: Making Screencaps) 首先我们需要了解视频文件的一些基...
    90后的思维阅读 4,864评论 0 3
  • 前言 如此强大的FFmpeg,能够实现视频采集、视频格式转化、视频截图、视频添加水印、视频切片、视频录制、视频推流...
    骚之哈塞給阅读 25,858评论 6 39
  • 写在前面: 今天往移动硬盘上拷电影的时候忽然遇见文件过大无法拷贝的问题。因为一个移动硬盘如果分区为NTFS格式,那...
    vincentgemini阅读 14,505评论 0 9
  • 我从来没有和人提起过你 这是第一次, 也是最后一次。 就叫你白吧。 最近怎么样? 这真是一个闷热的六月, 好在还有...
    酥酥的风阅读 447评论 0 2
  • 恍惚间,要不是看见又一届毕业生晒出了自己的毕业照,丝毫察觉不到,原来,我们已经毕业一年了。人们总说毕业遥遥无期,毕...
    恐独食症患者阅读 166评论 0 0