ffmpeg 命令

ffmpeg

1
usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...

音频转码

1
2
3
4
5
6
7
8
#转码生成新的文件,目标为 
- ar 采样率 44100,
- ac 双声道,编码格式 aac
- acodec 编码器 aac
ffmpeg -i source.mp3 -ar 44100 -ac 2 -acodec aac -y output.m4a

# 转换为 pcm
ffmpeg -i source.mp3 -f s16le -acodec pcm_s16le output.raw

从 mp4 中提取 yuv

1
ffmpeg -i xx.mp4 -s 960x540 -pix_fmt yuv420p xx.yuv
  • -s 来设置 yuv 数据的分辨率
  • -pix_fmt 设置 yuv 的颜色格式

从mp4或flv文件中提取h264

1
ffmpeg -i test.flv -vcodec copy -an -bsf:v h264_mp4toannexb test.h264

从mp4文件中提取aac

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

把一个 non-fragment MP4 转换成 fragment MP4,可以使用 FFmpeg 的 -movflags 来转换。参考:fragment mp4 转换

对于原始文件为非 MP4 文件

1
2
ffmpeg -i trailer_1080p.mov -c:v copy -c:a copy -movflags frag_keyframe+empty_moov bunny_fragmented.mp4

对于原始文件已经是 MP4 文件

1
2
ffmpeg -i non_fragmented.mp4 -strict -2 -movflags frag_keyframe+empty_moov fragmented.mp4

将 yuv 编码成 mp4

1
2
ffmpeg -f rawvideo -pix_fmt yuv420p -s:v 1920x1080 -r 25 -i input.yuv \
-c:v libx264 output.mp4

将 yuv 编码成 h264, 参考 Using ffmpeg to encode a raw video to H.264 format

1
2
ffmpeg -f rawvideo -pix_fmt yuv420p -s:v 1920x1080 -r 25 -i input.yuv \
-c:v libx264 -f rawvideo output.264

ffplay

播放yuv

1
2
ffplay -f rawvideo -video_size 1280x720 -pixel_format nv12 xxx.yuv
ffplay -f rawvideo -video_size 1280x720 -pixel_format yuv420p xxx.yuv

播放pcm

1
ffplay -ar 16000 -ac 1 -f s16le -i xxx.pcm

ffplay 字幕, 参考https://www.pianshen.com/article/9580874222/

使用自带的第0个字幕流

1
ffplay -vf subtitles=infile:si=0 infile

ffmpeg 命令
https://yxibng.github.io/2022/09/23/ffmpeg/2022-09-23-ffmpeg-命令/
作者
yxibng
发布于
2022年9月23日
许可协议