美文网首页视音频技术
ffmpeg 常用命令示例及解释

ffmpeg 常用命令示例及解释

作者: 余梦玲 | 来源:发表于2018-08-02 09:31 被阅读0次

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

    相关文章

      网友评论

        本文标题:ffmpeg 常用命令示例及解释

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