Использование ffmpeg для кодирования видео в формат кодека H264 - PullRequest
34 голосов
/ 15 апреля 2011

У меня есть видеофайл * .mp4 (видеокодек MPEG4), и я пытаюсь преобразовать его в формат видеокодека H264 (формат raw h.264), используя ffmpeg в Linux (Версия - FFmpeg версия SVN-r0.5.1-4: 0.5.1-1ubuntu1, Copyright (c) 2000-2009 Фабрис Беллард,) с использованием командной строки, как показано ниже,

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

И затем она выводит справку о форматах, которые мы получаем, когда мыdo 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

Мои вопросы:

  1. Как я могу преобразовать видео в кодированное видео H264 (необработанный видеоформат H264)

  2. Когда я делаю ffmpeg -formats, я вижу много сокращений для поддерживаемых кодековЯ вижу много сокращений перед названием / типом кодека, например - DVDSEA, что они обозначают?

  3. Как использовать опцию ffmpegнс -vcodec и -formats?

Ответы [ 5 ]

29 голосов
/ 15 апреля 2011

Я полагаю, у вас установлено libx264 и настроено ffmpeg для преобразования видео в h264 ... Тогда вы можете попробовать с -vcodec libx264 ... Опция -format предназначена для отображения доступных форматов, это я думаю, это не вариант конвертации ...

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

Я использовал эти опции для преобразования в формат H.264 / AAC .mp4 для воспроизведения HTML5 (я думаю, что это может помочь другим парням с этой проблемой в некотором роде):

ffmpeg -i input.flv -vcodec mpeg4 -acodec aac output.mp4

UPDATE

Как упомянул @LordNeckbeard, предыдущая строка выдаст MPEG-4 Part 2 (еще в 2012 году это работало как-то, я не помню / не понимаю почему). Используйте кодер libx264 для получения правильного видео с H.264 / AAC . Чтобы проверить выходной файл, вы можете просто перетащить его в окно браузера, и оно должно воспроизводиться очень хорошо.

ffmpeg -i input.flv -vcodec libx264 -acodec aac output.mp4

3 голосов
/ 25 февраля 2013
"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 определяет, что аудио должно быть пропущено.

3 голосов
/ 23 сентября 2012

Я полагаю, что к настоящему времени приведенные выше ответы устарели (или, по крайней мере, неясны), так что вот мой маленький вопрос. Я попытался скомпилировать 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 означает кодирование

0 голосов
/ 24 октября 2012

У меня есть система Centos 5, над которой я не смог заставить это работать. Поэтому я создал новую систему Fedora 17 (фактически виртуальную машину в 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 от размера!

...