Удалить аудио поток из файлов XVID

4056
Kyle Brandt

У меня есть куча файлов Xvid, каждый из которых имеет аудиопоток, который мне не нужен. Как я могу удалить звуковую дорожку, которую я не хочу, используя командную строку Linux?

Мне не нужен весь сценарий (цикл), только какую команду я бы использовал для обработки каждого avi-файла отдельно (если только в самом cmd нет встроенной пакетной модификации).

Я не верю, что файл находится в контейнере mkv, так как mkvinfo ничего не находит. Вот часть вывода mplayer (спасибо ~ кряк):

[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) 
3

3 ответа на вопрос

5
T. Kaltnekar

Используя ffmpeg вы можете сделать следующее

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

Это должно сделать новый фильм с видео и первым аудио потоком. Чтобы использовать второй аудиопоток, измените -map 0: 1 на -map 0: 2. С копией для -vcodec и -acodec вы копируете потоки без перекодирования.

Думаю, это именно то, что я хочу, придется проверять, когда будет завершена обработка. Кроме того, случайно не знаете команду, которая говорит мне язык аудиофайла? ;-) Kyle Brandt 15 лет назад 0
@Kyle: возможно, вам просто придется воспроизвести его и посмотреть. я думаю, что контейнеры Matroska (mkv) включают флаг языка в заголовок аудиопотока, хотя он не всегда установлен. не уверен, что контейнеры AVI обеспечивают то же самое, и даже если они это сделали, вы не можете быть уверены, что они установлены точно. quack quixote 15 лет назад 0
В зависимости от проигрывателя hte, используя этот метод, звук либо прерывистый, либо видео воспроизводится намного медленнее ... с vlc оно прерывистое Kyle Brandt 15 лет назад 0
Это странно, поскольку при копировании -vcodec и -acodec ffmpeg должен копировать только потоки без их перекодирования. В настоящее время у меня нет двойного аудиофильма, чтобы проверить, в чем проблема. T. Kaltnekar 15 лет назад 0
3
quack quixote

Честно говоря, я думаю, что вы предпочтете использовать ffmpegрешение. Но я подумал mencoder( mplayerкодер) тоже может это сделать ... и может, но только как побочный эффект - поскольку он построен поверх плеера, он может обрабатывать только один аудиопоток за раз. Если бы вы перевернули процесс (добавив второй аудиопоток в файл, в котором был только один файл), вам понадобился бы другой инструмент.

-aid XОпция выбирает аудиопоток (заменить X с идентификационным номером ручья). Похоже, что mplayerвывод, который вы указали, уже показывает правильные идентификационные номера, так что попробуйте с ними. Это сохраняет первый аудиопоток (используйте, -aid 2если хотите, второй):

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

Другие инструменты командной строки AVI, которые могут помочь:

  • avidemux(вы можете сценарий с -nogui)
  • transcode
Спасибо, если у меня возникнут проблемы, приятно иметь второй вариант. Сейчас все файлы обрабатываются с помощью ffmpeg (поместите его в цикл). Надеюсь, выбрал правильный аудиопоток, но если нет, я могу просто сделать это снова. Kyle Brandt 15 лет назад 0
Быстрый сэмпл, который я сделал, кажется, не слишком изменчив (vs ffmpeg), поэтому похоже, что это может быть билетом. Kyle Brandt 15 лет назад 0
0
joe

Если у вас есть Windows Machine. Используйте virtualdubmod, затем выберите streams-> stream list и отключите аудиопоток и добавьте свою собственную звуковую дорожку, выберите video-> direct stream copy и последний файл-> save as avi. Вы можете подготовить свой собственный аудио редактор, такой как Audacity.

Для Linux:

ffmpeg (это опция командной строки)

Avidemux

Cinelerra

DVD :: рип

Спасибо за список, но я ищу пример с утилитой командной строки, если вы знаете один ... Kyle Brandt 15 лет назад 0
ffmpeg имеет командную строку joe 15 лет назад 0

Похожие вопросы