Как вы можете обрезать mp3 файлы, используя `ffmpeg`?

10

Вот звуковая MP3-головоломка для Linux, которая давала мне покоя некоторое время:

Как обрезать первые несколько секунд аудио-файла MP3? (Я не могу ffmpeg -ssработать с форматом 00:01 или 1.000)

До сих пор, чтобы делать то, что я хочу, я прибегаю к тому, чтобы делать это с помощью графического интерфейса, который, возможно, медленнее для одного файла, и определенно медленнее для пакета файлов.

Марк Хадсон
источник
1
Обновление. Позже я наткнулся на тот факт, что ffmpeg очень требователен к формату времени --ss, и мне было легче всего обрезать первые 9 секунд, например, указав -ss 00:00:09 (обратите внимание, что ему нужно все 3 числа в формате чч: мм: сс) Используемая версия может быть старой ... FFmpeg версия SVN-r18709, Copyright (c) 2000-2009 Fabrice Bellard, et al.
Марк Хадсон

Ответы:

5

Для редактирования mp3 под Linux я бы порекомендовал sox . Он имеет простой в использовании trimэффект, который будет выполнять то, что вы просите (см. man soxПодробности - поиск (нажмите /) для «обрезки начала»). Пример:

sox input.mp3 output.mp3 trim 1 5

Вы не упомянули об этом, но если ваша цель состоит в том, чтобы просто удалить тишину в начале файлов, вы найдете silenceэффект гораздо более полезным ( man soxищите «выше периодов»)

rozcietrzewiacz
источник
Спасибо, классно: это сработало. Я в конечном итоге использовал trimдля простоты. Единственный sox FAIL formats: can't open output file 'blah.mp3': SoX was compiled without MP3 encoding supportподавитель был --so, повторно введите ffmpeg: /
Марк Хадсон
Это кажется необычным. На моем компьютере это работает без проблем с mp3s. Это вопрос конфигурации во время сборки. Как вы это установили?
rozcietrzewiacz
@rozcietrzewiacz, если вы устанавливаете sox из репозитория, вы, скорее всего, получите sox без поддержки MP3 (из-за проблем с лицензией). Например на Fedora 17:no handler for file extension mp3
maxschlepzig
4

Вы можете попробовать использовать mp3splt , который может разделять файлы MP3 и Ogg и имеет то преимущество, что он не перекодирует файл, тем самым избегая потери качества.


источник
1
Мне это нравится; Спасибо. Это просто, и все же имеет много опций ... Например: вот команда, которую я только что использовал, которая добавляет время разделения к имени файла: mp3splt "$file" 4.12 27.55.7... Это позволяет настраивать форматирование имени выходного файла и несколько точек разделения.
Peter.O
1

Убедитесь, что ваши спецификации времени начинаются с часов.

Чтобы процитировать справочную страницу ffmpeg :

позиция может быть в секундах или в форме "чч: мм: сс [.xxx]"

Это означает, что при выборе второго синтаксиса только .xxxчасть является необязательной. Иначе ffmpeg может неправильно проанализировать его как секунды.

То же самое касается продолжительности:

длительность может быть числом в секундах или в формате «чч: мм: сс [.xxx]»

Другая ловушка - это порядок аргументов ffmpeg (например, параметры -ss/ -tдля входного файла должны быть перед -iопцией).

пример

$ wget http://traffic.libsyn.com/twiv/TWiV179.mp3
$ ffmpeg -ss 1:05:59.3 -t 00:02:03.9 -i TWiV179.mp3 -acodec copy \
     what_is_a_hmm_twiv179.mp3

Со спецификацией -ss 1:05:59.3 -t 2:03.9вы получите другой результат (т.е. 2-х секундный длинный кусок).

(Проверено на Fedora 17 с версией ffmpeg 0.10.7.)

maxschlepzig
источник