Sunday, March 15, 2009

FFmpeg SVN-r17988-Komeil for Windows

The latest FFmpeg for Windows compilation by Komeil as of March 15, 2009 based on SVN-r17988 is ready for download at Komeil’s FFmpeg archive.

Download Link
  • Download FFmpeg r17988 Komeil as a 3.04 MB (3,188,279 bytes) CAB file which will extract to a 9.54 MB (10,009,619 bytes) EXE file
Komeil’s Statically-Built External Libraries

This compilation is done using GCC 4.3.0 20080305 / MinGW 20080502 for Win32. The GCC-built archives of statically-linkable external libraries used in this compilation are available for download at Komeil’s FFmpeg libraries archive. Also you can find direct download links to each static library in “Build Version” column of “External Libraries” table below. Once downloaded successfully, you need to extract them right into your “MinGW” folder, since the CAB archives include LIB (containing .a library files) and INCLUDE (containing .h header files) directories fittingly. Please note FFmpeg is a stand-alone portable executable, and these libraries are provided for experimentalists interested in compiling FFmpeg by themselves.

About FFmpeg

FFmpeg is a complete, cross-platform solution to record, convert and stream audio and video. It includes libavcodec, the leading audio/video codec library.

Compilation Technical Information

configuration: --enable-memalign-hack --extra-cflags=-fno-common --enable-static --disable-shared --disable-debug --enable-gpl --enable-nonfree --enable-avfilter --enable-avfilter-lavf --enable-avisynth --enable-postproc --enable-pthreads --enable-libamr-nb --enable-libamr-wb --enable-libgsm --enable-libfaac --enable-libfaad --enable-libmp3lame --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid

FFmpeg Internal Libraries

These are the libraries FFmpeg is basically packed with:

Name Version
libavutil 50.0.0
libavcodec 52.21.0
libavformat 52.31.1
libavdevice 52.1.0
libavfilter 0.4.0
libswscale 0.7.1
libpostproc 51.2.0

External Libraries

Under “Build Version” column you can find direct download links to each static library used is this FFmpeg compilation:

Name Library Build Version Notes
AMR NB libamr-nb amrnb 7.0.0.2 3GPP AMR narrowband
AMR WB libamr-wb amrwb 7.0.0.3 3GPP AMR wideband
BZip2 bzlib bzip2 1.0.5 BZ2
FAAC libfaac faac 1.26 MPEG-4 and MPEG-2 AAC encoder
FAAD libfaad faad 2.6.1 MPEG-4 and MPEG-2 AAC decoder
GPAC libgpac   Required by libx264
GSM libgsm gsm 1.0.12 GSM
LAME libmp3lame lame 3.98.2 MPEG-1 Layer 3 (MP3)
OGG libogg ogg 1.1.3 Required by libvorbis
OIL liboil oil 0.3.15 Required by libschroedinger
POSIX Threads pthreads pthreads 2.8.0 Required by libx264
Schrödinger libschroedinger schroedinger 1.0.5 BBC Dirac Schroedinger
Speex libspeex speex 1.2rc1 Xiph SPX
Theora libtheora theora svn-r15330 Xiph OGV
Vorbis libvorbis vorbis 1.2.0 Xiph OGG/OGA/OGX
x264 libx264 x264 git-r1099 H.264/AVC
Xvid libxvid xvidcore 1.2.1 MPEG-4 Part 2 ASP (DivX)
ZLib zlib zlib 1.2.3 Deflate - Required by FFmpeg & libgpac

MinGW

This is the list of all the Minimalist GNU for Windows and other GNU toolchain used to compile and build FFmpeg SVN-r17988-Komeil and its external libraries:

Name Version Notes
bash 3.1  
binutils 2.19.1  
coreutils 5.97  
gcc 4.3.0  
glib 2.18.3 Required by libschroedinger
make 3.81  
mingwrt 3.15.2  
msys 1.0.11  
msysdtk 1.0.1 Required by libfaac, libfaad, libtheora & libvorbis
msysgit 1.6.2 Required by libx264
nasm 2.06rc1 Required by libmp3lame & libx264
pkg-config 0.23 Required by libschroedinger & libvorbis
w32api 3.13  
wget 1.5.3.1 Required by libamr-nb & libamr-wb
unzip 5.52 Required by libamr-nb & libamr-wb

Supported File Formats

This is the list of all media formats FFmpeg SVN-r17988-Komeil can decode from and/or encode to:

