Розщеплення аудіофайлів на шматки заданої довжини


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>час початку в секундах.

Спасибі! Це ваша команда для 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)


2

З цього питання було минуло певний час, але, обдуривши Рубі та 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, тому якщо є автоматичний спосіб, будь ласка, повідомте мене!
Ендрю Ченг
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.