Я пытаюсь выяснить, как FFmpeg сохраняет данные в AVFrame
после того, как звук был декодирован.FFmpeg AVFrame Audio Data Modification
В принципе, если я печатаю данные в массиве AVFrame->data[]
, я получаю несколько беззнаковых 8-битных целых чисел, которые являются аудио в необработанном формате.
Из того, что я могу понять из FFmpeg doxygen, формат данных выражается в enum AVSampleFormat
и существует 2 основные категории: чередующиеся и плоские. В чередующемся типе данные хранятся в первой строке массива AVFrame->data
с размером AVFrame->linesize[0]
, тогда как в планарном типе каждый канал аудиофайла хранится в отдельной строке массива AVFrame->data
, а массивы имеют размер AVFrame->linesize[0]
.
Есть ли руководство/учебник, в котором объясняется, что означают числа в массиве для каждого из форматов?
Если массив в 'AVFrame.h' объявлен как' uint8_t', то как 'AVFrame-> data' содержать' int16_t'? – Arlind
Просто используйте cast: 'int16_t * pcm16 = (int16_t *) frame-> data [0]'. – Sergio
Является ли каждый из элементов массива в 'AVFrame-> data', представляющим 1 образец аудио? – Arlind