Name Description Decode Encode
3g2 3GP2 format   X
3gp 3GP format   X
4xm 4X Technologies format X  
IFF IFF format X  
ISS Funcom ISS format X  
MTV MTV format X  
RoQ raw id RoQ format X X
aac raw ADTS AAC X  
ac3 raw AC-3 X X
adts ADTS AAC   X
aiff Audio IFF X X
alaw PCM A-law format X X
amr 3GPP AMR file format X X
apc CRYO APC format X  
ape Monkey’s Audio X  
asf ASF format X X
asf_stream ASF format   X
ass SSA/SS format X X
au SUN AU format X X
avi AVI format X X
avm2 Flash 9 (AVM2) format   X
avs AVISynt X  
bethsoftvid Bethesda Softworks VID format X  
bfi Brute Force & Ignorance X  
c93 Interplay C93 X  
cavsvideo raw Chinese AVS video X  
crc CRC testing format   X
daud D-Cinema audio format X X
dirac raw Dirac X X
dnxhd raw DNxHD (SMPTE VC-3) X X
dsicin Delphine Software International CIN format X  
dts raw DTS X X
dv DV video format X X
dvd MPEG-2 PS format (DVD VOB)   X
dxa DXA X  
ea Electronic Ars Multimedia Format X  
ea_cdata Electronic Arts cdata X  
eac3 raw E-AC-3 X X
f32be PCM 32 bit floating-point big-endian format X X
f32le PCM 32 bit floating-point little-endian format X X
f64be PCM 64 bit floating-point big-endian format X X
f64le PCM 64 bit floating-point little-endian format X X
ffm FFM (FFserver live feed) format X X
film_cpk Sega FILM/CPK format X  
flac raw FLAC X X
flic FLI/FLC/FLX animation format X  
flv FLV format X X
framecrc framecrc testing format   X
gif GIF Animation   X
gsm raw GSM X  
gx GXF format X X
h261 raw H.261 X X
h263 raw H.263 X X
h264 raw H.264 video format X X
idcin id Cinematic format X  
image2 image2 sequence X X
image2pipe piped image2 sequence X X
ingenient raw Ingenient MJPEG X  
ipmovie Interplay MVE format X  
ipod iPod H.264 MP4 format   X
lmlm4 lmlm4 raw format X  
m4v raw MPEG-4 video format X X
matroska Matroska file format X X
mjpeg raw MJPEG video X X
mlp raw MLP X  
mm American Laser Games MM format X  
mmf Yamaha SMAF X X
mov MOV format   X
mov,mp4,m4a,3gp,3g2,mj2 QuickTime/MPEG-4/Motion JPEG 2000 format X  
mp2 MPEG udio layer 2   X
mp3 MPEG audio layer 3 X X
mp4 MP4 format   X
mpc Musepack X  
mpc8 Musepack SV8 X  
mpeg MPEG-1 System forma X X
mpeg1video raw MPEG-1 video   X
mpeg2video raw MPEG-2 video   X
mpegts MPEG-2 transport stream format X X
mpetsraw MPEG-2 raw transport stream format X  
mpegvideo raw MPEG video X  
mpjpeg MIME multipart JPEG format   X
msnwctcp MSN TCP Webcam stream X  
mulaw PCM mu-law format X X
mvi Motion Pixels VI format X  
mxf Material eXchange Format X X
mxf_d10 Material eXchange Format, D-10 Mapping   X
nc NC camera feed format X  
nsv Nullsoft Streaming Video X  
null raw null video format   X
nut NUT format X X
nuv NuppelVideo format X  
ogg Ogg X X
oma Sony OpenMG audio X  
psp PSP MP4 format   X
psxstr Sony Playstation STR format X  
pva TechnoTrend PVA file and stream format X  
r3d REDCODE R3D format X  
rawvideo raw video format X X
rcv VC-1 test bitstream   X
redir Redirector format X  
rl2 RL2 format X  
rm RealMedia format X X
rpl RPL/ARMovie format X  
rt RTP output format   X
rtsp RTSP input format X  
s16be PCM signed 16 bit big-endian format X X
s16le PCM signed 16 bit little-endian format X X
s24be CM signed 24 bit big-endian format X X
s24le PCM signed 24 bit little-endian format X X
s32be PCM signed 32 bit big-endian format X X
s32le PCM signed 32 bit little-endian format X X
s8 PCM signed 8 bit format X X
sdp SDP X  
shn raw Shorten X  
siff Beam Software SIFF X  
smk Smacker video X  
sol Sierra SOL format X  
svcd MPEG-2 PS format (VOB)   X
swf Flash format X X
thp THP X  
tiertexseq Tiertex Limited SEQ format X  
tta True Audio X  
txd Renderware TeXture Dictioary X  
u16be PCM unsigned 16 bit big-endian format X X
u16le PCM unsigned 16 bit little-endian format X X
u24be PCM unsigned 24 bit big-endian format X X
u24le PCM unsigned 24 bit little-endian format X X
u32be PCM unsigned 32 bit big-endian format X X
u32le PCM unsigned 32 bit little-endian format X X
u8 PCM unsigned 8 bit format X X
vc1 raw VC-1 X  
vc1test VC-1 test bitstream format X  
vcd MPEG-1 System format (VCD)   X
vfwcap VFW video capture X  
vmd Sierra VMD format X  
vob MPEG-2 PS format (VOB)   X
voc Creative Voice file format X X
vqf Nippon Telegraph and elephone Corporation (NTT) TwinVQ X  
wav WAV format X X
wc3movie Wing Commander III movie format X  
wsaud Westwood Studios audio format X  
wsvqa Westwood Studios VQA format X  
wv WavPack X  
xa Maxis XA File Format X  
yuv4mpegpipe YUV4MPEG pipe format X X

