Połącz dwa kanały audio (stereo) w jeden (mono) w GSM6.10 za pomocą FFMPEG

27

Chciałbym wiedzieć, czy można połączyć dźwięk stereo w mono w pliku audio GSM6.10 za pomocą FFMPEG. Jeśli tak, podaj polecenie, aby to osiągnąć.
W przeciwnym razie, czy można przekonwertować GSM6.10 na WAV PCM z FFMPEG? Mógłbym następnie scalić kanały w WAV PCM.

Jeśli istnieje inne bezpłatne narzędzie, które może to zrobić, ja też mogę spróbować.

Ron Harlev
źródło

Odpowiedzi:

42

Sposób „miksowania” ze stereo do mono w dowolnym obsługiwanym pliku w ffmpeg wygląda następująco:

ffmpeg -i file.ext -ac 1 file_mono.ext

Bit „-ac 1” instruuje ffmpeg, aby wyprowadził tylko 1 kanał audio, tj. Monofoniczny. Domyślnie ta operacja zachowa format pliku, ale przywróci bitrate do domyślnej wartości ffmpeg wynoszącej 64kbs. Jeśli chcesz wyższą prędkość transmisji, możesz:

ffmpeg -i file.ext -ac 1 -ab 192k file_mono.ext

... zastępując 192k preferowaną szybkością transmisji.

Pamiętaj, że instalacja ffmpeg musi obsługiwać twój konkretny kodek GSM, aby działał poprawnie. Wiem, że niektóre audio zakodowane w GSM są obsługiwane w ffmpeg przez libgsm, ale sam nigdy nie miałem do czynienia z plikami GSM. Udało mi się jednak bez problemu przekonwertować inne typy plików (MP3) na mono.

Ryan Tate
źródło
3
Czy to naprawdę miksowanie, czy tylko pomijanie kanałów?
Jonny
Z dokumentacji filtra „panoramuj”: „Zauważ, że ffmpeg integruje domyślny system miksowania w dół (i miksowania w górę), który powinien być preferowany (patrz opcja„ -ac ”), chyba że masz bardzo specyficzne potrzeby.”
Stop Harming Monica,
Pliki wejściowe i wyjściowe muszą być tylko plikami audio. Wejście nie może być wideo.
Kevin
1
Manipulacja kanałem audio „Miksuj pojedynczy strumień stereo w dół do strumienia mono. Oba kanały strumienia stereo zostaną zmiksowane do strumienia:”ffmpeg -i stereo.flac -ac 1 mono.flac
Joel Purra
@Kevin - wejście może być plikiem wideo, właśnie zweryfikowałem (z lub bez -vn)
Berry Tsakala
7

Powyższa odpowiedź działa w przypadku, gdy nadal chcesz konwertować między formatami, ale w przypadku długich plików, które mogą zająć dużo czasu. A może nie chcesz ponownie konwertować, obniżając jakość, więc możesz po prostu przesłać strumieniowo kopię. Jednoczesne użycie -codec: a i -ac 1 nie działa, ale zgodnie z dokumentacją filtru panoramy ffmpeg, jeśli spełnione są określone warunki (np. Nie dostosowujesz poziomów kanałów ani nie miksujesz dwóch kanałów w jeden) , rozpozna ten przypadek i zgłosi: „Wykryto czyste mapowanie kanałów” i wykona kopię strumienia, która jest znacznie szybsza.

Na przykład: aby utworzyć plik stereo mono, używając tylko lewego kanału i kopiując strumień wideo, wykonaj następujące czynności:

ffmpeg -i infile.ext -codec:v copy -af pan="mono: c0=FL" outfile.ext
mondaugen
źródło
0

Wiem, że jest to możliwe dzięki sox .... używam sox do manipulacji kanałem, kdenlive i audacity do łagodnej edycji oraz ffmpeg do remuxingu. po prostu daję ci znać, co w przeszłości mi się dobrze układało.

RobotHumans
źródło
0

Aby zachować wideo, użyłem kombinacji dwóch odpowiedzi powyżej:

ffmpeg -i infile -codec:v copy -ac 1 -ab 192k outfile

To dało mi wystarczające rozwiązanie.

Orzeł
źródło