ffmpeg 常用命令

合并文件

1
ffmpeg -i "concat:file_name1.ts | file_name2.ts" -c copy_out.ts

在视频文件中提取图片

1
ffmpeg -i output.ts '%d.png'

H264 转 yuv

1
ffmpeg -i SampleEis2Venc.H264 -pix_fmt nv12 -vcodec rawvideo -an SampleRaw.yuv

单张图片生成 H264 视频

1
ffmpeg -ss 0 -t 16 -f lavfi -i color=c=0x000000:s=1920x1080:r=25  -i test.jpg -filter_complex  "[1:v]scale=1920:1080[v1];[0:v][v1]overlay=0:0[outv]" -map [outv] -c:v libx264 SampleRaw.H264 -y

横向拼接两个视频

1
2
3
ffmpeg -i out1.mp4 -i out2.mp4 -filter_complex "[0:v]pad=iw*2:ih*1[a];[a][1:v]overlay=w" out.mp4

# pad 是将合成的视频宽高,这里 iw 代表第一个视频的宽,iw*2 代表合成后的视频宽度加倍,ih 为第一个视频的高,合成的两个视频最好分辨率一致。overlay 是覆盖,[a][1:v]overlay=w,后面代表是覆盖位置 w:0

竖屏拼接两个视频

1
ffmpeg -i out1.mp4 -i out2.mp4 -filter_complex "[0:v]pad=iw:ih*2[a];[a][1:v]overlay=0:h" out.mp4

横向拼接三个视频

1
ffmpeg -i out1.mp4 -i out2.mp4 -i out3.mp4 -filter_complex "[0:v]pad=iw*3:ih*1[a];[a][1:v]overlay=w[b];[b][2:v]overlay=2.0*w" out.mp4

竖向拼接三个视频

1
ffmpeg -i out1.mp4 -i out2.mp4 -i out3.mp4 -filter_complex "[0:v]pad=iw:ih*3[a];[a][1:v]overlay=0:h[b];[b][2:v]overlay=0:2.0*h" out.mp4

四个视频 2x2 排列拼接

1
ffmpeg -i out1.mp4 -i out2.mp4 -i out3.mp4 -i out4.mp4 -filter_complex "[0:v]pad=iw*2:ih*2[a];[a][1:v]overlay=w[b];[b][2:v]overlay=0:h[c];[c][3:v]overlay=w:h" out.mp4

MP3 转 WAV

1
ffmpeg -i test.mp3 -f s16le -acodec pcm_s16le -ac 2 -ar 48000 output.wav
  • -acodec pcm_s16le pcm_s16le 16bits 编码器
  • -f s16le 保存为 16bits pcm 格式
  • -ac 2 双声道
  • -ar 48000 48000 采样率

Video 提取音频文件

1
ffmpeg -i video.rmvb -f wav -ar 48000 audio.wav