Вопрос или проблема
Мне нужно извлечь аудиотрек MP3 из видео MP4 с помощью ffmpeg. Я могу сделать это для .flv -> mp3, но не знаю параметры командной строки для mp4->mp3. Например, flv -> mp3:
ffmpeg -i video.flv -acodec copy audio.mp3
Какие параметры мне использовать для mp4 -> mp3?
Основная команда:
ffmpeg -i filename.mp4 filename.mp3
или
ffmpeg -i video.mp4 -b:a 192K -vn music.mp3
Проверьте этот URL: MP4 Video to MP3 File Using ffmpeg (Ubuntu 9.10 Karmic Koala) ссылка недоступна [Обновлено 7 декабря 2021]
Примечание: Ubuntu не поставляет FFmpeg, но поставляет форк под названием Libav. Синтаксис тот же – просто используйте avconv
вместо ffmpeg
в приведенных выше примерах.
Лучший способ кодирования MP3 — использовать -q:a
для переменной скорости передачи данных.
ffmpeg -i in.mp4 -q:a 0 -map a out.mp3
Опция q
может быть использована только с libmp3lame и соответствует опции LAME -V
. См. Кодирование VBR (Variable Bit Rate) mp3 аудио:
Я добился успеха с mp4 видео с YouTube, используя следующую команду:
ffmpeg -i video.mp4 -vn audio.mp3
Вы можете использовать графический инструмент, например FFAudioConverter, который можно установить на Linux через Flatpak или на Windows.
Я пробовал вышеперечисленные и многие другие команды, но постоянно сталкивался с проблемой, когда VLC неправильно отображал и постоянно менял длину аудиотрека. С FFAudioConverter я не испытывал этой проблемы.
Использование инструмента очень простое. Просто откройте приложение, затем перетащите туда файл, выбранные файлы или директорию. Убедитесь, что настройки настроены на желаемый выход, затем нажмите Конвертировать.
Для пользователей Windows я создал пакетный скрипт для Извлечения, но не Конвертирования видеофайла в связанный аудиофайл MP3 или M4A, в зависимости от кодирования видео.
Этот метод не теряет и не изменяет оригинальное качество звука, так как нет Перекодирования, поэтому он действительно быстрый!
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
:: Проверка, указан ли путь в качестве аргумента командной строки
IF "%~1"=="" (
SET "WORKING_DIR=%CD%"
) ELSE (
SET "WORKING_DIR=%~1"
)
:: Переход в рабочую директорию
PUSHD "%WORKING_DIR%"
:: Извлечение аудиотрека, включая все метаданные, из видеофайла
FOR %%I in ("*.mp4") DO (
:: Получение аудиокодека входного видеофайла
FOR /F "tokens=*" %%J IN ('"ffprobe -v error -select_streams a:0 -show_entries stream=codec_name -of default=noprint_wrappers=1:nokey=1 "%%I""') DO SET "codec=%%J"
IF "!codec!"=="aac" (
ffmpeg -hide_banner -i "%%I" -movflags use_metadata_tags -map 0:a -c copy "%%~nI.m4a"
) ELSE (
ffmpeg -hide_banner -i "%%I" -movflags use_metadata_tags -map 0:a -c copy "%%~nI.mp3"
)
)
:: Возврат в исходную директорию
POPD
EXIT /B
Пример:
VideoToAudio.cmd "D:\Source\MySummer Videos\"
Если вы не укажете путь запуска (пропустите параметр) и просто запустите VideoToAudio.cmd
, он начнет конвертировать все mp4 файлы в текущем пути.
Примечание:
У вас должны быть файлы “ffmpeg.exe” и “ffprobe.exe” в пути запуска или рядом с файлом скрипта VideoToAudio.cmd
.
Вы можете скачать инструменты FFMPEG отсюда: Получение исполняемых файлов для Windows
Ответ или решение
Конвертация видеофайлов формата MP4 в аудиофайлы формата MP3 с использованием FFmpeg — это распространенная задача, с которой сталкиваются многие пользователи. FFmpeg — это мощный инструмент с открытым исходным кодом, который позволяет осуществлять конвертацию мультимедиа различных форматов. Ниже приведено подробное руководство на русском языке, которое поможет вам выполнить конвертацию MP4 в MP3 с использованием FFmpeg.
Теория
FFmpeg — это многофункциональный программный инструмент для обработки мультимедийных данных. Он позволяет конвертировать, транскодировать, демультиплексировать и обрабатывать видео- и аудиофайлы. Поскольку MP4 является контейнером, который может содержать как видео, так и аудио, важно понимать, что извлечение аудиодорожки из MP4 подразумевает использование правильных параметров в команде FFmpeg.
Основные концепты:
- Входной и выходной файлы: FFmpeg использует синтаксис
-i
для указания входного файла. Напротив, выходной файл указывается в конце команды без специальных префиксов. - Кодирование и вывод: Параметр
-acodec copy
сохраняет оригинальную аудиодорожку без перекодировки, если это возможно. Однако, для конвертации в MP3, как правило, применяется перекодировка. - Битрейт и качество: Параметр
-b:a
задаёт фиксированный битрейт аудио, тогда как-q:a
используется для установки переменного битрейта, что предпочтительно для MP3.
Пример
Для конвертации аудио из MP4 в MP3 с использованием FFmpeg можно использовать несколько команд:
Простая команда для конвертации:
ffmpeg -i input.mp4 output.mp3
Эта команда подходит для базовой конвертации, но может не оптимально обрабатывать качество звука.
Команда с битрейтом:
ffmpeg -i video.mp4 -b:a 192K -vn music.mp3
Здесь -b:a 192K
задаёт битрейт аудио на уровне 192 Кбит/с, что является достаточно хорошим качеством для MP3.
Кодирование с переменным битрейтом:
ffmpeg -i in.mp4 -q:a 0 -map a out.mp3
Параметр -q:a 0
обеспечивает лучшее качество за счёт использования переменного битрейта.
Учитывая отсутствие видеоданных:
ffmpeg -i video.mp4 -vn audio.mp3
Параметр -vn
указывает FFmpeg игнорировать видеодорожку и работать только с аудио.
Применение
Для практического применения FFmpeg в среде Windows можно использовать сценарии командной строки (bat-файлы) для автоматизации процесса. Вот пример скрипта:
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
:: Check if a path is provided as a command line argument
IF "%~1"=="" (
SET "WORKING_DIR=%CD%"
) ELSE (
SET "WORKING_DIR=%~1"
)
:: Change to the working directory
PUSHD "%WORKING_DIR%"
:: Extracts the audio track including all metatags from the video file
FOR %%I in ("*.mp4") DO (
:: Retrieve the input video file audio codec
FOR /F "tokens=*" %%J IN ('"ffprobe -v error -select_streams a:0 -show_entries stream=codec_name -of default=noprint_wrappers=1:nokey=1 "%%I""') DO SET "codec=%%J"
IF "!codec!"=="aac" (
ffmpeg -hide_banner -i "%%I" -movflags use_metadata_tags -map 0:a -c copy "%%~nI.m4a"
) ELSE (
ffmpeg -hide_banner -i "%%I" -movflags use_metadata_tags -map 0:a -c copy "%%~nI.mp3"
)
)
:: Return to the original directory
POPD
EXIT /B
Этот скрипт автоматически извлекает аудио из всех MP4-файлов в указанной директории и сохраняет их в формате MP3 или M4A в зависимости от кодека. Такое решение позволяет избежать старения командой строки вручную каждый раз.
Заключение
Конвертация MP4 в MP3 с помощью FFmpeg — это мощный инструмент, который может быть полезен в различных сценариях, от оптимизации медиаколлекций до облегчения совместимости с аудиопроигрывателями. Использование FFmpeg требует понимания синтаксиса командной строки, но предоставляет высокую степень контроля и качества выхода. Если команда приводит к ошибкам или некорректным результатам, всегда рекомендуется проверять журналы ошибок FFmpeg, чтобы понять, в чём проблема.