Оценить размер минуты AAC и несжатого PCM

Учебные задачи

Считаем учебный бюджет битрейта и теоретический объём 16-битного PCM. Не выдаём оценку за точный размер реального файла.

Где и как запускать

Полный клиентский обработчик собственной мобильной формы. На сервере и в тонком клиенте Windows этот тип не запускайте.

Подготовка

  1. Используйте собственную форму поддерживаемого мобильного клиента/мобильного приложения, начиная с 8.3.17. Создайте команду ВыполнитьПример и назначьте её клиентский обработчик. Вставляйте полный модуль одного урока.

  2. Примеры создают только параметры и считают размеры. Они не включают микрофон, не записывают звук, не запрашивают разрешение, не создают файл и не отправляют данные.

  3. Числа — учебные параметры кодирования. Реальная поддержка формата/частоты зависит от устройства и проверяется отдельным упражнением реальной аудиозаписи.

&НаКлиенте
Процедура ВыполнитьПример(Команда)
    AAC = Новый ПараметрыАудиозаписи(ФорматАудиозаписи.Mpeg4AAC, ИспользованиеКаналовАудиозаписи.Моно, 44100, 128000);
    PCM = Новый ПараметрыАудиозаписи(ФорматАудиозаписи.WavPCM16bit, ИспользованиеКаналовАудиозаписи.Стерео, 44100);
    ДлительностьСекунд = 60;
    ОценкаAACБайт = AAC.СкоростьКодирования * ДлительностьСекунд / 8;
    Сообщить(ОценкаAACБайт = 960000);
    Сообщить("Оценка AAC, КиБ: " + Строка(ОценкаAACБайт / 1024));
    Сообщить(AAC.ФорматАудиозаписи = ФорматАудиозаписи.Mpeg4AAC);
    Сообщить(AAC.ИспользованиеКаналовАудиозаписи = ИспользованиеКаналовАудиозаписи.Моно);
    КаналовPCM = 2;
    БитНаОтсчетPCM = 16;
    Если PCM.ИспользованиеКаналовАудиозаписи <> ИспользованиеКаналовАудиозаписи.Стерео Тогда
        ВызватьИсключение "Расчёт выполнен только для собственного стерео-профиля";
    КонецЕсли;
    ОбъемPCMБайт = PCM.ЧастотаДискретизации * КаналовPCM * БитНаОтсчетPCM * ДлительностьСекунд / 8;
    Сообщить(PCM.ФорматАудиозаписи = ФорматАудиозаписи.WavPCM16bit);
    Сообщить(ОбъемPCMБайт = 10584000);
    Сообщить("Теоретические данные PCM, МиБ: " + Строка(ОбъемPCMБайт / 1024 / 1024));
    Сообщить("Оценки не включают контейнер, заголовки и фактическое поведение кодека");
КонецПроцедуры

Разбор по шагам

  1. Для заданного AAC-битрейта 128000 × 60 / 8 = 960000 байт, или 937.5 КиБ. Это бюджет по параметру, не измерение файла.

  2. Формат WavPCM16bit подразумевает 16-битный PCM. Для двух каналов при 44100 отсчётах/с математический объём данных за 60 секунд равен 10584000 байт.

  3. СкоростьКодирования AAC не используется как формула объёма несжатого PCM: для него считаем частоту × каналы × разрядность × секунды / 8.

  4. Не умножаем AAC-битрейт ещё раз на число каналов без отдельного контракта кодека. Параметр — скорость кодирования данного профиля.

  5. WAV-заголовки, контейнер AAC, округление и реальное поведение устройства могут менять фактический размер. В уроке файла нет, поэтому точный размер не проверен.

Как проверить результат

  1. Пять контрольных Истина; две оценки 960000 и 10584000 байт.

  2. Проверьте арифметику отдельно калькулятором. Для точного размера реальной записи нужен другой урок с собственным микрофоном и измерением файла.

Ожидаемый результат

Показана полезная оценка бюджета записи с корректным различением сжатого битрейта и несжатых данных.

На что обратить внимание

  1. Не обещайте точный размер AAC-файла только по параметру битрейта.

  2. Не смешивайте КиБ/МиБ по основанию 1024 с десятичными кБ/МБ.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.