Я пытаюсь преобразовать аудиофайлы Twitter (.ts) в формат, который я могу легко редактировать, на OSX.
До сих пор мне удавалось массово конвертировать файлы в .flac следующим образом:
for i in *.ts;
do name=`echo "$i" | cut -d'.' -f1`
echo "$name"
ffmpeg -i "$i" -sample_fmt s16 -ar 41000 "${name}.flac"
done
Это сработало и несколько уменьшило размер файла, но... Поскольку длина большинства файлов составляет около 7 часов, выбранный мной редактор не может обработать столько аудио в одном файле.
Итак, я осмотрелся и смог найти эту команду для сегментации файлов на секции по 3 часа.
ffmpeg -i space-1OdKrBealBqKX_0.flac -map 0 -f segment -segment_time 10800 -c copy space-1OdKrBealBqKX_0__%03d.flac
Это работает, но каждый файл содержит столько же пустого / молчаливого пространства в конце, сколько и исходный файл. Это будет проблемой для обмена с командой, которая поможет отредактировать эти файлы, поскольку каждый файл имеет исходную длину и размер файла. Есть много файлов. Однако аудиосегменты и именование работали.
Как обрезать фактическую длину файла до аудиосегмента?
Предостережение: я не являюсь экспертом ни в одном из этих вопросов, мне просто удалось погуглить и добраться до этого места, поэтому, если кто-то знает и хочет предоставить рабочий код, я был бы очень признателен!
Файлы FLAC содержат метаданные о продолжительности потока. При потоковом копировании ffmpeg не может перезаписать эти метаданные, поэтому они сохраняются.
Ваш обходной путь — сегментировать исходный шаг.
ffmpeg -i "$i" -sample_fmt s16 -ar 44100 -f segment -segment_time 10800 "${name}__%03d.flac"
Спасибо, это сработало. Общий размер файла увеличился в 3 раза, но вроде все правильно. Там нет пустого места.
Помогает ли опция
-reset_timestamps 1
?