ffmpeg 工具及命令介绍

ffprobe工具介绍

  1. 查看帮助信息:ffprobe --help

    使用方式:ffprobe [OPTIONS] [INPUT_FILE]

  2. 查看多媒体数据包:

    ffprobe -show_packets output.mp4

    ffprobe -show_packets -show_data output.mp4

  3. 查看封装格式:ffprobe -show_format output.mp4

  4. 查看视频文件的帧信息:ffprobe -show_frames output.mp4

  5. 查看视频文件的流信息:ffprobe -show_streams output.mp4

  6. 格式化显示:

    ffprobe -of json -show_format output.mp4

    ffprobe -print_format csv -show_packets output.mp4 > outmp4.csv

    Windows下使用Elecard StreamEyes 查看MP4视频文件


ffplay工具介绍

  1. 查看帮助信息:ffplay --help

    使用方法:ffplay [options] input_file

  2. 播放本地流:ffplay -window_title "TestPlay" output.mp4

  3. 播放网络流:ffplay http://220.161.87.62:8800/hls/1/index.m3u8

  4. 使用示例:

    ffplay -x 1024 -y 768 -an output.mp4

    -x 1024 # 将播放宽度设置为 1024
    -y 768 # 将播放高度设置为 768
    -an # an = audio null 设置为静音播放
    

    ffplay -ss 10 -t 5 -fs -loop 2 output.mp4

    -ss  # 播放的开始时间
    -t # 播放的持续时长
    -fs # 全屏
    -loop # 指定循环次数
    

    ffplay -f rawvideo -video_size 320x240 320x240_video.yuv

    -f  # 指定视频格式  rawvideo 原始数据
    -video_size  # 设置视频的大小
    

    Windows 下使用 YUVPlayer-Deluxe 查看YUV 文件


分解/复用命令

  1. 处理流程

     _______              ______________            ________
    |       |            |              |          |        |
    | input |  demuxer   | encoded data |  muxer   | output |
    | file  | ---------> | packets      | -------> | file   |
    |_______|            |______________|          |________|
    
    
  2. 处理命令

    • mp4 转 avi:

      ffmpeg -i input.mp4 -vcodec copy -acodec copy out.avi

      -i # 输入文件
      -vcodec  # 设置视频编码器,也用作 -codec:v ('copy' 拷贝原视频编码方式)
      -acodec  # 设置音频编码器,也用作 -codec:a ('copy' 拷贝原音频编码方式)
      
    • 提取音频:

      ffmpeg -i input.mp4 -vn -c:a copy out.aac

      -c:a  # 设置音频编码器,与-acodec一致
      -vn # video null 禁用视频
      
    • 提取视频:

      ffmpeg -i input.mp4 -an -c:v copy out.h264

      -c:v  # 设置视频编码器,与-acodec一致
      -an # audio null 禁用音频
      
    • 封装音视频:

      ffmpeg -i out.aac -i out.h264 -acodec copy -vcodec copy -f mp4 new.mp4

      ffmpeg -i out.aac -i out.h264 -c copy -f mp4 new.mp4

      -i # 输入文件
      -acodec  # 设置音频编码器,也用作 -codec:a ('copy' 拷贝原音频编码方式)
      -vcodec  # 设置视频编码器,也用作 -codec:v ('copy' 拷贝原视频编码方式)
      -f # 指定合成格式
      
  3. 编码 / 解码命令

    • 提取 YUV 数据:

      ffmpeg -i input.flv -an -c:v rawvideo -pix_fmt yuv420p out.yuv

      -pix_fmt  # 设置像素格式 
      -c:v  # 设置视频编码器,与-acodec一致  rawvideo 原始数据
      

      播放 out.yuv:

      ffplay -video_size 1280x720 out.yuv

      -video_size  # 指定视频的大小
      
    • 提取PCM数据:

      ffmpeg -i input.mp4 -vn -ar 44100 -ac 2 -f s16le out.pcm

      -i # 输入文件
      -vn # video null 禁用视频
      -ar # 设置音频采样率
      -ac # 设置音频通道数目
      -f # 指定pcm文件数据格式 s16le 有符号16位的小端数据
      

      播放PCM数据:

      ffplay -ar 44100 -ac 2 -f s16le out.pcm

      -ar # 设置音频采样率
      -ac # 设置音频通道数目
      -f # 指定pcm文件数据格式 s16le 有符号16位的小端数据
      
    • 使用 h264 编码压缩 YUV 数据:

      ffmpeg -video_size 1280x720 -i out.yuv -vcodec h264 out.h264

      -video_size # 指定视频的大小
      -i # 输入文件
      -vcodec  # 设置视频编码器,也用作 -codec:v ('copy' 拷贝原视频编码方式)
      
    • 使用 fdk_aac 编码压缩 PCM 数据:

      ffmpeg -ar 44100 -ac 2 -f s16le -i out.pcm -acodec libfdk_aac out.aac

      -ar # 设置音频采样率
      -ac # 设置音频通道数目
      -f # 指定pcm文件数据格式 s16le 小端格式
      -i # 输入文件
      -acodec  # 设置音频编码器,也用作 -codec:a ('copy' 拷贝原音频编码方式)
      
  4. 裁剪 / 合并命令

    • 裁剪:

      ffmpeg -ss 00:00:00 -t 10 -i input.mp4 -vcodec copy -acodec copy 1.ts

      -ss position # 跳转到输入文件的position位置,可以是秒数或者hh:mm:ss形式
      -t duraion # 读取到文件的duration位置,可以是秒数或者hh:mm:ss形式
      -acodec  # 设置音频编码器,也用作 -codec:a ('copy' 拷贝原音频编码方式)
      -vcodec  # 设置视频编码器,也用作 -codec:v ('copy' 拷贝原视频编码方式)
      

      ffmpeg -ss 00:00:10 -t 8 -i input.mp4 -vcodec h264 -acodec libfdk_aac 2.ts

      -ss position # 跳转到输入文件的position位置,可以是秒数或者hh:mm:ss形式
      -t duraion # 读取到文件的duration位置,可以是秒数或者hh:mm:ss形式
      -acodec  # 设置音频编码器,也用作 -codec:a (以'h264'编码方式)
      -vcodec  # 设置视频编码器,也用作 -codec:v (以'libfdk_aac'编码方式)
      
    • 合并input.txt的视频文件列表

      ffmpeg -f concat -i input.txt -vcodec copy -acodec copy new.ts

      # input.txt格式:
      file '1.ts'
      file '2.ts'
      
      -f # 指定合并命令
      -i # 输入文件
      -acodec  # 设置音频编码器,也用作 -codec:a ('copy' 拷贝原音频编码方式)
      -vcodec  # 设置视频编码器,也用作 -codec:v ('copy' 拷贝原视频编码方式)
      
posted @ 2024-02-23 15:24  LI小白  阅读(33)  评论(0编辑  收藏  举报