Czy ktoś z was zna sposób dodania ciszy o określonym czasie trwania do końca pliku MP3 w Linuksie? Na przykład używając MEncodera, FFmpeg itp.?
Musi to być wiersz poleceń, ponieważ będzie on skryptowany i uruchamiany na naszym serwerze.
Rozglądałem się wokół tego i najlepsze, co mogłem zrobić, to użyć pad
funkcji w SoX , ale to nie zadziała z plikami MP3.
Mógłbym przekonwertować go na WAV, użyć SoX, a następnie ponownie przekonwertować na MP3 i skopiować metadane (minus czas trwania) z oryginału do nowego MP3. Ale zanim napisałem skrypt na ten temat, pomyślałem, że sprawdzę, czy istnieje jedno trafienie.
Odpowiedzi:
Możesz to zrobić z łatwością dzięki
pad
argumentowi SoX i następującej składni:Przykład:
Cisze są w kilka sekund. (Inne zastosowania są możliwe przy użyciu innej składni, aby wstawić te cisze w określonych miejscach. Więcej informacji znajduje się w dokumentacji SoX.)
źródło
Za pomocą ffmpeg możesz użyć filtra aevalsrc do wygenerowania ciszy, a następnie w drugim poleceniu użyj protokołu concat, aby połączyć je bezstratnie:
Możesz kontrolować długość ciszy, zmieniając
-t 10
na dowolny czas w sekundach, który wolisz. Oczywiście musisz wygenerować ciszę tylko raz, a następnie możesz zatrzymać plik i użyć go do wypełnienia każdego z plików, który chcesz. Możesz także poszukać demuxera konkatatu - jest on nieco bardziej obciążający procesor, ale łatwiej jest wpaść w skrypt powłoki.Jeśli chcesz to zrobić za pomocą jednego polecenia, możesz użyć filtru konkat - będzie to wymagać ponownego kodowania dźwięku (ponieważ wykresy filtrów są niezgodne z
-codec copy
), więc powyższa opcja prawdopodobnie będzie dla Ciebie najlepsza. Ale może to być przydatne dla każdego, kto pracuje z surowym PCM, chcąc dodać ciszy do końca przed kodowaniem dźwięku:Kontroluj długość ciszy, zmieniając ją
d=10
na dowolny czas (w sekundach), jaki chcesz. Jeśli skorzystasz z tej metody, może okazać się przydatny przewodnik po kodowaniu MP3 FFmpeg .źródło
ffmpeg version 0.8.4-4:0.8.4-0ubuntu0.12.04.1, Copyright (c) 2000-2012 the Libav developers built on Nov 6 2012 16:51:33 with gcc 4.6.3 *** THIS PROGRAM IS DEPRECATED *** This program is only provided for compatibility and will be removed in a future release. Please use avconv instead. Unrecognized option 'filter_complex' Failed to set value 'aevalsrc=0' for option 'filter_complex'
avconv
zamiast - składnia powinna być taka sama, po prostu zastąpićffmpeg
zavconv
.