2012-03-28 4 views
113

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

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

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 

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

ответ

8

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

+0

сейчас, я получил правильный результат, когда я попробовал тот же комментарий с .mkv vedio.почему он не работает для .avi, есть ли какая-либо команда ffmpeg для преобразования .avi – user1269669

+1

AVI или MKV относится к формату контейнера, который может содержать множество различных аудио/видео форматов. Вы не хотите конвертировать аудио AVI, вы хотите преобразовать звуковую дорожку в файл AVI, который вы еще не указали. Используйте приведенную выше команду, чтобы увидеть, какая звуковая дорожка находится в файле AVI. Если это MP3, вам нужно скомпилировать FFMPEG с библиотекой MP3, такой как LAME http://lame.sourceforge.net/ – smp

10

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

Обычно

ffmpeg -formats 

или

ffmpeg -codecs 

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

2

Только предположение:

-ab 192 

должен быть

-ab 192k 

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

+1

Действительный комментарий, и я редактировал вопрос OP, чтобы изменить его, но это ничего не меняет (на В большинстве случаев это вызывает предупреждение). –

1

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

208

Если вы просто хотите, чтобы извлечь аудио потока без перекодирования просто сделать:

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

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

+19

и вместо того, чтобы запускать ffmpeg в первый раз, просто чтобы проверить, какой аудиопоток он есть, используйте ffprobe input-video.avi – FlorianB

+1

Если вы извлекаете аудио только из видеопотока, длина аудио может быть короче длины видео , Чтобы убедиться, что этого не происходит, извлеките аудио и видео с тем же вызовом в ffmpeg, например. "ffmpeg -i vid.avi -map 0: a audio.wav -map 0: v onlyvideo.avi – BlenderBender

+0

Это работает для меня. – Sam

62

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

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 
  • меток времени должны быть в формате ЧЧ: SS.xxx или в секундах: ММ.

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

+0

Вот руководство для значений' -q: a': https: //trac.ffmpeg .org/wiki/Encode/MP3 Zero - это самое высокое качество VBR, которое обычно приводит к средним битрейтам в верхней части разумного диапазона CBR (где 320 кбит/с является максимальным, вероятно, немного выше точки, в которой сжатие без потерь становится более подходящим). –

3

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

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

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

0

Использовать -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: а

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

-f

формат

Заканчивать this для моего полного образца FFmpeg андроида проекта GitHub.

Смежные вопросы