Ви кажете, що хочете "витягти з них аудіо (mp3 або ogg)". Але що робити, якщо аудіо у файлі mp4 не з них? вам доведеться все одно перекодувати. То чому б не залишити аудіоформат до ffmpeg?
Щоб конвертувати один файл:
ffmpeg -i videofile.mp4 -vn -acodec libvorbis audiofile.ogg
Щоб конвертувати багато файлів:
for vid in *.mp4; do ffmpeg -i "$vid" -vn -acodec libvorbis "${vid%.mp4}.ogg"; done
Звичайно, ви можете вибрати будь-які параметри ffmpeg для кодування звуку, які вам подобаються, встановити такі речі, як бітрейт та інше.
Використовуйте -acodec libmp3lame
та змініть розширення з .ogg
на .mp3
на кодування mp3.
Якщо ви хочете дійсно витягнути аудіо, ви можете просто "скопіювати" аудіозапис у файл, використовуючи -acodec copy
. Звичайно, головна відмінність полягає в тому, що перекодування є повільним та процесорно-інтенсивним, тоді як копіювання дійсно швидке, оскільки ви просто переміщаєте байти з одного файлу в інший. Ось як скопіювати лише аудіозапис (якщо припустити, що це у форматі mp3):
ffmpeg -i videofile.mp4 -vn -acodec copy audiofile.mp3
Зверніть увагу , що в цьому випадку аудіофайл формату повинен бути послідовним з тим, що контейнер має (тобто , якщо аудіо формат AAC, ви повинні сказати audiofile.aac
). Ви можете скористатися ffprobe
командою, щоб побачити, який у вас кодек, це може містити певну інформацію:
ffprobe -v error -select_streams a:0 -show_entries stream=codec_name -print_format csv=p=0 "videofile.mp4"
Можливим способом автоматичного розбору звукового кодеку та відповідного іменування аудіофайлу буде такий:
mkdir -p output
# current directory has to contain at least one .mp4 file
for vid in *.mp4; do
codec="$(ffprobe -v error -select_streams a:0 -show_entries stream=codec_name -print_format csv=p=0 "$vid")"
case "$codec" in
mp3 ) filetype=mp3 ;;
vorbis ) filetype=ogg ;;
* ) filetype= ;;
esac
if [ "$filetype" ]; then
ffmpeg -i "$vid" -vn -acodec copy output/"${vid%.*}"."$filetype"
else
ffmpeg -i "$vid" -vn -acodec libvorbis output/"${vid%.*}".ogg
done
Примітки: вихідні файли створюються в підкаталозі, який output
він створює на початку (якщо необхідно). Для інших кодеків, крім mp3 та vorbis, він перетворює аудіо в ogg. Ubuntu 14.04 не має ffmpeg у стандартних сховищах, але ви можете додати ppa: mc3man / trusty-media сховище та встановити пакет ffmpeg, щоб отримати необхідне програмне забезпечення. Детальніше дивіться тут .