Compiling VLC

Instructions for compiling VLC with VC-1 (WMV9) support under Ubuntu Breezy

Install dependencies available from the Ubuntu repositories (main and universe)

$ sudo apt-get install libwxgtk2.6-dev libdvbpsi3-dev libmpeg2-4-dev libmad0-dev libasound2-dev libesd0-dev x11proto-video-dev libdvdnav-dev liba52-0.7.4-dev libflac-dev libfreetype6-dev libid3tag0-dev libogg-dev libpng12-dev libspeex-dev libtheora-dev libvorbis-dev libxml2-dev zlib1g-dev gcc g++ automake1.9 autoconf libtool subversion cvs libx11-dev

Install libdvdcss (DVD support)

$ mkdir ~/videolan ; cd ~/videolan
$ wget http://downloads.videolan.org/pub/videolan/vlc/0.8.2/contrib/libdvdcss-1.2.8.tar.bz2
$ tar -jxvf libdvdcss-1.2.8.tar.bz2 ; cd libdvdcss-1.2.8
$ ./configure --prefix=/usr ; make ; sudo make install

Compile faad2 (AAC support)

$ cd ~/videolan ; wget http://downloads.videolan.org/pub/videolan/vlc/0.8.2/contrib/faad2-20040923.tar.bz2
$ tar -jxvf faad2-20040923.tar.bz2 ; cd faad2-20040923
$ ./configure --prefix=/usr ; cd libfaad ; make

Compile ffmpeg (support for H264 and many other codecs)

$ cd ~/videolan ; cvs -z9 -d:pserver:anonymous@mplayerhq.hu:/cvsroot/ffmpeg co ffmpeg
$ cd ffmpeg ; ./configure --enable-pp --enable-gpl ; make

Compile libvc1 (WMV9 support)