20 comments:

  1. great,

    I have been breaking my head to get amr to work on ffmpeg for windows.

    finally it works on windows ..thanks to komeil

    I used the command as below

    ffmpeg -i tawwab.mp3 -acodec libamr_nb -ar 8000 -ab 12.2k tawwab.amr

    and it went fine and created a amr audio file.

    and then tried this command below

    ffmpeg -i test.flv -vcodec h263 -r 15 -b 32k -s 176x144 -acodec libamr_nb -ar 8000 -ac 1 -ab 12.2k tawwab.3gp

    worked as well...

    thanks to komeil...amr and 3gp worked.

    ReplyDelete
  2. Dear Younus,

    To improve your first command (MP3 to AMR conversion) and make it flawless, add "-f amr" to force output format to AMR, and add "-ac 1" to specify monaural (mono-channel) audio. Yours fails if the input MP3 is stereo!

    To improve the second command (FLV to 3GP), add "-f 3gp" to force format to 3GP, and increase "-b 32k" up to 339k for a better mobile playback quality.

    To know more about 3GP conversion, read my new post.

    ReplyDelete
  3. Dear Komeil,

    >> To improve your first command (MP3 to AMR conversion) and make it flawless, add "-f amr" to force output format to AMR ...

    did not play any sound on 4 different mm players including mplayer.

    But played well when replacing -f amr to -f 3gp

    Khaled
    http://www.hellway.com

    ReplyDelete
  4. Hi Komeil,
    Because I am newbie on compiling ffmpeg, can you please post ffmpeg source tree with external libraries?

    ReplyDelete
  5. Hi Kabil,
    This is the best wiki about building FFmpeg with external libraries: http://ffmpeg.arrozcru.org/wiki/index.php?title=Using_External_Libraries
    I'm going to modify this post to include the libraries. Check back in an hour.

    ReplyDelete
  6. Can FFmpeg convert a QCELP (Qualcomm .QCP PureVoice) audio file from a cell phone to standard WAV format? I've tried:

    ffmpeg -i warp.qcp warp.wav

    and it just fails with "warp.qcp: Unknown format"

    You can download sample QCP files from: http://www.mplayerhq.hu/MPlayer/samples/A-codecs/suite/QCP/

    I have tried several precompiled versions of FFmpeg found on the web and I have also successfully downloaded the latest source code and compiled it myself. When I do "ffmpeg -formats", in the list under codecs is "D A qcelp QCELP / PureVoice".

    I can't find any explicit examples of using FFmpeg to convert QCELP. Really the only other stuff I can find talks about how, back in 2006, QCELP support was "patched" in using the "Reference Implementation (RI)", but then with the release of FFmpeg 0.5, it is now officially supported and has it's own implementation (I have looked at those source code files). Also I have found some talk that QCELP is used as the audio format for some QuickTime mp4 movies. It appears that people have successfully transcoded these mp4 files to other formats. It would seem weird that the FFmpeg QCELP decoder is supported in that sense but not able to convert an audio file directly.

    Anyone out there, Komeil...:-), that could help I'd appreciate it.

    Thanks,
    Kevin

    ReplyDelete
  7. Kevin,

    One delicate thing once you use "ffmpeg -formats" is the results contain two tables, with the first being entitled "file formats" and the second "codecs". QCELP (the codec) is listed under "codecs", but QCP (the file format) is NOT listed under "file formats". So the conclusion is just like what you've stated, it can only decode (the "D A" in "D A qcelp QCELP / PureVoice" means decode audio stream) once it's used as the "audio stream" of an MP4, but the QCP as an audio file format is not supported.

    There's never been a QCP "demuxer" module (libavformat/qcp.c) in FFmpeg implementations before SVN-r18890 of May 21, 2009. This "qcp.c" file was added to the FFmpeg "libavformat" by "Kenan Gillet".

    Looking into the source of this newly added "qcp.c" file, you can find a C++ comment:

    // "QLCMfmt " + chunk-size + major-version + minor-version

    Pay attention to the "QLCMfmt", now, if you open one of the QCP files you've referenced in NOTEPAD.EXE, after the "RIFF", the "QLCMfmt" is evident. That's where "qcp.c" grinds the QCP header.

    And look for "- QCP demuxer" here in the FFmpeg Changelog, it's just recently added.

    So maybe if you make a version newer than SVN-r18890, it might be able to decode QCP files. To ensure your compilation is able to demux/decode QCELP streams containing within QCP files, use "ffmpeg -formats", and check to see if QCP is listed under "file formats".

    ReplyDelete
  8. Awesome, Komeil. Thanks. That did it. I got SVN-r20900 and that was able to read and decode a .QCP file.

    ReplyDelete
  9. Hi Komeil,
    I've managed to compile ffmpeg with some instructions from the given links and with more extra research. I also attached this ffmpeg to FOBS JMF player. If someone needs detailed instructions just visit http://cid-2525acf96f6962bf.spaces.live.com/blog/cns!2525ACF96F6962BF!141.entry

    ReplyDelete
  10. Hi Komeil,
    many thanks for your help and i wrote some instructions in turkish language. it may help people. http://cid-c07817cd4d2dd44b.spaces.live.com/blog/cns!C07817CD4D2DD44B!122.entry

    thanks again,
    burak

    ReplyDelete
  11. Hi Komeil,

    Can you help me?

    I need to know how convert the format of video using FFMPEG (Windows). I did the download from your site and I don't know how can I use the codecs.
    I downloaded the AMR_NB codec, for example, for convert the video to 3GP format, but where I need to put these files?
    I'm using the command "ffmpeg -y -i entrada.avi -s qcif -vcodec h263 -acodec amr_nb -ac 1 -ar 8000 -r 15 -ab 32 saida.3gp", and getting the message "unknown encoder amr_nb".
    Can you explain how to use the codecs?

    ReplyDelete
  12. Hi Inanda,

    You don't have to download any codecs, FFmpeg is a stand-alone executable. All you need is an AMR-enabled FFmpeg compilation, one like mine.

    First, "-acodec amr_nb" is worng, it should be "-acodec libamr_nb".

    Then, For AMR-NB, only an 8000 sample rate and one of the following bitrates are valid:
    4.75k, 5.15k, 5.9k, 6.7k, 7.4k, 7.95k, 10.2k or 12.2k

    To make an early-Nokia-compatible 3GP, use AMR-NB 8000/12.2k: "-ac 1 -ar 8000 -ab 12.2k"

    Read more here.

    And FYI, for the AMR-WB (Adaptive Multi-Rate Wide-Band), only a 16000 sample rate and one of the following bitrates are valid:
    6.6k, 8.85k, 12.65k, 14.25k, 15.85k, 18.25k, 19.85k, 23.05k, or 23.85k

    ReplyDelete
  13. I want to convert 3gp to flv with audio enable. please tell me the correct command

    ReplyDelete
  14. To convert 3GP to FLV with audio:

    ffmpeg -i input.3gp -f flv -vcodec flv -r 15 -b 300k -aspect 176:144 -s 176x144 -acodec libmp3lame -ar 11025 -ab 64k -ac 1 -y output.flv

    ReplyDelete
  15. thank you very much for this.
    Finally something slim to convert xvid/mp3 .avi to h264/aac .mp4 in one go. only other option was to use Adobe Media Encoder (horrible)

    ReplyDelete
  16. Thanks Komail, great work!

    ReplyDelete
  17. Hi
    This is fine..
    But i just need to work with dshow.
    Would you provide solution for enabling dshow format in ffmpeg?
    Thanks in advance...

    Regards,
    Sreerag
    sreemnpy@gmail.com

    ReplyDelete




Copyright © 1999-2014 Komeil Bahmanpour. All rights reserved.

Reproduction is permitted provided that the source is acknowledged and a link is included to the relevant page.