Dzielenie pliku audio na części o określonej długości

16

Mam kilka długich plików audio (80 minut każdy; m4a) i chcę je podzielić na 5- lub 10-minutowe utwory.

Widzę wiele pytań dotyczących dzielenia pliku audio przy dłuższych przerwach, dźwiękach itp., Ale wydaje się, że nie mogę znaleźć jednego dotyczącego tej prostej operacji. Czy ktoś zna prosty sposób to zrobić?

Oczywiście coś automatycznego, a wiersz poleceń jest w porządku - a nawet preferowany.

Z góry dziękuję!

Andrew Cheong
źródło

Odpowiedzi:

20

W najnowszym ffmpeg (pobierz statyczną wersję tutaj ):

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

Używa multipleksera segmentu i kopiuje strumienie bitów. Jeśli plik zawiera strumienie audio i wideo, możesz wyłączyć strumień wideo za pomocą -vn.


Oto jedna linijka, wystarczy zainstalować Ruby i FFmpeg :

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

Po prostu wykonaj to w tym samym folderze, w którym się in.m4aznajduje. Skopiuje strumień bitów audio, więc wykonanie tego zajmie prawdopodobnie mniej niż kilka sekund.

Wytłumaczyć:

  • 4800 sekund to długość pliku audio (80 minut × 60 sekund), więc nasz ostatni podział to 4500 (4800 - 300 sekund).
  • Przechodzimy od 0 do 4500 i dzielimy się co 300 sekund (5min × 60s).
  • FFmpeg uruchomi się o godzinie określonej przez -ss
  • I skopiuje na czas określony przez -t
  • Zapisze kilka plików wyjściowych o nazwie out-<x>.mp4, gdzie <x>czas rozpoczęcia w sekundach.
slhck
źródło
Dzięki! Czy twoje polecenie dotyczy systemu UNIX, czy działa również w systemie Windows? Mam instalację Cygwin, więc nie powinno to mieć znaczenia, tylko się zastanawiać. Spróbuję, kiedy wrócę do domu.
Andrew Cheong,
Działa to natywnie na Linuksie (i Uniksach, które mają zainstalowany Ruby) i powinno także działać na Windowsie - po prostu potrzebujesz Ruby i FFmpeg, ale nie potrzebujesz do tego Cygwina. Istnieją również pliki wykonywalne Ruby Installer i FFmpeg dla Windows. Teraz komendę FFmpeg można zautomatyzować bez Ruby, używając plików wsadowych Windows lub PowerShell, ale nie jestem użytkownikiem Windows, dlatego wziąłem Ruby (ponieważ jest on dostarczany z Linuksem i OS X). Może ktoś z doświadczeniem wsadowym Windows może przepisać powyższe polecenie Ruby?
slhck 28.12.12
Mam Cygwin, ponieważ nie mogę przyzwyczaić się do wiersza poleceń systemu Windows. Myślę, że mam już zainstalowane Ruby i FFmpeg, więc powinienem móc użyć twojego polecenia. Ale tak, wersja Windows może pomóc komuś innemu zobaczyć to pytanie. +1 na razie; zaakceptuje, kiedy spróbuję.
Andrew Cheong,
2
Jeśli, podobnie jak ja, twój plik m4a zawiera strumień wideo (w moim przypadku pojedynczy obraz), musisz dodać -vnprzełącznik, aby wybrać tylko strumień audio. Jeśli chcesz zachować strumień wideo, musisz wydrukować plik z rozszerzeniem .mp4.
Rob Church
2

Sam szukałem rozwiązania tego problemu. Najłatwiejszym sposobem, aby to zrobić, jest MP4Box :

mp4box -split 300 infile.m4a

Gdzie „300” to czas w sekundach. MP4Box automatycznie zapisuje numerowane pliki wyjściowe.

(Nie trzeba instalować całej dużej aplikacji GPAC. Są to pliki, które można wyodrębnić z archiwum, aby działało: js.dll; libeay32.dll; libgpac.dll; MP4Box.exe; ssleay32.dll)

dfkt
źródło
2

Minęło trochę czasu, odkąd zadano to pytanie, ale po wygłupieniu się z Ruby i ffmpeg zdecydowałem, że musi być łatwiejszy sposób na zrobienie tego w systemie Windows, i znalazłem.

Pobierz i zainstaluj Audacity

Utwórz plik tekstowy, w którym go znajdziesz, i wklej do niego następujący ciąg znaków: (300 sekund odstępów, tj. 5 minut, 10 minut to 600 odstępów itp.)

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  

Tylko upewnij się, że liczba interwałów jest większa niż całkowita długość twoich plików audio, stworzyłem ten, który działa przez ponad trzy godziny, wystarczająco długo na moje potrzeby, dodaj więcej, aby dopasować do twoich potrzeb.

Zaimportuj plik audio do Audacity i dokonaj dowolnego równoważenia i innych zmian, które chcesz, a następnie kliknij plik> etykiety> importuj etykiety

Wybierz plik tekstowy, a następnie wybierz jednocześnie ścieżkę z etykietami i ścieżkę audio, a następnie kliknij plik> Eksportuj wiele.

Zmień typ pliku, do którego chcesz wyeksportować i dostosuj ustawienia, a następnie wybierz folder docelowy.

Zawsze zmieniam wzór numeracji na Numerowanie po prefiksie nazwy pliku i wpisuję nazwę pliku, którą chcę w polu, a program doda liczby, włączy Eksport i violę!

C. Hamilton
źródło
-1

Pobierz Audacity - to darmowe narzędzie audio, które może robić dokładnie to, czego potrzebujesz, i jest całkowicie bezpłatne i łatwe w użyciu. http://audacity.sourceforge.net/

JohnnyVegas
źródło
2
Czy istnieje sposób, aby Audacity zrobił to automatycznie? Nie chciałbym ręcznie kroić wielu plików na 16 części, wybierając za pomocą myszy 5-minutowe elementy, wycinać je, wchodzić do menu, zapisywać pliki i tak dalej.
slhck 28.12.12
Mam już Audacity, więc jeśli istnieje sposób automatyczny, daj mi znać!
Andrew Cheong,