ffmpeg usage to encode a video to H264 codec format

后端 未结 5 1800
醉梦人生
醉梦人生 2021-01-30 06:42

I have a *.mp4 video file(MPEG4 video codec) and I am trying to convert this to a H264 video codec format(raw h.264 format) using ffmpeg on Linux(Version - FFmpeg version SVN-r0

相关标签:
5条回答
  • 2021-01-30 07:06

    I believe you have libx264 installed and configured with ffmpeg to convert video to h264... Then you can try with -vcodec libx264... The -format option is for showing available formats, this is not a conversion option I think...

    0 讨论(0)
  • 2021-01-30 07:07

    I have a Centos 5 system that I wasn't able to get this working on. So I built a new Fedora 17 system (actually a VM in VMware), and followed the steps at the ffmpeg site to build the latest and greatest ffmpeg.

    I took some shortcuts - I skipped all the yum erase commands, added freshrpms according to their instructions:

    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
    

    Then I loaded the stuff that was already readily available:

    yum install lame libogg libtheora libvorbis lame-devel libtheora-devel
    

    Afterwards, I only built the following from scratch: libvpx vo-aacenc-0.1.2 x264 yasm-1.2.0 ffmpeg

    Then this command encoded with no problems (the audio was already in AAC, so I didn't recode it):

    ffmpeg -i input.mov -c:v libx264 -preset slow -crf 22 -c:a copy output.mp4
    

    The result looks just as good as the original to me, and is about 1/4 of the size!

    0 讨论(0)
  • 2021-01-30 07:11
    "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"
    

    The above worked for me on a Windows machine using a FFmpeg Win32 shared build by Kyle Schwarz. The build was compiled on: Feb 22 2013, at: 01:09:53

    Note that -an defines that audio should be skipped.

    0 讨论(0)
  • 2021-01-30 07:20

    I believe that by now the above answers are outdated (or at least unclear) so here's my little go at it. I tried compiling ffmpeg with the option --enable-encoders=libx264 and it will give no error but it won't enable anything (I can't seem to find where I found that suggestion).

    Anyways step-by-step, first you must compile libx264 yourself because repository version is outdated:

      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
    

    And then get and compile ffmpeg with libx264 enabled. I'm using the latest release which is "Happiness":

    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
    

    Now finally you have the libx264 codec to encode, to check it you may run

    ffmpeg -codecs | grep h264
    

    and you'll see the options you have were the first D means decoding and the first E means encoding

    0 讨论(0)
  • 2021-01-30 07:21

    I used these options to convert to the H.264/AAC .mp4 format for HTML5 playback (I think it may help other guys with this problem in some way):

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

    UPDATE

    As @LordNeckbeard mentioned, the previous line will produce MPEG-4 Part 2 (back in 2012 that worked somehow, I don't remember/understand why). Use the libx264 encoder to produce the proper video with H.264/AAC. To test the output file you can just drag it to a browser window and it should playback just fine.

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

    0 讨论(0)
提交回复
热议问题