Як видалити аудіозапис з відео-файлу mp4?


Відповіді:


110

Спочатку запустіть, 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щоб скопіювати відеопотік та другий аудіопотік у new_file.mp4.


3
У 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

Та сама помилка, що і @MrLore в ОС X.
Оскар Перссон

1
Те саме на Ubuntu!
Томмазо,

Працює і для формату MKV
user3405291

1
Ви можете використовувати більш загальний варіант , -c copyщоб мати однакові потоки для аудіо, відео , але і субтитри: ffmpeg -i input.mp4 -map 0:0 -map 0:2 -c copy output.mp4.
Футал

97

Пов'язана проблема - видалення всіх аудіозаписів з файлу mp4 можна зробити таким чином:

ffmpeg -i input_file.mp4 -vcodec copy -an output_file.mp4

1
Це дає мені помилку. The encoder 'aac' is experimental but experimental codecs are not enabled, add '-strict -2' if you want to use it.Але я додав ці прапори, і це все одно ...?
poshaughnessy


Повторний коментар poshaughnessy: тут, здається, є якась інформація: stackoverflow.com/questions/32931685/… В дискусії пропонується, що останні версії ffmpeg не відчувають проблеми "експериментальної програми AAC". Як правило, це допомагає діагностувати вашу проблему, якщо ви заявляєте версію програмного забезпечення, яке ви використовуєте, і точний синтаксис команди (після додавання прапорів), яка дала помилку (див. Відповідь freeseek у локації. Cit. ). У цьому конкретному випадку також може бути корисна відеоінформація з вхідного файлу.
Грег Маркс

8

Визначте номери потоків:

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

Використовуйте -map _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


4

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


Не працює так добре. Можливо, це помилка, але звук повертається заплутаним, хоча це і робить роботу (видаліть решту аудіозаписів).
tshepang

3

Я кілька разів використовував Avidemux (GUI) та ffmpeg (консоль).

У Avidemux у головному меню ви вибираєте "Audio" -> "Вибір доріжок"; потім збережіть ваше відео як новий файл.

Цікаво, що в деяких випадках Avidemux давав "кращий" вихід, ніж ffmpeg.

про всяк випадок, Avidemux і ffmpeg знаходяться у стандартному сховищі Fedora Linux. (Я впевнений, що вони є стандартними і для інших ароматів Linux.)


1

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

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


0

Використання 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 ( яка не працювала для мене).


-1

Якщо ви не заперечуєте проти того, щоб програма була графічним інтерфейсом, за допомогою відеоредактора Blender ви можете це зробити і багато іншого.


-2

ffmpegПрограма була замінена avconv. avconvмає дуже подібне використання ffmpeg, тому всі команди в цій публікації можуть бути чимось на зразок:

avconv <old ffpmeg command line options>

Перейдіть за цим посиланням, щоб встановити, avconvякщо ви перебуваєте на Ubuntu.


-3

FFMPEG може бути корисним рішенням для вас.

$ man ffmpeg

У мене був короткий погляд, і він досить щільний. Я шукав "аудіо" та "аудіозапис", і нічого не здавалося очевидним.
thepang

@Thepang, "трек" неоднозначний, тому, ймовірно, FFmpeg віддає перевагу більш точній термінології. FFmpeg вважає, що аудіо надходить в "потоки", кожен з яких містить один або більше "каналів". AFAICT, кожен канал є моно, при цьому потік описує, який вихід (и) йому слід за замовчуванням надсилати (панувати). Наприклад, стереопотік складається з двох каналів, один за замовчуванням направляється на лівий вихід звукової карти, а другий за замовчуванням направляється на правий вихід звукової карти.
sampablokuper
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.