Bir video dosyasındaki ses akışını birden çok ses akışıyla nasıl değiştirebilirim?


19

İki ses akışı olan bir video dosyasındaki ikinci ses akışını (0: 2) değiştirmek ve mümkünse bir etiket vermek istiyorum. Bunu nasıl yapabilirim? Bulduğum tüm ffmpeg komutları ikinci ses akışını korumama izin vermiyor.

Yanıtlar:


22

Akışlarınızı seçmek için -mapseçeneği kullanın . Varsayılan akış seçimi her akış türünden yalnızca birini seçecektir, bu yüzden -mapkullanılmalıdır.

İkinci ses akışını değiştir

resim açıklamasını buraya girin

ffmpeg -i video.mkv -i audio.mp3 -map 0:v -map 0:a:0 -map 1:a \
-metadata:s:a:0 language=eng -metadata:s:a:1 language=sme -codec copy \
-shortest output.mkv
  • 0:v- 0İlk giriş olan video.mkv. vVasıta "seçeneğini video akışı türü".

  • 0:a:0- 0İlk giriş olan video.mkv. aVasıta "ses akışı türünü seçin". Sonuncusu 0, bu girişten gelen ilk ses akışını ifade eder. Yalnızca 0:akullanılırsa, tüm video akışları eşlenir.

  • 1:a- Kullanılan 1ikinci giriş anlamına gelir audio.mp3. aVasıta "ses akışı türünü seçin".

  • -codec copykodlamak yerine kopyalamayı (yeniden mux) aktaracaktır . Belirli bir ses kodekine ihtiyacınız varsa, -c:v copy(videoyu saklamak için) belirtmeli ve sonra örneğin -c:a libmp3lameses akışını MP3 olarak yeniden kodlamanız gerekir.

  • -shortest en kısa giriş sona erdiğinde çıkışı sonlandıracaktır.

İki ses akışını bir araya getirin

resim açıklamasını buraya girin

ffmpeg -i vid.mkv -i aud.mp3 -filter_complex "[0:a][1:a]amerge=inputs=2[a]" \
-map 0:v -map "[a]" -c:v copy -c:a aac -strict experimental -b:a 192k -ac 2 \
-shortest out.mp4
  • Filtreleme yeniden kodlama gerektirir ve amergefiltre burada kullanılır, bu nedenle ses bu örnekte akış kopyalanamaz.

benim için hiç çalışmadı.
Rudolf Olah

@omouse "işe yaramadı" için yardım sağlamak zordur. Komutunuzu ve tüm konsol çıktısını göstermek için bir yapıştırma bağlantısı kullanmalısınız.
llogan

Benim sorunum -codec copy, ama sabit (ffmpeg'in farklı versiyonu), birlikte yaşadığım diğer sorun -map, yanlış sayıda akıştan şikayet etti.
Rudolf Olah

1
Az önce kullandım -map 0:v -map 1:a. Bu ilk dosyadan (video.mkv) video almak ve sonra output.mkv oluşturmak için ikinci dosyadan (audio.mp4) ses almak anlamına gelir ... Ne için emin değilim -map 0:a:0. Onu hariç tuttum ve istediğim sonuçları elde ettim.
Paz

2
@ aaronk6 Orijinal soru, birden fazla ses akışını çıkışla eşleştirmek için bir yol istedi . Örnek, birinci ses akışını ilk girişten ve ses akışını / akışlarını ikinci girişten alır ve bunları çıkışla eşler. Bazıları, örneğin tek bir ses akışı ile bir çıktı yaptığını ve daha sonra karıştırıldığını varsayar .
llogan
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.