Я изучаю видео и аудио кодеки с FFmpeg.Я пытаюсь понять размер кадра и некоторые другие понятия.
Размер кадра Это размер в байтах каждого кадра.Это может сильно варьироваться: если каждый семпл имеет 8 бит и мы обрабатываем монофонический звук, размер кадра составляет один байт.Аналогично в 6-канальном аудио с 64-битными выборками с плавающей запятой размер кадра составляет 48 байтов ( PCM Терминология и понятия )
Как описано выше, если каждый образец имеет 8 бит иЕсть 6 каналов, тогда размер кадра будет 48 байтов.Результат из моего кода был 96 (16 бит * 6 каналов).С другой стороны, результат звонка stream->codecpar->frame_size
был 1024. Почему они отличались?Размер кадра 1024 для 6 каналов или только для каждого канала?
main.cpp:
else if (stream->codecpar->codec_type == AVMEDIA_TYPE_AUDIO) {
std::cout << "audio sample rate: " << stream->codecpar->sample_rate << std::endl;
std::cout << "audio bits: " << stream->codecpar->bits_per_coded_sample << std::endl;
std::cout << "audio channels: " << stream->codecpar->channels << std::endl;
std::cout << "audio frame size: " << stream->codecpar->frame_size << std::endl;
std::cout << "audio frame size: (16bits * 6 channels) = " << stream->codecpar->channels * stream->codecpar->bits_per_coded_sample << std::endl;
audio_stream_index = i;
}
консоль:
audio sample rate: 48000
audio bits: 16
audio channels: 6
audio frame size: 1024
audio frame size: (16bits * 6 channels) = 96