Как удалить аудиотрек из mp4 видеофайла?

Если существует a NUL изобразите где угодно в файле, grep рассмотрит это как двоичный файл.

Там мог бы обходное решение как это cat file | tr -d '\000' | yourgrep устранить весь пустой указатель сначала и затем перерыть файл.

100
25.01.2011, 01:12
11 ответов

Первый показ ffmpeg -i file.mp4 видеть, какие потоки существуют в Вашем файле. Необходимо видеть что-то вроде этого:

Stream #0.0: Video: mpeg4, yuv420p, 720x304 [PAR 1:1 DAR 45:19], 23.98 tbr, 23.98 tbn, 23.98 tbc
Stream #0.1: Audio: ac3, 48000 Hz, 5.1, s16, 384 kb/s
Stream #0.2: Audio: ac3, 48000 Hz, 5.1, s16, 384 kb/s

Затем выполненный ffmpeg -i file.mp4 -map 0:0 -map 0:2 -acodec copy -vcodec copy new_file.mp4 скопировать видеопоток и 2-й аудиопоток к new_file.mp4.

117
27.01.2020, 19:30
  • 1
    В Windows эта команда дала ошибку Option map (set input stream mapping) cannot be applied to input file file.mp4 new_file.mp4 -- you are trying to apply an input option to an output file or vice versa. Move this option before the file it belongs to.: для фиксации его просто изменяют порядок аргументов таким образом: ffmpeg -i file.mp4 -map 0:0 -map 0:2 -acodec copy -vcodec copy new_file.mp4 –  MrLore 29.09.2013, 14:47
  • 2
    Та же ошибка как @MrLore на OS X. –  Oskar Persson 25.07.2014, 16:22
  • 3
    Это - то же на Ubuntu! @PatrickO' Neill –  Tommaso 25.08.2014, 10:32
  • 4
    для формата MKV также –  user3405291 01.04.2017, 11:10
  • 5
    Можно использовать более универсальную опцию -c copy иметь идентичные потоки для аудио, видео, но также и подзаголовков: ffmpeg -i input.mp4 -map 0:0 -map 0:2 -c copy output.mp4. –  Futal 09.09.2017, 11:01

Вы могли попробовать avidemux который обрабатывает только один звуковой файл внутренне (и поэтому вынуждает Вас выбрать одну определенную дорожку). Я никогда не пробовал его .mp4, но это работает с другими форматами.

4
27.01.2020, 19:30
  • 1
    Не работает так хорошо. Возможно, это - ошибка, но аудио возвращается искаженное, хотя это действительно делает задание (удалите остальную часть аудиотреков). –  tshepang 25.01.2011, 22:32

FFMPEG мог бы быть полезным решением для Вас.

$ man ffmpeg
-3
27.01.2020, 19:30
  • 1
    у меня был беглый взгляд, и это довольно плотно. Я искал "аудио" и "аудиотрек", и ничто не казалось очевидным. –  tshepang 25.01.2011, 10:01
  • 2
    @Tshepang, "дорожка" неоднозначна, который является, вероятно, почему FFmpeg предпочитает более точную терминологию. FFmpeg полагает, что аудио прибывает в "потоки", каждый включающий один или несколько "каналов". AFAICT, каждый канал моно с потоком, описывающим, в какой вывод (выводы) он должен быть отправлен (панорамируемый) по умолчанию. Например, поток стерео состоит из двух каналов, одного отправленного к оставленному выводу звуковой карты по умолчанию, и другой отправленный в правильный вывод звуковой карты по умолчанию. –  sampablokuper 02.08.2017, 14:50

Связанная проблема — удаляющий все аудиотреки из mp4 файла может быть сделана таким образом:

ffmpeg -i input_file.mp4 -vcodec copy -an output_file.mp4
102
27.01.2020, 19:30
  • 1
    Это дает мне ошибку The encoder 'aac' is experimental but experimental codecs are not enabled, add '-strict -2' if you want to use it. Но я добавил те флаги, и это - все еще то же...? –  poshaughnessy 24.04.2017, 13:34

