Я попробовал следующую команду, чтобы извлечь аудио из видео:
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
Кто-нибудь может помочь, пожалуйста?
Для кодирования высококачественного MP3 из AVI лучше всего использовать -q: a для переменной битовой скорости:
Если вы хотите извлечь часть аудио из видео, используйте опцию -ss, чтобы указать начальную метку времени, и опцию -t, чтобы указать длительность кодирования, например, от 3 минут до 5 секунд в течение 45 секунд:
Метки времени должны быть в формате ЧЧ: ММ: СС.ххх или в секундах.
Если вы не укажете опцию -t, она пойдет до конца.
Рабочий пример:
источник
-q:a
значений: trac.ffmpeg.org/wiki/Encode/MP3 Ноль - это настройка VBR самого высокого качества, которая обычно приводит к средним битрейтам в верхней части диапазона нормального CBR (где 320 кбит / с - это максимум, возможно, немного выше точки, в которой сжатие без потерь становится более подходящим).-map a
?-vn
не работает.Командная строка верна и работает с действительным видеофайлом. Я хотел бы убедиться, что вы установили правильную библиотеку для работы с mp3, установите lame o probe с другим аудиокодеком.
Обычно
или
даст достаточно информации, чтобы вы знали больше.
источник
ffmpeg -i sample.avi
предоставит вам информацию о формате аудио / видео для вашего файла. Убедитесь, что у вас есть правильные библиотеки, сконфигурированные для анализа входных потоков. Также убедитесь, что файл не поврежден.источник
Для кодирования mp3 аудио ffmpeg.org показывает следующий пример:
Я извлек аудио из видео, просто заменив
input.wav
имя файла видео.2
Средства 190 кб / сек. Вы можете увидеть другие уровни качества по моей ссылке выше.источник
Вот что я только что использовал:
Варианты объяснения:
-map 0:3
означает, что я хочу 3-й поток из видео файла. Поместите туда N - видеофайлы часто имеют несколько аудиопотоков; Вы можете опустить его или использовать,-map 0:a
чтобы взять аудио поток по умолчанию. Запустите,ffprobe my.mkv
чтобы увидеть, какие потоки есть в видеофайле.источник
Просто предположение:
должно быть
Кажется, это может быть проблемой, но, возможно, ffmpeg достаточно умен, чтобы исправить это.
источник
Если для начала аудио, записанное в avi, не имеет формата mp3, вам может потребоваться указать его
-acodec mp3
в качестве дополнительного параметра. Или каким бы ни был ваш кодек mp3 (вероятно, в системах Linux-acodec libmp3lame
). Вы также можете получить тот же эффект, независимый от платформы, указав вместо этого-f mp3
«форсировать» формат в формате mp3, хотя не все версии ffmpeg все еще поддерживают этот переключатель. Ваш пробег может меняться.источник
Для извлечения без преобразования я использую пункт контекстного меню - как пользовательское действие файлового менеджера в Linux - для запуска следующего (после проверки, какой тип аудио содержит видео; пример для видео, содержащего
ogg
аудио):который основан на команде ffmpeg
ffmpeg -i INPUT -map 0:a -c:a copy OUTPUT
.Я использовал
-map 0:1
это без проблем, но, как сказано в комментарии @LordNeckbeard, «поток0:1
не всегда будет аудио. Использование-map 0:a
вместо этого-map 0:1
позволит избежать двусмысленности».источник
0:1
не гарантированно всегда будет аудио. Использование-map 0:a
вместо-map 0:1
позволит избежать двусмысленности.mediainfo
чтобы определить звуковую дорожку, и выбрал ее следующим образом:-map 0:a:1
где: 1 - индекс второй звуковой дорожки, спасибо!-c:a copy
сделал это намного быстрее!Для людей, которые ищут более простой способ извлечения аудио из видеофайла при сохранении параметров исходного видеофайла, вы можете использовать:
Например, работает:
извлекает
mp3
аудиофайл изmov
видеофайла.источник
Используйте
-b:a
вместо ,-ab
как-ab
устарел сейчас, и убедитесь , что ваш путь входного файла является правильным.Для извлечения аудио из видео я использовал команду ниже, и она работает нормально.
Вот,
-y
- Перезаписать выходные файлы без запроса.-i
- FFmpeg читает из произвольного числа входных «файлов», указанных-i
опцией-vn
- отключить запись видео-ar
- устанавливает частоту дискретизации для аудиопотоков, если они закодированы-ac
- Установите количество аудиоканалов.-b:a
- установить битрейт аудио-f
- форматПроверьте это для моего полного примера проекта Android FFmpeg на GitHub.
источник