2016-09-05 10 views
4

FFmpegがオーディオをデコードした後にAVFrameにデータを保存する方法を理解しようとしています。FFmpeg AVFrameオーディオデータの変更

基本的には、AVFrame->data[]配列のデータを印刷すると、生のフォーマットのオーディオである符号なし8ビット整数の数が得られます。

私はFFmpeg doxygenから理解できるものから、データのフォーマットはenum AVSampleFormatで表され、インターリーブドとプレーンナの2つの主要カテゴリがあります。インターリーブタイプでは、データは、AVFrame->linesize[0]という配列のAVFrame->dataアレイの最初の行にすべて保存されますが、プレーンタイプでは、オーディオファイルの各チャネルはAVFrame->dataアレイの別の行に保持され、アレイのサイズはAVFrame->linesize[0]です。

各フォーマットの配列の数字は何を意味するのかを説明するガイド/チュートリアルがありますか?

答えて

2

アレイ(プレーン)の各値は、指定されたフォーマットによる実際のオーディオサンプルです。例えば。フォーマットがAV_SAMPLE_FMT_S16Pならば、dataアレイは実際にはint16_tPCMデータの配列であることを意味します。モノラル信号を処理している場合は、data[0]のみが有効です。ステレオの場合はdata[0]とが有効です。

それぞれのケースを説明するのに役立つガイドがありますが、とにかく記述されたアプローチは非常に簡単で分かりやすいです。あなたはちょうどそれを少し再生する必要があり、物事は明確になるはずです。

+0

'AVFrame.h'の配列が' uint8_t'として宣言されている場合、 'AVFrame-> data'は' int16_t'をどのように含んでいますか? – Arlind

+0

キャスト: 'int16_t * pcm16 =(int16_t *)frame-> data [0]'だけを使用してください。 – Sergio

+0

1つのオーディオサンプルを表す 'AVFrame-> data'の配列の各要素はありますか? – Arlind

関連する問題