Я использовал Avidemux (GUI) несколько раз и ffmpeg (консоль).

В Avidemux Вы выбираете "Audio"-> "Select tracks" в главном меню; затем сохраните Вас видео как новый файл.

Интересно достаточно в некоторых случаях Avidemux произвел "лучше" произведенный, чем ffmpeg.

на всякий случай Avidemux и ffmpeg находятся в стандартном Fedora репозиторий Linux. (Я уверен, что они являются стандартными в других разновидностях Linux, также.)

3
27.01.2020, 19:30

Определите номера потоков:

$ ffmpeg -i in.mp4
   ...
   Stream #0:0: Video: ...
   Stream #0:1: Audio: ...
   Stream #0:2: Audio: ...

Используйте -карту _file_:_stream_, чтобы выбрать, какие потоки обрабатывать и выводить

$ ffmpeg -i in.mp4 -map 0:0 -map 0:2 -vcodec copy -acodec copy out.mp4

см: https://ffmpeg.org/ffmpeg.html#Advanced-options

8
27.01.2020, 19:30

-vn или -an удалит все видео- или аудиодорожки. Поставляя -vn -acodec copy удалит видео; -an -vcodec copy удалит все аудио.

-vcodec copy указывает, что ffmpeg должен сделать прямую копию существующего видео трека (и не производить его обработку/кодирование). Если вы не укажете, то это все равно будет работать, но ffmpeg может перекодировать существующую видео дорожку, и операция будет использовать больше процессора и может занять значительно больше времени.

1
27.01.2020, 19:30

Если вы не против, если вы не возражаете в программе GUI, с Blender Видеоредактор, вы можете сделать это и гораздо больше.

-1
27.01.2020, 19:30

Использование avidemux в командной строке.

(В графическом интерфейсе Avidemux, как описано в https://unix.stackexchange.com/a/85834/4319 выше, вы просто выбираете / снимаете выделение аудиодорожек и сохраняете файл. (Все копируется в новый AVI.))

Я посмотрел, какие проекты сохраняются как проекты SpiderMonkey или TinyPy для моих действий, и оказалось, что в проекте SpiderMonkey (JavaScript) отсутствуют действия по выбору звуковой дорожки, которые Мне было нужно, но в проекте TinyPy (Python) они были.

Я удалил все, что не имеет отношения к делу (дюжина ненужных строк), и вот что я получил в моем some_series.py :

#PY  <- Needed to identify #
#--automatically built--

adm = Avidemux()

adm.audioClearTracks()
adm.audioAddTrack(1)

Он оставляет трек 1, но отбрасывает трек 0.

Затем Я выполнил пакетное преобразование многих файлов с помощью такой команды:

for f in *.avi; do avidemux3_cli --nogui --load "$f" --run ../some_series.py --save ../some_series/"${f%%.rus.eng.avi}".eng.avi --quit; done

Она копирует все, но отбрасывает все, кроме необходимой звуковой дорожки.

Как запустить avidemux из командной строки, я узнал из https://www.avidemux.org/admWiki/doku.php?id=tutorial:batch_processing , хотя они не упоминают скрипты Python, только JS (которые у меня не работали).

0
20.08.2021, 13:38

Программа ffmpeg была заменена на avconv . avconv очень похож на ffmpeg , поэтому все команды в этом посте могут выглядеть примерно так:

avconv <old ffpmeg command line options>

Перейдите по этой ссылке , чтобы установить avconv , если вы используете Ubuntu.

-2
20.08.2021, 13:38

Альтернативный, простой способ сделать это с помощью графического интерфейса/приложения на macOS Subler

Он также доступен на HomeBrew:

brew cask info subler
brew cask install subler
0
20.08.2021, 13:38

Теги

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