美文网首页
ffmpeg 常用命令格式

ffmpeg 常用命令格式

作者: O无为学长O | 来源:发表于2023-10-17 02:26 被阅读0次

    ffmpeg 是一个非常强大的音视频转换工具,目前还在摸索学习阶段,本文记录一下目前用过的几条命令。

    ffmpeg 音视频格式转换


    基础命令

    # 获取帮助
    ffmpeg -help
    
    # 支持的格式
    ffmpeg -formats
    
    # 支持的解码
    ffmpeg -decoders
    
    # 支持的编码
    ffmpeg -encoders
    
    # 支持的协议
    ffmpeg -protocols
    
    # 隐藏开头的广告信息
    ffmpeg -hide_banner
    
    # 精简格式输出
    ffmpeg -loglevel quiet
    

    自动将 VOB 格式视频转换为 mp4 格式,并将音量调高两倍

    ffmpeg -i 1.vob -af "volume=2" 1.mp4;
    

    使用 libx265 编码格式将 avi 视频转换为 mp4 视频

    ffmpeg -i 1.avi -c:v libx265 -preset medium -crf 22 -c:a copy 1.mp4;
    
    • -c:v libx265 使用 libx265 编码
    • -preset medium 预设画质为 medium
    • -crf 22 设置画质等级
    • -c:a copy 直接拷贝音频

    以下20条命令收集自网络,点此查看原文

    提取视频中的音频

    # 该命令从输入视频中提取音频并将其保存为 AAC 格式。
    ffmpeg -i input.mp4 -vn -acodec copy output.aac
    

    转换视频为 GIF

    ffmpeg -i input.mp4 -vf "scale=320:-1:flags=lanczos,palettegen" -y palette.pngffmpeg -i input.mp4 -i palette.png -filter_complex "scale=320:-1:flags=lanczos[x];[x][1:v]paletteuse" -y output.gif
    

    提取视频帧

    # 该命令从输入视频中提取每秒钟的一帧,并将这些帧保存为 PNG 格式的图像文件。
    ffmpeg -i input.mp4 -r 1 -f image2 output-%03d.png
    

    提取某一帧

    # 该命令从输入视频中提取第30秒的一帧,并将这些帧保存为 PNG 格式的图像文件。
    ffmpeg -i input.mp4 -ss 00:00:30 -frames:v 1 output-30.png
    

    调整视频大小

    # 该命令将输入视频的分辨率调整为 640x360 并将输出保存为 MP4 格式。
    ffmpeg -i input.mp4 -vf scale=640:360 output.mp4
    

    添加水印

    # 该命令在输入视频的左上角添加一个水印,并将输出保存为 MP4 格式。
    ffmpeg -i input.mp4 -i watermark.png -filter_complex "overlay=10:10" output.mp4
    

    调整音频音量

    # 该命令将输入音频的音量调整为原来的 2 倍,并将输出保存为 MP3 格式。
    ffmpeg -i input.mp3 -af "volume=2" output.mp3
    

    压缩视频

    # 该命令将输入视频压缩为分辨率为 640x? 的视频,并使用 H.264 编码器进行编码。压缩质量由 CRF 参数控制,值越小压缩质量越高。Preset 参数控制编码速度,值越小编码速度越快,但压缩质量可能会降低。
    ffmpeg -i input.mp4 -vf "scale=640:-1" -c:v libx264 -crf 23 -preset veryfast -c:a copy output.mp4
    

    添加字幕

    # 该命令将输入视频与字幕文件结合,将字幕文件编码为 mov_text 格式,将输出保存为 MP4 格式。
    ffmpeg -i input.mp4 -i subtitle.srt -c:v copy -c:a copy -c:s mov_text -metadata:s:s:0 language=eng output.mp4
    

    旋转视频

    # 该命令将输入视频逆时针旋转 90 度,并将输出保存为 MP4 格式。
    ffmpeg -i input.mp4 -vf "transpose=1" -c:a copy output.mp4
    

    修改视频的帧率

    # 该命令将输入视频的帧率修改为 30 帧每秒,然后使用 H.264 编码器进行编码。
    ffmpeg -i input.mp4 -r 30 -c:v libx264 -crf 23 -preset veryfast -c:a copy output.mp4
    

    裁剪视频

    # 该命令从输入视频的第 10 秒开始裁剪,裁剪时长为 20 秒,然后将裁剪后的视频保存为 MP4 格式。
    ffmpeg -i input.mp4 -ss 00:00:10 -t 00:00:20 -c copy output.mp4
    

    合并多个视频文件

    # 该命令将多个 MP4 格式的视频文件合并为一个文件,并将其保存为 MP4 格式。
    ffmpeg -f concat -safe 0 -i list.txt -c copy -y output.mp4
    
    #-f concat是指合并
    #-safe 为了避免权限报错
    #-c copy 一定要指定,不然会重新封装,数据文件就会变大。
    
    # list.txt 的文件内容格式:
    file '1.mp4'
    file '2.mp4'
    file '3.mp4'
    

    分离视频的音频和视频流

    # 该命令将输入视频的音频流和视频流分别保存为 MP3 和 MP4 格式的文件。
    ffmpeg -i input.mp4 -vn audio.mp3ffmpeg -i input.mp4 -an -vcodec copy video.mp4
    

    合并音频和视频

    ffmpeg -i video.mp4 -i audio.mp3 -c:v copy -c:a aac -strict experimental output.mp4
    # 如果视频中已经包含了音频,这个时候还可以替换视频中的音频,使用下面命令行。
    ffmpeg -i video.mp4 -i audio.mp3 -c:v copy -c:a aac -strict experimental-map 0:v:0 -map 1:a:0 output.mp4
    

    拼接音频文件

    # 该命令将两个 MP3 格式的音频文件拼接为一个文件,并将其保存为 MP3 格式。
    ffmpeg -i "concat:input1.mp3|input2.mp3" -acodec copy output.mp3
    

    裁剪音频

    # 该命令从输入音频的第 30 秒开始裁剪,裁剪时长为 2 分钟,然后将裁剪后的音频保存为 MP3 格式。
    ffmpeg -i input.mp3 -ss 00:00:30 -t 00:02:00 -acodec copy output.mp3
    

    ffmplay 音视频文件播放


    播放 1.mp4 文件

    ffmplay 1.mp4
    

    播放控制快捷键:

    • 退出播放:q键、ESC键
    • 全屏切换:f键(进入或退出全屏)
    • 暂停:p键、空格键
    • 静音切换:m键
    • 改变音量:9键减少音量、0键增加音量
    • 循环切换音频流:a键
    • 循环切换视频流:v键
    • 循环切换字幕流:t键
    • 循环切换节目:c键
    • 循环切换过滤器或显示模式:w键
    • 逐帧播放:s键
    • 快进后退10秒:left键(←)后退10秒,right键(→)前进10秒;
    • 快进后退60秒:down键(↓)后退60秒,up键(↑)前进60秒;

    命令参数

    参数 含义
    -x width-y height 强制显示宽高,用于调整窗口大小
    -video_size size 设置帧尺寸,仅适用于没有包含帧大小的视频
    -pixel_format format 设置像素格式
    -fs 以全屏模式启动
    -an 禁用音频
    -vn 禁用视频
    -sn 禁用字幕
    -ss pos 设置开始播放的位置
    pos 可以是数字,比如 -ss 100 表示从100秒的位置开始播放
    pos 也可以是hour:min:second 的格式,比如 -ss 00:01:50 表示从1分50秒的位置开始播放
    -t duration 设置播放视频的长度,即持续时间
    duration 的格式与上面的 pos 相同
    -bytes 设置按字节进行定位拖动
    -seek_interval interval 自定义左右键拖动间隔,以秒为基本单位,默认为10秒
    -nodisp 关闭图形化显示窗口,不显示视频
    -noborder 设置无边框窗口
    -volume vol 设置起始音量
    -f fmt 强制使用设置的格式进行解析
    -window_title title 设置窗口标题,默认为输入文件名
    -loop number 设置播放循环次数
    -showmode mode 设置显示模式,默认为0 显示视频
    0 显示视频 1 显示音频波形 2显示音频频谱
    -vf filtergraph 设置视频滤镜
    -af filtergraph 设置音频滤镜
    高级命令参数
    -stats 统计信息包括现实流持续时间、编解码参数、流的当前位置等
    -sync type 设置同步类型
    type 分为audiovideoexternal等类型
    -ast index 播放流索引为index的音频流
    -vst index 播放流索引为index的视频流
    -sst index 播放流索引为index的字幕流
    -autoexit 设置视频播放完毕自动退出
    -codec:media_specifier codec_name 强制使用设置的多媒体解码器
    -codec:v h264_qsv表示强制视频采用h264_qsv进行解码
    -acodec codec_name 强制使用设置的音频解码器进行音频解码
    -vcodec codec_name 强制使用设置的视频解码器进行视频解码
    -scodec codec_name 强制使用设置的字幕解码器进行字幕解码
    -infbuf 不限制输入缓冲区大小
    尽可能快地从输入中读取尽可能多的数据,禁用时需采用 -noinfbuf

    ffprobe 音视频信息查看


    查看 1.mp4 文件信息

    ffprobe -i 1.mp4
    

    相关文章

      网友评论

          本文标题:ffmpeg 常用命令格式

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