ffmpeg命令

360 阅读1分钟

参考资料: ffmpeg.org/ffmpeg-code…

采集音频:

 ffmpeg -f avfoundation -i :0 out.wav 

-f 使用哪个框架: mac:avfoundation / windows:dshow / linux:alsa/oss

-i 采集什么数据, mac的写法:冒号分割, 前面是视频设备名称或索引, 冒号后面是音频设备名称或索引, “0:”表示从视频设备上采集, “:0”表示从音频设备上采集.

播放音频:

ffplay out.wav

抽取AAC数据 : 

ffmpeg -i /Users/.../1.mp4 -vn -c:a libfdk_aac -ar 44100 -channels 2 -profile:a aac_he audio.aac

  • -i /Users/.../1.mp4  // 输入的多媒体文件

  • -vn   // video no : 过滤视频

  • -c:a libfdk_aac  // 指定编码器 :a 音频编码器

  • -ar 44100  // 音频采样率

  • -channels 2  // 通道数 声道数

  • -profile:a aac_he // 参数 音频参数: aac_low(lc 编码方式) / aac_he(v1编码方式) / aac_he_v2

  • audio.aac // 输出文件的名字

使用opus编码器格式抽取数据

ffmpeg -i /Users/.../1.mp4 -vn -c:a libopus 1.opus

播放pcm 音频文件

ffplay -ar 44100 -ac 2 -f f32le audio.pcm

  • -f f32le : 采样大小32位 

生成YUV

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

  •  -i input.mp4    // 输入的包含视频数据的文件

  •  -an                    // 过滤音频

  •  -c:v rawvideo   // 视频编码器: rawvideo

  •  -pix_fmt yuv420p // 格式:yuv420p

ffmpeg -i input.mp4 -filter_complex 'extractplanes=y+u+v[y][u][v]' -map '[y]' y.yuv -map '[u]' u.yuv -map '[v]' v.yuv

  • -filter_complex  // 复杂的滤波器

  • y+u+v[y][u][v]   //  中括号表示前面分量的别名

播放YUV

ffplay -pix_fmt yuv420p -s 1280x720 -vf extractplanes='y' out.yuv

  • -pix_fmt yuv420p  // 格式 yuv420p (默认格式 可以省略) 

  • -s 1280x720           // 分辨率

  • -vf extractplanes='y'   // vf : 简单滤波 ,指定播放的分量