Mam plik audio AC3 5.1, do którego chciałbym wstawić x sekund cichego dźwięku na początku. Nie ma to nic wspólnego z multipleksowaniem wideo, więc jego przesunięcie jest bezużyteczne, ponieważ wydaje się, że działa tylko ze strumieniem audio towarzyszącym strumieniowi wideo. Chciałbym to osiągnąć za pomocą ffmpeg. Jakieś pomysły?
14
Odpowiedzi:
Korzystanie z demultipleksera konkat (dodaj ciszę do początku i / lub końca)
Użyj demuxera konkat, jeśli chcesz uniknąć ponownego kodowania głównego segmentu. Ta metoda działa w celu dodania ciszy na początku lub na końcu (lub obu).
Użyj filtra źródła dźwięku anullsrc, aby utworzyć cichy dźwięk. Musisz dopasować format, układ kanału i częstotliwość próbkowania głównego pliku audio. Przykład wykonania 5.1-kanałowego, częstotliwości próbkowania 48000 Hz, 1-sekundowego cichego pliku audio AC3 (ponieważ taki był format pytania):
Teraz utwórz plik tekstowy o nazwie,
input.txt
który zawiera listę plików do połączenia:Jeśli chcesz na końcu ciszy, po prostu zmień kolejność plików
input.txt
.Teraz możesz połączyć pliki za pomocą demuxera concat :
Korzystanie z filtra konkat (dodaj ciszę na początku i / lub końcu)
Użyj filtru konkat, jeśli chcesz zrobić wszystko za pomocą jednego polecenia lub jeśli chcesz wyprowadzać dane w innym formacie niż dane wejściowe (ponieważ ta metoda i tak jest ponownie kodowana). Ta metoda działa w celu dodania ciszy na początku, na końcu lub w obu.
Przykład dodania 1 sekundy ciszy na początku wejścia stereo o częstotliwości próbkowania 44100 Hz:
Filtrowanie spowoduje ponowne kodowanie, a demuxer konkat nie.
W anullsrc zaleca się dopasowanie układu kanału i częstotliwości próbkowania wejścia.
Jeśli chcesz dodać ciszę do końca, zamiast po prostu zmienić kolejność wejść podanych do filtra concat:
[1:a][0:a]concat=n=2:v=0:a=1
.Korzystanie z filtra Adelay (dodaj ciszę na początku)
Użyj filtru audio Adelay, jeśli chcesz zrobić wszystko za pomocą jednego polecenia lub jeśli chcesz wyprowadzić sygnał w innym formacie niż wejście (ponieważ ta metoda i tak jest ponownie kodowana). Działa to tylko w celu dodania ciszy na początku pliku.
Ten przykład doda 1 sekundę ciszy na początku wejścia stereo:
1s
przez jedną sekundę.adelay=1000
, podczas gdy z wejścia 5.1adelay=1000|1000|1000|1000|1000|1000
.Korzystanie z filtra apad (dodaj ciszę na końcu)
Użyj filtra audio apad, jeśli chcesz zrobić wszystko za pomocą jednego polecenia lub jeśli chcesz wyprowadzić sygnał w innym formacie niż wejście (ponieważ ta metoda i tak jest ponownie kodowana). Działa to tylko w celu dodania ciszy na końcu pliku.
Ten przykład doda 1 sekundę ciszy do końca:
Filtrowanie spowoduje ponowne kodowanie, a demuxer konkat nie.
pad_dur
Opcja dodano po wydaniu FFmpeg 4.1, więc trzeba będzie użyć najnowszej kompilacji z git głównego oddziału lub czekać na FFmpeg 4.2.źródło
[Parsed_aevalsrc_0 @ 000000000195fec0] This syntax is deprecated. Use '|' to sep arate the list items.
Nowa składnia to-i "aevalsrc=0|0|0|0|0|0:d=1"
adelay
mają również przydatnąall
opcję opóźniania (pad od początku) wszystkich kanałów o pewną kwotę, np.adelay=delays=1000:all=1