Изменить wav, aiff или mov частоту сэмплирования MOV или WAV БЕЗ изменения количества сэмплов
Мне нужен очень точный способ ускорить аудио. Я готовлю фильмы для OpenDCP, инструмента с открытым исходным кодом для создания пакетов Digital Cinema, для показа в кинотеатрах. Мои исходные файлы, как правило, являются быстродействующими MOV-файлами со скоростью 23,976 кадров в секунду со звуком 48.000 кГц. Иногда мой звук - это отдельный WAV с частотой 48.000 кГц. (FWIW, частота кадров видео источника фактически составляет 24/100,1 кадров в секунду, что является повторяющимся десятичным числом.)
Стандарт DCP основан на программе с частотой 24 000 кадров в секунду и 48 000 кГц, поэтому аудио и видео источника необходимо ускорить. Рабочий процесс обработки изображений по своей сути включает в себя преобразование MOV в последовательность TIF, кадр за кадром, которая, как предполагается, составляет 24 000 кадров в секунду, поэтому мне не нужно вмешиваться во внутренние компоненты обработчика видеоданных QT.
Но ускорить аудио, чтобы соответствовать, оказывается трудным. Большинство аудиопрограмм не могут получить количество аудиосэмплов, совпадающих со срезанными кадрами изображения. Увеличение скорости Audacity на 0,1% приводит к неправильному количеству выборок. Единственный путь, который я нашел, который работает, это использовать Apple Cinema Tools для согласования MOV 23,976 к / с /48 000 кГц с 24 000 к / с /48,048 кГц (что происходит путем изменения заголовков Quicktime), а затем с помощью Quicktime Player для экспорта аудио из этот файл на частоте 48.000 кГц, передискретизация. Это кадр точно.
Поэтому мой вопрос: есть ли в ffmpeg или sox настройки, которые точно ускорят звук в MOV, WAV или AIFF? Я хотел бы кроссплатформенное решение, поэтому я не зависим от Cinema Tools, который является только MacOS.
Я знаю, что это много фона. Не стесняйтесь задавать уточняющие вопросы!
1 ответ
sox input-file output-file speed 1.001001001001001
где файлы могут быть WAV или AIFF. Внутри Sox выясняется, что на самом деле десятичная дробь равна 1000/999, поэтому корректировка синхронизации выполняется на 100% (и повторная выборка отличается высоким качеством). Конечно, идти другим путем
sox input-file output-file speed 0.999
FFmpeg также может делать это точно по времени, но у его ресамплера были некоторые проблемы с качеством. Версия 1.1 может использовать ресэмплер sox (см. Здесь: http://ffmpeg.org/trac/ffmpeg/wiki/FFmpeg%20and%20the%20SoX%20Resampler), но, вероятно, проще всего использовать sox.