FFmpeg处理原始数据

这里的原始数据指的是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表示大端)

你可能感兴趣的:(FFmpeg处理原始数据)