分享

ffmpeg 常用命令示例及解释

 tology 2020-02-07

参考博文
https:///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 制定像素格式

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多