ffmpeg для извлечения аудио из видео - PullRequest
172 голосов
/ 28 марта 2012

Я пробовал следующую команду для извлечения аудио из видео:
ffmpeg -i Sample.avi -vn -ar 44100 -ac 2 -ab 192k -f mp3 Sample.mp3

, но я получаю вывод как

libavutil     50.15. 1 / 50.15. 1
libavcodec    52.72. 2 / 52.72. 2
libavformat   52.64. 2 / 52.64. 2
libavdevice   52. 2. 0 / 52. 2. 0
libavfilter    1.19. 0 /  1.19. 0
libswscale     0.11. 0 /  0.11. 0
libpostproc   51. 2. 0 / 51. 2. 0
SamplE.avi: Invalid data found when processing input

Может кто-нибудь помочь, пожалуйста?

Ответы [ 12 ]

323 голосов
/ 11 декабря 2014

Для извлечения аудиопотока без перекодирования:

ffmpeg -i input-video.avi -vn -acodec copy output-audio.aac
  • -vn - это не видео.
  • -acodec copy говорит, что использовать тот же аудиопоток, который уже есть.

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

91 голосов
/ 31 марта 2016

Для кодирования высококачественного MP3 из AVI лучше всего использовать -q: для переменной битовой скорости:

ffmpeg -i sample.avi -q:a 0 -map a sample.mp3

Если вы хотите извлечь часть аудиоиз видео используйте параметр -ss , чтобы указать начальную метку времени, и параметр -t , чтобы указать длительность кодирования, например, от 3 минут и 5 секунд для 45секунды:

ffmpeg -i sample.avi -ss 00:03:05 -t 00:00:45.0 -q:a 0 -map a sample.mp3
  • Метки времени должны быть в формате ЧЧ: ММ: СС.ххх или в секундах.

  • Если вы не укажете опцию -t , она будет завершена.

12 голосов
/ 29 марта 2012

Командная строка верна и работает с действительным видеофайлом.Я хотел бы убедиться, что вы установили правильную библиотеку для работы с mp3, установите lame o датчик с другим аудиокодеком.

Обычно

ffmpeg -formats

или

ffmpeg -codecs

даст достаточно информации, чтобы вы знали больше.

12 голосов
/ 28 марта 2012

ffmpeg -i sample.avi предоставит вам информацию о формате аудио / видео для вашего файла. Убедитесь, что у вас есть правильные библиотеки, настроенные для анализа входных потоков. Также убедитесь, что файл не поврежден.

6 голосов
/ 13 декабря 2016

Для кодирования аудио в формате mp3 ffmpeg.org показывает следующий пример:

ffmpeg -i input.wav -codec:a libmp3lame -qscale:a 2 output.mp3

Я извлек аудио из видео, просто заменив input.wav именем файла видео. 2 означает 190 кбит / с. Другие уровни качества вы можете увидеть по моей ссылке выше.

2 голосов
/ 29 октября 2014

Если для начала аудио, записанное в avi, не имеет формата mp3, вам может потребоваться указать -acodec mp3 в качестве дополнительного параметра.Или каким бы ни был ваш кодек mp3 (в системах Linux его, вероятно, -acodec libmp3lame).Вы также можете получить тот же эффект, независимый от платформы, указав вместо -f mp3 «принудительный» формат mp3, хотя не все версии ffmpeg все еще поддерживают этот параметр.Ваш пробег может меняться.

2 голосов
/ 26 декабря 2013

Просто предположение:

-ab 192

должно быть

-ab 192k

Кажется, это может быть проблемой, но, возможно, ffmpeg достаточно умен, чтобы исправить это.

1 голос
/ 17 мая 2018

Для извлечения без преобразования я использую пункт контекстного меню - как пользовательское действие файлового менеджера в Linux - для запуска следующего (после проверки, какой тип аудио содержит видео; пример для видео, содержащего ogg audio):

bash -c 'ffmpeg -i "$0" -map 0:a -c:a copy "${0%%.*}".ogg' %f 

, основанный на команде ffmpeg ffmpeg -i INPUT -map 0:a -c:a copy OUTPUT.

Я использовал -map 0:1 в этом без проблем, но, как сказано в комментарии @LordNeckbeard, "Поток 0:1 не обязательно всегда будет аудио. Использование -map 0:a вместо-map 0:1 позволит избежать двусмысленности. "

1 голос
/ 08 апреля 2017

Используйте -b:a вместо -ab, поскольку -ab устарело. Убедитесь, что путь к входному файлу указан правильно.

Чтобы извлечь аудио из видео, я использовал приведенную ниже команду и она работает нормально..

String[] complexCommand = {"-y", "-i", inputFileAbsolutePath, "-vn", "-ar", "44100", "-ac", "2", "-b:a", "256k", "-f", "mp3", outputFileAbsolutePath};

Здесь

-y

Перезаписать выходные файлы без запроса.

-i

ffmpeg читает изпроизвольное количество входных «файлов», указанное параметром -i

-vn

Отключить запись видео

-ar

устанавливает частоту дискретизации для аудиоесли потоки закодированы

-ac

Установите количество аудиоканалов.

-b: a

Установите битрейт аудио

-f

format

Проверьте this для моего полного примера проекта ffmpeg для Android на github.

0 голосов
/ 01 мая 2019

Вот что я только что использовал:

ffmpeg -i input.mkv -ss 01:06:57 -to 01:21:07 -c:v copy -c:a copy output.mp4

Ссылка: https://www.arj.no/2018/05/18/trimvideo/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...