ffmpeg(三):处理原始数据命令
FFmpeg 可以直接处理原始音频和视频数据(Raw PCM、YUV 等),常见场景包括:
- 将原始 YUV 图像编码为 H.264 视频
- 将 PCM 音频编码为 AAC 或 MP3
- 对原始音视频数据进行封装(如封装为 MP4、TS)
处理原始 YUV 视频数据
有一个 YUV420P 格式的原始视频帧文件 input.yuv
,分辨率为 1280x720,帧率为 25fps:
编码为 H.264:
ffmpeg -f rawvideo -pix_fmt yuv420p -s 1280x720 -r 25 -i input.yuv -c:v libx264 output.mp4
说明:
-f rawvideo
:输入是原始视频流-pix_fmt yuv420p
:指定像素格式-s
:分辨率-r
:帧率-i input.yuv
:输入文件-c:v libx264
:使用 H.264 编码器
处理原始 PCM 音频数据
有一个 16-bit 小端 PCM 原始音频 input.pcm
,采样率 44100,双声道:
编码为 AAC:
ffmpeg -f s16le -ar 44100 -ac 2 -i input.pcm -c:a aac output.m4a
说明:
-f s16le
:16 位小端 PCM 格式-ar
:采样率-ac
:声道数-c:a aac
:使用 AAC 编码器
原始音视频合并封装(如裸流封装为 MP4)
有:
- 视频帧文件:
input.yuv
- 音频帧文件:
input.pcm
可以同步编码并封装为 MP4:
ffmpeg \-f rawvideo -pix_fmt yuv420p -s 1280x720 -r 25 -i input.yuv \-f s16le -ar 44100 -ac 2 -i input.pcm \-c:v libx264 -c:a aac \output.mp4
解码为原始数据(反向)
解码 MP4 为 YUV:
ffmpeg -i input.mp4 -c:v rawvideo -pix_fmt yuv420p output.yuv
解码 MP3/AAC 为 PCM:
ffmpeg -i input.mp3 -f s16le -ar 44100 -ac 2 output.pcm
格式参数表
数据类型 | FFmpeg 格式参数 (-f ) | 说明 |
---|---|---|
YUV420P | rawvideo | 原始视频帧数据 |
PCM 16bit | s16le | 原始音频数据 |
RGB24 | rawvideo , rgb24 | RGB 帧数据 |