2013-03-06 6 views
0

Мне нужен очень точный способ ускорения звука. Я готовлю фильмы для OpenDCP, инструмент с открытым исходным кодом для создания пакетов цифрового кино, для скрининга в кинотеатрах. Мои исходные файлы, как правило, являются файлами быстрого доступа MOV с частотой 23,976 кадров в секунду с аудиосигналом 48 000 кГц. Иногда мой звук представляет собой отдельный 48.000 кГц WAV. (FWIW, частота кадров видео источника на самом деле равна 24/100,1 кадра в секунду, что является повторяющимся десятичным.)Изменение частоты дискретизации wav, aiff или mov для MOV или WAV Без изменения количества отсчетов

Стандарт DCP основан на программе 24 000 кадров в секунду и 48 000 кГц, поэтому аудио и видео источника необходимо ускорить. Рабочий процесс обработки изображений по своей сути включает в себя преобразование MOV в последовательность TIF, frame-per-frame, которая затем считается равной 24 000 fps, поэтому мне не нужно участвовать во внутренних компонентах обработчика видеоматериалов QT.

Но ускорение звука для соответствия оказывается трудным. Большинство аудиопрограмм не могут получить количество образцов аудиосигнала, чтобы совпадать с восстановленными кадрами изображений. Увеличение скорости на 0,1% в Audacity приводит к неправильному количеству образцов. Единственный путь, который я нашел, это использовать Apple Cinema Tools для соответствия MOV 23.976fps/48.000 кГц до 24.000fps/48.048kHz (что он делает, изменяя заголовки Quicktime), а затем используя Quicktime Player для экспорта звука из этот файл на 48.000 кГц, повторная выборка. Это точность кадров.

Итак, мой вопрос: существуют ли настройки в ffmpeg или sox, которые точно ускорят аудио в MOV или в WAV или AIFF точно? Я хотел бы использовать кросс-платформенное решение, поэтому я не зависим от Cinema Tools, который является только MacOS.

Я знаю, что это много фона. Не стесняйтесь задавать уточняющие вопросы!

ответ

0
sox input-file output-file speed 1.001001001001001 

где файлы могут быть WAV или AIFF. Sox работает внутри, что десятичная цифра фактически равна 1000/999, поэтому настройка времени на 100% точна (и передискретизация является высоким качеством). Переход в другой стороне, конечно

sox input-file output-file speed 0.999 

FFmpeg также может сделать это точно Timewise, но его дискретизированным были некоторые проблемы с качеством. Версия 1.1 может использовать sox resampler (см. Здесь: http://ffmpeg.org/trac/ffmpeg/wiki/FFmpeg%20and%20the%20SoX%20Resampler), но, вероятно, проще всего использовать sox.

+0

Спасибо, Боб! Это решило! За исключением правильной скорости 'speed 1.001' Возможно, я вводил в заблуждение относительно повторяющегося десятичного знака. –