Я знаю, что могу использовать ffprobe, а затем проанализировать текстовый файл, чтобы получить информацию о кодеке файла B, но есть ли более простой способ?
Цель: я хочу добавить несколько секунд тишины к сотням аудиофайлов (которые имеют разные битрейты и кодировки) без перекодирования, потому что я хотел бы иметь несколько секунд тишины между треками при воспроизведении списка воспроизведения. Поскольку на Android нет аудиопроигрывателя, который бы обладал такой функциональностью (насколько мне известно), я подумываю о включении тишины в сами файлы.

1 ответ1

0

Чтобы ответить на ваш буквальный вопрос, нет, ffmpeg не может определить входной кодек и битрейт и применить те же настройки к выходному файлу.

Есть несколько причин, почему это было бы нелегко реализовать:

  • Вам нужно будет определить выходной кодер на основе входного кодека. Вы не всегда можете знать, какой кодировщик использовался для исходного файла, поэтому выбор точно такого же кодировщика будет невозможен во всех случаях.
  • Выбор одного и того же входного битрейта может привести к потере генерации, поэтому пользователь должен выбрать подходящий битрейт или уровень качества для выходных данных.
  • Обычно поддерживается сохранение частоты дискретизации и количества аудиоканалов (или форматов пикселей, частоты кадров для видео), но существуют крайние случаи, когда, например, вход может иметь аудиопоток 5.1, но единственный аудиокодер, который может выбрать ffmpeg поддерживает только стерео аудио кодирование.
  • Существует множество комбинаций кодеков ввода-вывода с форматами файлов, и вы не можете гарантировать, что заданная комбинация ввода может быть записана в выходной файл.

Тем не менее, для ограниченного случая использования, такого как ваш, будет работать простой скрипт, который анализирует информацию о файле (например, с mediainfo или ffprobe) и переводит ее в настройки ffmpeg.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .