基本的ffmpeg命令行使用

546 阅读2分钟

FFmpeg被称为音视频界的瑞士军刀,基本上每一个从事音视频开发的工程师都需要深入了解的项目。本文试图总结一些日常用到的的ffmpeg命令行(实时添加),以供参考。当我们使用FFmpeg时,它实际上是由4个独立的可执行程序组成的ffprobe, ffplay, ffmpeg以及ffserver,其中ffserver只在直播拉流才会用到,一般接触不到。

ffprobe命令行

ffprobe可以用来探查文件格式,码流信息等。

  • 查询视频格式,通过这个命令可以查询视频的一些基本信息,时长,码率等
ffprobe -show_format xxx.mp4
  • 查询码流信息,查询视频中每一路码流的信息
ffprobe -print_format json -show_streams xxx.mp4
  • 查询package和frame信息
ffprobe -show_packets
ffprobe -show_frames -select_streams v:0

ffplay命令行

ffplay是一个强大的播放器,几乎支持所有的视频格式,也提供强大的视频播放能力。

  • 基本播放功能, 循环播放,选择音频/视频流,同步方式
ffplay xxx.mp4 -loop 10
ffplay xxx.mp4 -ast 1
ffplay xxx.mp4 -vst 1
ffplay xxx.mp4 -sync audio
ffplay xxx.mp4 -sync video
ffplay xxx.mp4 -sync ext
  • 播放裸数据
ffplay xxx.pcm -f s16le -channels 2 -ar 44100
ffplay -s 3840x2160 -pixel_format yuv420p xxx.yuv

ffmpeg命令行

ffmpeg命令才是FFmpeg的核心,他是处理音视频的利器。无论是对视频做格式转换,裁剪,缩放,抽帧,拼接,滤镜,都不在话下。

  • 格式转换
ffmpeg -i xxx.mp4 xxx.mkv
  • 提取
ffmpeg -i xxx.mp4 -pix_fmt yuv420p10le -s 320x180 -r 60 -t 10 output.yuv
ffmpeg -i xxx.mp4 -ss 00:00:40 -c copy -t 20 output.mp4 
ffmpeg -i xxx.mp4 -vn -acodec copy output.mp4
ffmpeg -i xxx.mp4 -an -vcodec copy -bsf:v h264_mp4toannexb output.h264
  • 缩放
ffmpeg -i xxx.mp4 -vf scale=960:540 -c copy output.mp4
ffmpeg -i xxx.mp4 -vf crop=w=1920:h=800:x=0:y=10 -crf 10 -vcodec libx265 output.mp4
  • 抽帧
ffmpeg -i xxx.mp4 -f image2 -ss 66.40 -vframes 1 output.png
  • 拼接
ffmpeg -stream_loop -1 -i xxx.png -crf 13 output.mp4
ffmpeg -i xxx.mp4 -vf "split [main][tmp];[tmp] crop=iw/2:ih:0:0 [right];[main][right] overlay=W/2:0" output.mp4
  • 滤镜
ffmpeg -i xxx.mp4 -vf 

参考

www.ffmpeg.org/