这里的原始数据指的是FFmpeg解码后的数据,对于音频就是PCM数据,对于视频就是YUV数据。
FFmpeg提取YUV数据
// 提取
ffmpeg -i input.mp4 -an -c:v rawvideo -pix_fmts yuv420p out.yuv
// 播放
ffplay -s 624x1160 out.yuv
参数说明:
-i : 表示要处理的文件
-a : audio ; n : no // 要输出的结果里不包含音频
-c:v : 与-vcodec一样,表示视频编码器, c是codec的缩写,v是video的缩写 // rawvideo 表示原始视频流(未经混合 - 只含一视频流)
-pix_fmt : 像素格式, 音视频处理中比较常用的像素格式为yuv420
常用的YUV格式
为节省带宽起见,大多数YUV格式平均使用的每像素位数都少于24位。主要的抽样(subsample)格式有YCbCr4:2:0、YCbCr4:2:2、YCbCr4:1:1和YCbCr4:4:4。YUV的表示法称为A:B:C表示法:4:4:4表示完全取样。
4:2:2表示2:1的水平取样,垂直完全采样。
4:2:0表示2:1的水平取样,垂直2:1采样。
4:1:1表示4:1的水平取样,垂直完全采样。
YUV详情参看
FFmpeg提取PCM数据
// 提取
ffmpeg -i out.mp4 -vn -ar 44100 -ac2 -f s16le out.pcm
// 播放
ffplay -ar 44100 -ac 2 -f s16le out.pcm
参数说明:
-ar: 指定采样率;
-ac: 指定声道数;
-f s16le: 表示每个采样点用16位浮点数来表示(le表示小端,be表示大端)