Разбиение аудиофайла на куски указанной длины

16

У меня есть несколько длинных аудиофайлов (по 80 минут каждый; m4a), и я хочу, чтобы они были разбиты на 5- или 10-минутные фрагменты.

Я вижу много вопросов по разбиению аудиофайла на длительные паузы, тоны и т. Д., Но не могу найти ни одного относительно этой простой операции. Кто-нибудь знает простой способ сделать это?

Конечно, что-то автоматическое, и с командной строкой все в порядке - даже предпочтительнее.

Заранее спасибо!

Эндрю Чонг
источник

Ответы:

20

С недавним ffmpeg (загрузите статическую сборку отсюда ):

ffmpeg -i in.m4a -f segment -segment_time 300 -c copy out%03d.m4a

Это использует сегментный мультиплексор и копирует битовые потоки. Если ваш файл имеет аудио и видео потоки, вы можете отключить видео поток с помощью -vn.


Вот одна строка, вам просто нужно установить Ruby и FFmpeg :

ruby -e '(0..4500).step(300) { |x| system "ffmpeg -ss #{x} -i in.m4a -c copy -t 300 out-#{x}.m4a"}'

Просто выполните это в той же папке, где in.m4aнаходится. Он скопирует звуковой поток битов, поэтому выполнение этого, вероятно, займет менее нескольких секунд.

Объяснить:

  • 4800 секунд - это длина аудиофайла (80 минут × 60 секунд), поэтому наш последний разделитель составляет 4500 (4800 - 300 секунд).
  • Мы идем от 0 до 4500, и мы разделяем каждые 300 секунд (5 минут × 60 секунд).
  • FFmpeg начнется в время, указанное -ss
  • И он будет копировать в течение времени, указанного -t
  • Будет записано несколько выходных файлов с именем out-<x>.mp4, где <x>указано время начала в секундах.
slhck
источник
Благодарность! Ваша команда для UNIX, или она работает на Windows тоже? У меня есть установка Cygwin, так что это не должно иметь значения, но просто интересно. Я попробую, когда вернусь домой.
Эндрю Чонг
Это изначально работает в Linux (и Unixes, на которых установлен Ruby), и также должно работать в Windows - вам просто нужны Ruby и FFmpeg, но для этого вам не понадобится Cygwin. Есть также Ruby Installer и FFmpeg для Windows. Теперь команда FFmpeg может быть автоматизирована без Ruby, используя командные файлы Windows или PowerShell, но я не пользователь Windows, поэтому я выбрал Ruby (потому что он поставляется с Linux и OS X). Может быть, кто-то с опытом работы с Windows может переписать команду Ruby выше?
Slhck
У меня есть Cygwin, потому что я не могу привыкнуть к командной строке Windows. Я думаю, что у меня уже есть ruby ​​и ffmpeg, поэтому я должен использовать вашу команду. Но да, версия для Windows может помочь кому-то еще просмотреть этот вопрос. +1 сейчас; приму, когда я попробую это.
Эндрю Чонг
2
Если, как и я, ваш файл m4a содержит видеопоток (в моем случае одно изображение), вам нужно добавить -vnпереключатель, чтобы выбрать только аудиопоток. Если вы хотите сохранить видеопоток, вам нужно вывести его в файл с расширением .mp4.
Роб Черч
2

Я сам искал решение для этого. Я нашел самый простой способ сделать это через MP4Box :

mp4box -split 300 infile.m4a

Где «300» - это время в секундах. MP4Box будет автоматически записывать пронумерованные выходные файлы.

(Вам не нужно устанавливать все большое приложение GPAC. Это файлы, которые вы можете извлечь из архива, чтобы он работал: js.dll; libeay32.dll; libgpac.dll; MP4Box.exe; ssleay32.dll)

dfkt
источник
2

Прошло много времени с тех пор, как этот вопрос был задан, но после того, как я начал дурачиться с Ruby и ffmpeg, я решил, что в Windows должен быть более простой способ сделать это, и обнаружил, что это так.

Скачайте и установите Audacity

Создайте текстовый файл где-нибудь, где вы сможете найти его и вставьте в него следующую строку: (300-секундные интервалы, т. Е. 5 минут, 10 минут - это 600 интервалов и т. Д.)

0       300  
300     600  
600     900  
900     1200  
1200    1500  
1500    1800  
1800    2100  
2100    2400  
2400    2700  
2700    3000  
3000    3300  
3300    3600  
3600    3900  
3900    4200  
4200    4500  
4500    4800  
4800    5100  
5100    5400  
5400    5700  
5700    6000  
6000    6300  
6300    6600  
6600    6900  
6900    7200  
7200    7500  
7500    7800  
7800    8100  
8100    8400  
8400    8700  
8700    9000  
9000    9300  
9300    9600  
9600    9900  
9900    10200  
10200   10500  
10500   10800  
10800   11100  
11100   11400  
11400   11700  
11700   12000  
12000   12300  
12300   12600  
12600   12900  
12900   13200  
13200   13500  
13500   13800  
13800   14100  
14100   14400  
14400   14700  
14700   15000  

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

Импортируйте аудиофайл в Audacity и произведите балансировку и любые другие изменения, которые вы хотите, затем нажмите на файл> метки> импортировать метки

Выберите текстовый файл, затем выберите дорожку метки и звуковую дорожку одновременно и нажмите «Файл»> «Экспорт нескольких».

Измените тип файла, в который вы хотите экспортировать и настройте параметры, затем выберите папку назначения.

Я всегда изменяю шаблон нумерации на «Нумерация после префикса имени файла» и набираю имя файла, которое я хочу, в поле, и программа добавит числа, нажмите «Экспорт» и «Альт»!

К. Гамильтон
источник
-1

Скачать Audacity - это бесплатный аудио инструмент, который может делать именно то, что вам нужно, и он абсолютно бесплатный и простой в использовании. http://audacity.sourceforge.net/

Джонни Вегас
источник
2
Есть ли способ заставить Audacity сделать это автоматически? Я не хотел бы вручную нарезать несколько файлов на 16 частей, выбрав мышью 5-минутные фрагменты, вырезать их, перейти в меню, сохранить файлы и так далее.
slhck
У меня уже есть Audacity, поэтому, если есть автоматический способ, пожалуйста, дайте мне знать!
Эндрю Чонг