Использование ffmpeg для кодирования видео в формате кодека H264
У меня есть видеофайл *.mp4 (видеокодек MPEG4), и я пытаюсь преобразовать его в формат видеокодека H264 (формат raw h.264), используя ffmpeg для Linux (версия - версия FFmpeg SVN-r0.5.1 -4: 0.5.1-1ubuntu1, Copyright (c) 2000-2009 Fabrice Bellard,) используя командную строку, как показано ниже,
ffmpeg -i input .mp4 output.h264
но я получаю сообщение об ошибке -
Unsupported codec for output stream #0.0
Затем, когда я пробую эту опцию:
ffmpeg -i input .mp4 -formats h264 output.h264
он по-прежнему не работает, и дает -
Seems stream 0 codec frame rate differs from container frame rate: 59.94 (5994/100) -> 29.97 (30000/1001)
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'Rapture.mp4':
Duration: 00:02:06.44, start: 0.000000, bitrate: 26574 kb/s
Stream #0.0(eng): Video: h264, yuv420p, 1920x1080, 29.97 tbr, 29.97 tbn, 59.94 tbc
Stream #0.1(eng): Audio: aac, 48000 Hz, stereo, s16
И затем он распечатывает справку о форматах, которые мы получаем, когда делаем ffmpeg -formats
Когда я проверил справку, ffmpeg -formats
, я вижу ниже информацию о формате файла H264 и кодеке:
File format :
DE h264 raw H.264 video format
Codecs:
D V D h264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10
Мои вопросы:
-
Как конвертировать видео в видео в формате H264 (исходный формат видео H264)
-
Когда я делаю ffmpeg -formats
, я вижу много сокращений для поддерживаемых кодеков, я вижу много аббревиатур перед именем/типом кодека, например, - DVDSEA, для чего они стоят?
-
Как использовать параметры ffmpeg -vcodec
и -formats
?
Ответы
Ответ 1
Я полагаю, что у вас есть libx264
установлен и настроен с помощью ffmpeg
для преобразования видео в h264
... Затем вы можете попробовать с помощью -vcodec libx264
... Параметр -format
предназначен для отображения доступных форматов, этот это не вариант конверсии, я думаю...
Ответ 2
Это параметры, которые я использовал для преобразования в формат H.264/AAC.mp4 для воспроизведения html5 (я думаю, что это может помочь другим парням с этой проблемой в некотором роде):
ffmpeg -i input.flv -vcodec mpeg4 -acodec aac output.mp4
Ответ 3
"C:\Program Files (x86)\ffmpegX86shared\bin\ffmpeg.exe" -y -i "C:\testfile.ts" -an -vcodec libx264 -g 75 -keyint_min 12 -vb 4000k -vprofile high -level 40 -s 1920x1080 -y -threads 0 -r 25 "C:\testfile.h264"
Выше работали для меня на Windows-машине, используя совместную сборку FFmpeg Win32 от Kyle Schwarz. Сборка была составлена: 22 февраля 2013 года, по: 01:09:53
Обратите внимание, что -an определяет, что звук должен быть пропущен.
Ответ 4
Я считаю, что на данный момент вышеупомянутые ответы устарели (или, по крайней мере, неясны), так что здесь мои малые идут на это.
Я попытался скомпилировать ffmpeg с параметром --enable-encoders=libx264
, и он не даст никаких ошибок, но он ничего не даст (я не могу найти, где нашел это предложение).
В любом случае, шаг за шагом, сначала вы должны сами компилировать libx264, поскольку версия репозитория устарела:
wget ftp://ftp.videolan.org/pub/x264/snapshots/last_x264.tar.bz2
tar --bzip2 -xvf last_x264.tar.bz2
cd x264-snapshot-XXXXXXXX-XXXX/
./configure
make
sudo make install
И затем получите и скомпилируйте ffmpeg с включенным libx264.
Я использую последнюю версию, которая является "Счастье":
wget http://ffmpeg.org/releases/ffmpeg-0.11.2.tar.bz2
tar --bzip2 -xvf ffmpeg-0.11.2.tar.bz2
cd ffmpeg-0.11.2/
./configure --enable-libx264 --enable-gpl
make
sudo install
Теперь, наконец, у вас есть кодек libx264 для кодирования, чтобы проверить его, вы можете запустить
ffmpeg -codecs | grep h264
и вы увидите, что параметры, которые у вас были, - это первый декодирование D, а первый E означает кодирование
Ответ 5
У меня есть система Centos 5, на которую я не мог работать. Поэтому я построил новую систему Fedora 17 (фактически VM в VMware) и выполнил шаги сайта ffmpeg, чтобы построить последнюю и самую лучшую ffmpeg,
Я взял несколько ярлыков - я пропустил все команды стирания yum, добавил freshrpms в соответствии с их инструкциями:
wget http://ftp.freshrpms.net/pub/freshrpms/fedora/linux/9/freshrpms-release/freshrpms-release-1.1-1.fc.noarch.rpm
rpm -ivh rpmfusion-free-release-stable.noarch.rpm
Затем я загрузил все, что было уже доступно:
yum install lame libogg libtheora libvorbis lame-devel libtheora-devel
Впоследствии, я только построил следующее с нуля: libvpx vo-aacenc-0.1.2 x264 yasm-1.2.0 ffmpeg
Затем эта команда закодирована без проблем (звук уже был в AAC, поэтому я не перекодировал его):
ffmpeg -i input.mov -c:v libx264 -preset slow -crf 22 -c:a copy output.mp4
Результат выглядит так же хорошо, как оригинал для меня, и составляет около 1/4 от размера!