Usuń strumień audio z plików XVID

3

Mam kilka plików Xvid, z których każdy ma strumień audio, którego nie chcę. Jak mogę usunąć ścieżkę audio, której nie chcę za pomocą wiersza poleceń systemu Linux?

Nie potrzebuję całego skryptu (pętli), tylko jakiej komendy użyłbym do przetworzenia każdego pliku avi osobno (chyba że w samym cmd ma wbudowaną modyfikację wsadową).

Nie wierzę, że plik znajduje się w kontenerze mkv, ponieważ mkvinfo niczego nie znajduje. Oto część wyników mplayera (dzięki ~ kwak):

[aviheader] Video stream found, -vid 0
ID_AUDIO_ID=1
[aviheader] Audio stream found, -aid 1
ID_AUDIO_ID=2
[aviheader] Audio stream found, -aid 2
VIDEO:  [XVID]  512x384  12bpp  25.000 fps  1013.4 kbps (123.7 kbyte/s)
Kyle Brandt
źródło

Odpowiedzi:

3

Szczerze mówiąc, myślę, że wolisz korzystać z tego ffmpegrozwiązania. Ale pomyślałem, że mencoder( mplayerkoder) też może to zrobić ... i może, ale tylko jako efekt uboczny - ponieważ jest zbudowany na odtwarzaczu, może przetwarzać tylko jeden strumień audio na raz. Jeśli cofałeś proces (dodając drugi strumień audio do pliku, który miał tylko jeden), potrzebujesz innego narzędzia.

-aid XOpcja wybiera strumień audio (z numerem zastąpić X strumieniowi ID). Wygląda na to, że mplayerdane wyjściowe, które zacytowałeś, zawierają już prawidłowe numery identyfikacyjne, więc spróbuj użyć tych. Zachowuje to pierwszy strumień audio (użyj, -aid 2jeśli chcesz drugi):

$ mencoder orig.avi -o new.avi -oac copy -ovc copy -aid 1

Inne wiersze poleceń AVI, które mogą pomóc:

  • avidemux(możesz pisać za pomocą -nogui)
  • transcode
quack quixote
źródło
Dzięki, jeśli mam jakieś problemy, miło mieć drugą opcję. W tej chwili wszystkie pliki przetwarzają za pomocą ffmpeg (umieść go w pętli). Mam nadzieję, że wybrałem odpowiedni strumień audio, ale jeśli nie, mogę to zrobić ponownie.
Kyle Brandt
Szybka próbka, którą zrobiłem, nie wydaje się być niestabilna z tym (vs ffmpeg), więc wygląda na to, że to może być bilet.
Kyle Brandt
5

Za pomocą ffmpeg możesz wykonać następujące czynności

ffmpeg -i input -map 0: 0 -map 0: 1 -vcodec copy -acodec copy output

To powinno zrobić nowy film z wideo i pierwszym strumieniem audio. Aby użyć drugiego strumienia audio, zmień -mapę 0: 1 na -mapę 0: 2. Z kopiowaniem zarówno dla -vcodec, jak i -acodec kopiujesz strumienie bez ponownego kodowania.

T. Kaltnekar
źródło
Myślę, że właśnie tego chcę, będę musiał sprawdzić, kiedy zakończy się przetwarzanie. Czy znasz też polecenie, które mówi mi język pliku audio? ;-)
Kyle Brandt
@Kyle: być może będziesz musiał go odtworzyć i zobaczyć. Myślę, że kontenery Matroska (mkv) zawierają flagę języka w nagłówku strumienia audio, choć nie zawsze jest ustawiona. nie jestem pewien, czy pojemniki AVI zapewniają to samo, a nawet jeśli tak, nie możesz być pewien, że są ustawione poprawnie.
quack quixote
W zależności od odtwarzacza hte, przy użyciu tej metody albo dźwięk jest chopy, albo wideo jest odtwarzane znacznie wolniej ... z VLC jest niepewny
Kyle Brandt
To dziwne, ponieważ kopie -vcodec i -acodec powinny powodować, że ffmpeg kopiuje strumienie tylko bez ich ponownego kodowania. Obecnie nie mam dostępnego podwójnego filmu audio, aby sprawdzić, jaki może być problem.
T. Kaltnekar
0

Jeśli masz maszynę z systemem Windows. Użyj virtualdubmod , a następnie wybierz strumienie-> listę strumieni i wyłącz strumień audio i dodaj niestandardową ścieżkę audio, wybierz wideo-> kopiowanie bezpośredniego strumienia i ostatni plik-> zapisz jako avi. Możesz przygotować własny edytor audio, taki jak Audacity.

W systemie Linux:

ffmpeg (ma opcję wiersza poleceń)

Avidemux

Cinelerra

dvd :: rip

Joe
źródło
Dzięki za listę, ale szukam przykładu z narzędziem wiersza poleceń, jeśli znasz jeden ...
Kyle Brandt
ffmpeg ma wiersz komend
Joe