$ cd ~/videolan ; wget http://nanocrew.net/sw/libvc1-1.0.tar.gz ; tar -zxvf libvc1-1.0.tar.gz
$ wget http://USERNAME:PWD@www.smpte-vc1.org/TrialPublication/Decoder/VC1_reference_decoder_release6.zip
$ unzip VC1_reference_decoder_release6.zip
$ cp VC1_reference_decoder_release6/decoder/*.[ch] libvc1-1.0/src/.
$ cp VC1_reference_decoder_release6/shared/*.[ch] libvc1-1.0/src/.
$ cd libvc1-1.0 ; ./bootstrap ; ./configure --prefix=/usr ; make

Install VLC

$ cd ~/videolan ; svn co svn://svn.videolan.org/vlc/trunk vlc-trunk
$ cd vlc-trunk ; wget -O – http://nanocrew.net/sw/vlc-libvc1.diff | patch -p0
$ ./bootstrap ; ./configure --with-ffmpeg-tree=../ffmpeg --enable-faad --with-faad-tree=../faad2-20040923 --enable-esd --enable-flac --enable-theora --enable-libvc1 --with-libvc1-tree=../libvc1-1.0 --disable-hal
$ make ; sudo make install

66 thoughts on “Compiling VLC

  1. Anson

    I really like VLC, but I use OS X. Will the sources for WMV9 be platform-independent, or is this something that is specific to x86-linux (or something else that prohibits VLC on OS X from using it) ?

  2. Slamich

    Thanks so much for making it available to newbies like me (a Happy Ubuntu and Linux user since 4 months).

    Pierre

  3. Cian

    Anson – libvc1 builds here on my Macintosh (powerpc-apple-darwin-8.20), so I assume the rest builds, and works… however, I’ve not tried yet

  4. anon

    nice stuff! looking forward for the next VLC version with this feature built-in :)

  5. arkady

    …one correction
    apt-get install libwxgtk2.6-dev
    does not work on my Ubuntu package 1.0.6
    i downloaded package wxGTK-2.6.1 from http://www.wxwidgets.org/
    and compiled it. the following is from the readme and worked for me
    mkdir build_gtk
    cd build_gtk
    ../configure –with-gtk=2
    make
    su
    make install
    ldconfig

  6. Allan Hsu

    I managed to build VLC with libvc1 support under OS X. All the files I’ve thrown at it don’t seem to decode past the first couple frames though. If I seek through the file, I get a couple frames of animation and then it freezes again. The error dialog fills up with a lot of
    “libvc1: failed to decode frame” errors and an occasional “main: decoder is leaking pictures, resetting the heap” error. It seems that the video only updates every time one of the “resetting the heap” errors comes up. My first assumption is that something isn’t getting byteswapped and is getting fed into the codec wrong. Where should I look first?

  7. gabor farkas

    perfect.

    finally i will be able to watch those wmv9 avi files on mac osx.

    one little question only:

    i wasn’t able to compile vlc on osx.

    is it somehow possible to only compile libvc1 and put it into a vlc-nightly-build?

    great work btw :)

  8. Cian

    And after some “fun” with getting automake/autoconfig/libtool to talk to each other on my OS-of-choice, its also working on BeOS 5.04/x86. Now, to rebuild VLC, with my currently utterly shagged build enviroment…

  9. Maximilian Gattringer

    Ugh. And people wonder why Linux just never hits the mainstream desktop. :-p

    Well, did anyone want that it does, I mean like hitting the mainstream desktop? I think most of the Linux users reject the idea of Linux for the vast masses of people, since it would just fill the forums with questions like how could I install this or compile that. 😉
    No, I think that Linux is best for developers or power users than DAUs, though I am sure that compiling this VLC Version in Windows is just as hard as compiling it in Linux – Of course you could use a Linux desktop like a Windows desktop(RPMs etc.), but is there any advantage but the price for the average user?

  10. Anonymous

    Is it possible at this point to play wmv9 *without* needing proprietary software such as the reference decoder?

  11. dionoea

    since the standard was published recently, i’m afraid that no open source lib exists. (else we would already have included the change in VLC)

  12. Daniel

    FYI, the VLC configure script doesn’t check for libpostproc headers, so compilation fails later on.

  13. Daniel

    One more thing: ffmpeg.c includes libpostproc/postprocess.h but libpostproc-dev from the Marillat (nerim.net) APT repository puts the headers in /usr/include/postproc, so Debian users should:
    cd /usr/include
    sudo ln -s postproc libpostproc

    Using the libavcodec-dev package under Debian also makes the build process complain about missing libavcodec_pic, libavformat_pic, and libavutil_pic. I guess Debian/Marillat users still need the ffmpeg tree.

  14. befalou

    I followed every step but VLC is not working well here, Breezy too. If I open a file from the GUI it fails because some strage characters appear in the beginning of the path (they look fine in GUI), when opening from CLI it works. Sorry for requesting support here but I can’t find an answer elsewhere. Thanks.

  15. compn

    the ffmpeg team are working on ‘ffwmv3’ open source codec created from reading the wmv9/vc1 spec…

    its slow to code of course, the reference decoder will speed things up a bit.

  16. Pip

    I’m having the same problem as Allan in all the OSes I’ve tried (OS X, Gentoo on PPC and x86)–it gets through the first frame, then I get libvc1 decoder error: failed to decode frame. Sometimes I can get it to render another frame if I pause and play again. It seems to be related to resolution–the 640×480 files I’ve tried don’t work, but 320×240 is great. For a test file, the large wmv of systm #2 caused problems for me.

  17. Barto

    To get the above to work (Ubuntu Breezy, up to date as of 2005/09/15) I had to configure VLC with “–disable-nls” (for some reason even with gettext installed it wasn’t working otherwise), also install xvlibs using apt-get. Apart from that, woohoo!

  18. jakub007

    I had problems with decoding frame because of low bandwidth.
    I’ve modified vlc/modules/access/mms/mmstu.c, MMSOpen, adding before loop ‘ for( i = 1; i
    btr_diff_best_audio = 32767;
    btr_diff_best_video = 32767;
    btr_diff = 0;
    i_prev_audio = -1;
    i_prev_video = -1;
    /* select stream with the best match to preferred bitrates */

    #define _ABS(a) (a)>0?(a):(-(a))

    for( i = 1; i asfh.stream[i].i_cat == ASF_STREAM_AUDIO )
    {
    btr_diff = _ABS ((p_sys->asfh.stream[i].i_bitrate / 1024) – p_access->btr_pref.btr_pref_audio);
    if (btr_diff asfh.stream[i].i_selected = 1;
    if (i_prev_audio!=-1)
    p_sys->asfh.stream[i_prev_audio].i_selected = 0;
    i_prev_audio = i;
    }
    else
    p_sys->asfh.stream[i].i_selected = 0;
    }
    else if( p_sys->asfh.stream[i].i_cat == ASF_STREAM_VIDEO )
    {
    btr_diff = _ABS ((p_sys->asfh.stream[i].i_bitrate / 1024) – p_access->btr_pref.btr_pref_video);
    if (btr_diff asfh.stream[i].i_selected = 1;
    if (i_prev_video!=-1)
    p_sys->asfh.stream[i_prev_video].i_selected = 0;
    i_prev_video = i;
    }
    else
    p_sys->asfh.stream[i].i_selected = 0;
    }
    }

    btr_pref is structure added to access_t, containis int btr_pref_video and int btr_pref_audio.

    Now I have problem with:
    [00000460] access_mms access: connection successful
    [00000460] access_mms access error: reinitialization needed –> unsupported
    My test mms – mms://stream.onet.pl/media.wsx?/info/200509/8e252eb4aa.wmv&MSWMExt=.asf

    has two streams, the first one is logo of TV, second is actual content

  19. rabior

    Legend mate! Thanks for taking the time to help out those who are new to Linux! Much appreciated

  20. Pip

    The VC1 reference decoder is gone from the site…does this mean that something good is happening soon, or do they just not want us to have it?

  21. macewan

    Ugh. And people wonder why Linux just never hits the mainstream desktop. :-p

    Your computer doesn’t seem to have much problem with Linux.

    😉

  22. monsta

    The VC1 decoder is still not on the site. Does anyone know where else it is available?

    Cheers!

  23. alberto

    yeah the vc1 decoder is not on the site anymore. does anybody know why?
    thank you muaddib7 for posting a link to a deb package for ubuntu breezy i386.
    I own a powerpc with ubuntu breezy though… has anyone still got it?

  24. laxity

    thank you muaddib7 for the ubuntu package, but i also need the v1 decoder…

  25. Hai Nguyen Thanh

    Does anyone have the source code of vc-1? I’m not using Ubuntu (I’m using Fedora Core 3), so I am looking for a different package of VC-1.

  26. vendetta red

    I get the following error when trying to do the final make; sudo make install

    /usr/bin/ld: cannot find -lXext
    collect2: ld returned 1 exit status

    Also, the .deb pkg for Ubuntu doesn’t put the vc1 stuff where we are compiling, so the
    ./bootstrap ; ./configure –with-ffmpeg-tree=../ffmpeg –enable-faad –with-faad-tree=../faad2-20040923 –enable-esd –enable-flac –enable-theora –enable-libvc1 –with-libvc1-tree=../libvc1-1.0 –disable-hal
    line doesn;t work either. I tried installing through Synaptic, but VLC won’t work 😐

  27. starbuck

    Hi,

    I need the source of the VC decoder (VC1_reference_decoder_release6.zip). On the above mentioned
    site I can not found it anymore.
    Where can I get this?
    Could anyone help me on this?
    Thanks.

  28. offspr

    Thank you muaddib7 but I also need vc1 decoder (vc1dec.c ….) which is in the VC1_reference_decoder_release6.zip file. After that I should be able to decode WMV3 files…
    Could you send it please?
    Thank you !

  29. Tor

    Hmm, some one got VC1_reference_decoder_release6.zip ? its annoying, I can`t find it anywhere..:S

  30. SpecialSauce

    For anyone else finding this a dead end here’s why:

    To get the VC1 reference decoder, you have to be a member of the STMPE group. See where it says “USERNAME:PWD” up there? You have to actually have a username and password! Just click the link, go through the tedious process of joining SMTPE, paying the fees, joining the AHG, blah blah blah, and repeatedly ask yourself why you’re bothering.

    Oh, BTW: you have to agree not to share test materials (i.e. “vc1_reference_decoder_release6.zip”). It is not open source.

  31. Suresh

    Ubuntu Breezy -lXext issue

    >> /usr/bin/ld: cannot find -lXext
    >> collect2: ld returned 1 exit status

    apt-get install libxext-dev

    retry make and it should work.

    -Enjoy

  32. Dave

    Wow… never expected to see the deb I compiled posted here. Just want to give a warning on that though. It isn’t 100% working (playlist is broken), and it’s a very rough hack job. But if the deb has been useful to you, that’s what matters. :)

    Anyways, a link to the VC1 Reference Decoder, due to popular request. Enjoy. I’ll see if I can compile a newer version of VLC that hopefully lacks the bugs that are present in the deb I made previously that muaddib7 posted.

  33. Dave

    Sorry folks. Just realized why nobody else ever posted a link to the VC1 Reference Decoder. It IS on the site, and you can get it for free. You just need to jump through some hoops first. As I just realized that it was illegal to redistribute it, even though it’s offered for free… I have removed it from my web space.

  34. Ian Justman

    Three words can best describe what I get back from the VC1 reference decoder URL:

    Four. Oh. Four.

    The file is gone.

  35. Sanjay

    The link for VC1_reference_decoder_release6.zip is a 404
    Can someone upload the file somewhere so that i can get it.

  36. sling

    One question is that any vc1 bitstream existed?
    or where can i find the test or conformance ones….

  37. I

    It works perfect, except for the speed:(
    It is very sloooow on my 3000+64 with breezy amd64. I tried it with one videofile and the picture runs slower than the sound. I followed every single step, except i used checkinstall rather then make install. Is it proposed to be unusable? Or does it work only with small files?

  38. Bjed

    Does anyone know how to do this for OS X, but with mplayer/mencoder instead, probably using the hooking with ffmpeg on this sitehttp://multimedia.cx/eggs/?p=129 (the hooking i sadly cannot get to work).

    I am currently trying to compile VLC with vc1 support, so I’ll get this somehow, but being able to use this with mencoder would be useful, converting the WMV’s to Xvid and whatnot.

  39. Bjed

    To add on this I am currently getting this problem compiling VLC:

    configure.ac:1: error: possibly undefined macro: dnl
    If this token and others are legitimate, please use m4_pattern_allow.
    See the Autoconf documentation.
    configure.ac:274: error: possibly undefined macro: AC_DEFINE
    configure.ac:278: error: possibly undefined macro: AC_CHECK_LIB
    configure.ac:292: error: possibly undefined macro: AC_MSG_ERROR
    configure.ac:386: error: possibly undefined macro: AC_CHECK_HEADERS
    configure.ac:774: error: possibly undefined macro: AC_MSG_WARN
    configure: error: cannot find install-sh or install.sh in autotools ./autotools
    make: *** No targets specified and no makefile found. Stop.

  40. tipok

    What about encoding to wmv3 under linux (for example by VLC) ??
    Maybe somebody can do this?

  41. MainframeGuy

    I did all this – managed to find the required bits – get to the ./configure and that fails for breezy ubuntu – so i suspect synaptics – go there and lo and behold – VLC is already there to select for a reinstall! Which I have done and it works …. so if you are on breezy Badger 5.10 you may wish to bear this in mind….

  42. shawn

    I built this free thing (VC1) in my free time for the sake of free blah blah blah. So now just pay for it.
    Thank you Mr. Gates

  43. coyctecm

    I have amd64 version of ubuntu breezy and I installed packages with apt everything works fine expect mozilla-vlc-plugin doesn’t work. When I start to play some video from internet “no picture” reads and nothing is shown. If I download that video clip it’s playing fine. Like http://www.apple.com/trailers/ are not playing with mozilla-plugin…

  44. Lasse

    Bogger…
    Followed this great howto, but at the end… I am not able to play wmv9 files. The file opens up, but I do not get any picture… The sound works perfect, but the picture is just a big black box… Any ideas?

  45. ayushman

    Anybody got a copy of the VC1 reference decoder code? The link does not help. Any other link to it?

  46. Eric

    I could compile it with osx – but wmv9 support still did not work.

    could somebody release a binary of vlc with vc1 on osx-intel?

    thanks a lot.
    eric

  47. TheHighChild

    Kubuntu Dapper Drake Test Release 7 x86_64

    Everything works great! Playback is fine. The only thing outside of the guide that I had to do was initiate the following commands with sudo
    $ cp VC1_reference_decoder_release6/decoder/*.[ch] libvc1-1.0/src/.
    $ cp VC1_reference_decoder_release6/shared/*.[ch] libvc1-1.0/src/.

    Once I did that, everything went smooth. When I intiate vlc from the command line, it does not playback WMV9 but when I initiate wxvlc everything works like a champ. I don’t know the difference but that’s ok for now.

    /Sleep

  48. alex

    XVideo

    Successfully built on ubuntu dapper. wmv works. woo hoo! However all playback was pixelated. Eventually figured out that the XVideo output module works better with my video card – laptop built-in Intel 82852/855GM. Fixed thus:

    install the libxv-dev libxvmc-dev packages
    reconfigure vlc with –enable-xvideo
    rebuild, reinstall

    Not sure if all of those steps were required, but it worked. Now vlc defaults to XVideo output, no more pixelation, wmv still works. Sorry I didn’t take notes – besides the above I had to tweak a few things here and there.

    One other note: this build installed to /usr/local/bin/vlc so it didn’t overwrite the previous version (0.8.4) installed from the repository to /usr/bin/vlc . Both versions seem to run fine, but this could easily be confusing – check help > about – your freshly-built version will say “compiled by [your name]@[your hostname]”

Comments are closed.