FFmpeg: 是一个免费的开源程序库,一个多媒体音视频处理分析工具软件,提供命令行方式调用,专门用来编辑处理各种音视频或图像

一、安装

  1. 官网地址:https://ffmpeg.org/
  2. 下载地址:https://ffmpeg.org/download.html
  3. windows包:https://www.gyan.dev/ffmpeg/builds/

    • Git Master Builds 是使用最新的 FFmpeg 源代码构建的版本,存在风险
    • Release Builds 是经过官方稳定发布的版本,经过了全面测试和验证,具有较高的稳定性
    • 下载
  1. 下载完成后将文件解压到存放软件的磁盘位置,进入bin文件夹下,复制文件路径,配置系统环境变量

    • 解压
    • 右键点击“我的电脑”,点“属性”,点“高级系统设置“,然后点”环境变量“

      配置环境

    • 按照顺序,配置变量

      配置环境

  1. 最后在命令行窗口执行ffmpeg version,能看到版本信息就说明配置成功了

    验证

二、一些基础命令

  1. 基础命令

    -version:显示查看版本(包括子模块的详细版本信息)。
    
    -buildconf:显示构建配置,每行一个选项。
    
    -formats:显示可用格式(包括设备)。
    
    -filters:显示可用过滤器。
    
    -codecs:显示支持的所有编解码器(包括视频、音频和字母编解码器)。
    
    -protocols:显示可用的协议
  1. 简单操作

    // 输入文件mp4封装格式转换为flv格式
    ffmpeg -i C:\input.mp4 -c copy C:\output.flv
    
    ffmpeg -i C:\in.mp4 -vn -f mp3 C:\out.mp3 :提取纯mp3音频。
    
    ffmpeg -i C:\in.mp4 -an -c:v copy C:\out.mp4 :输出静音视频。
    
    ffmpeg -i C:\in.mkv -vn -an -c:s copy C:\out.srt :提取纯srt字幕
    
    ffmpeg -i C:\in.mkv -map 0:s:0 -c:s copy C:\out.ass :从mkv格式的输入文件中提取第一个字幕流,并将其复制到输出文件中,输出文件的格式为 ASS 格式。
    
    ffmpeg -i C:\in1.mp4 -i C:\in2.mp3 -map 0:v -map 1:a -c:v copy -f mp4 C:\out.mp4 :将in1文件的mp4视频流和in2文件的mp3音频流合并,并保存到mp4格式的输出文件out中。
    
    ffmpeg -i C:\in1.mkv -i C:\in2.mkv -map 0:s:0 -map 1 -c copy -c:s copy C:\out.mkv :将in1文件的字幕流,与in2文件的所有视频流、音频流和字幕流合并,并保存到mkv格式的输出文件out中
    
    ffprobe -v error -show_frames C:\in.mp4:分析视频文件,显示视频中每一帧的详细信息。“-v error”设置错误输出级别为 error;“show_frames”显示视频中每一帧的信息。如下是音频帧类型,然后 key_frame=1 表示这是 IDR frame ,如果key_frame=0表示这是 Non-IDR frame
    
    ffmpeg -ss 00:1:05 -i C:\in.mp4 -vframes 1 C:\out.jpg:从输入的mp4视频文件的1分5秒开始截取一帧图像,“-vframes 1”表示在视频流截取一帧,最后输出jpg格式图片
    
    ffmpeg -ss 13 -to 15 -i C:\in.mp4 C:\out%03d.png:表示导出从视频的第13秒到第15秒,这两秒内所有帧图片。“%03d”的意思是让电脑自己以3位数字从小到大依次命名输出的文件,如001.png、002.png…
    
    // 录屏 无声音
    ffmpeg -f gdigrab -i desktop -pix_fmt yuv420p C:\out.mp4 :这个命令使用 FFmpeg 工具来捕获 Windows 桌面并将其保存为一个 mp4 格式的视频文件。“-f gdigrab”表示使用 GDI (Graphics Device Interface) 来捕获屏幕;“-i desktop”指定要捕获的对象为desktop即桌面内容;“-pix_fmt yuv420p”指定输出视频的像素格式为 YUV 4:2:0 planar
  1. 推拉流

    // 推流
    ffmpeg -re -i E:/desktop/input.mp4 -c:v libx264 -preset veryfast -maxrate 1000k -bufsize 2000k -pix_fmt yuv420p -g 50 -c:a aac -b:a 160k -ar 44100 -ac 2 -f flv rtmp://server/live/stream  // 桌面视频推到服务器
    
    ffmpeg -f gdigrab -i desktop -c:v libx264 -preset veryfast -maxrate 1000k -bufsize 2000k -vf "format=yuv420p" -g 50 -f flv rtmp://rtmp服务器/hls/推流key  // 将桌面屏幕推流到服务器
    
    // 参数说明
    -re:以原始视频的速度读取数据。
    -i input.mp4:输入文件。
    -c:v libx264:视频编码器使用H.264。
    -preset veryfast:编码器预设,控制编码速度和质量。
    -maxrate 1000k:视频流的最大码率。
    -bufsize 2000k:码率控制缓冲区大小。
    -pix_fmt yuv420p:像素格式。
    -g 50:I帧间隔(关闭为1)。
    -c:a aac:音频编码器使用AAC。
    -b:a 160k:音频码率。
    -ar 44100:采样率。
    -ac 2:声道数。
    -f flv:输出格式。
    rtmp://server/live/stream:RTMP服务器地址和流名称。
    
    // 拉流
    ffmpeg -i rtmp://server/live/stream -c copy E:/desktop/output.flv  // 输出为本地文件
    ffmpeg -i rtmp://server/live/stream -f sdl -  // 实时播放
    ffmpeg -i rtmp://server/live/stream -f null - // 丢弃输出,仅用于分析和调试
最后修改:2024 年 06 月 01 日
如果觉得我的文章对你有用,请随意赞赏