Category Archives: VideoLAN

The Island

Ben Waggoner has made a HD trailer of The Island available.

Specs: 18 Mbps CBR MPEG-2 video, 448 Kbps 5.1 AC-3 audio

BitTorrent download: The+Island+ATSC.ts.torrent

Update: Followup by Ben Waggoner:

I’ve made a followup test – same source, but at 8 Mbps VBR in four different codecs:

The+Island+8+Mbps+VBR.torrent

The goal here is to test content at a data rate where you could do a 1080p 2-hour feature on DVD-9 media. The trailer is very high motion, so it’s not exactly a fair test, but the results should be interesting.

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

Reversing NSC

I’ve reverse engineered the encoding used in the Microsoft NSC format and written a decoder. Here’s how Cisco describes NSC:

A multicast description file is required at the Cisco content engine’s Windows Media Technology Server. This description file, in the form of an .nsc file, is received from a known URL, mount point, or even via email. This file is also referred to as an “announcement.” The source path follows the standards based URL format: http://www.cisco.com/path/filename.nsc. … the structure of the .nsc file is protected with the use of encryption. This is used to protect the media from network sniffing of the media source’s IP address, port, and stream format.

That it’s encryption is a faulty assumption (or bullshit marketing) on Cisco’s part. The algorithm doesn’t take a key.

Download: nscdec.c (MD5: 7c81ca49bc68c2b8671d00f0cdf960e3)

Example usage:
$ nscdec 02AW000000000SLm1D0580HG1C0440MG0m0380800i0200GG0000
Encoding type: 2
Decoded string: [WMRELAY02 , A]

Update: VLC should have NSC support in the near future.

SMPTE 421M

The following documents just became available for download from the SMPTE website:

Trial Publication of SMPTE 421M PROPOSED SMPTE STANDARD for Television:
VC-1 Compressed Video Bitstream Format and Decoding Process

Trial Publication of RP 227 PROPOSED SMPTE RECOMMENDED PRACTICE for Television:
VC-1 Bitstream Transport Encodings

Trial Publication of RP 228 PROPOSED SMPTE RECOMMENDED PRACTICE for Television:
VC-1 Decoder and Bitstream Conformance

VC-1 is also known as Windows Media Video 9. See this screenshot of VLC playing the Shuttle Discovery Launch video using the VC-1 reference decoder under GNU/Linux. The reference decoder won’t be publicly available until VC-1 becomes a SMPTE standard. Update: the reference decoder is now publicly available at smpte-vc1.org.

Google Video Viewer

Google has released Google Video Viewer, a browser plugin based on VLC. Here’s one of the features they’ve added:

+    // Google mods
+    const char* allowed_host = "video.google.com";
+    char * host_found = strstr(p_sys->url.psz_host, allowed_host);
+    if ((host_found == NULL) ||
+	((host_found + strlen(allowed_host)) !=
+	 (p_sys->url.psz_host + strlen(p_sys->url.psz_host)))) {
+      msg_Warn( p_access, "invalid host, only video.google.com is allowed" );
+      goto error;
+    }

This “feature” prevents you from playing videos that are not hosted on Google’s servers. Download and run this patch I wrote to remove this restriction. Running the patch requires a .NET runtime.

Update: Journalists never cease to amaze me with their ability to blow things out of proportion. For the record, I haven’t spoken to or exchanged emails with a single journalist about this, so when the Associated Press writes “said he needed only one day” that’s a complete and utter fabrication since I’ve said no such thing here on my blog.

Some of you have requested the source code for the patch: GVVPatch.cs

VLC cone

VLC coneIf you use VLC, you might have wondered what the hell is the cone for?

One day, people from the VIA association (VIA is a students’ network association with many clubs … amongst those is VideoLAN.) came back drunk with a cone. They then began a cone collection (which is now quite impressive I must say). Some time later, the VideoLAN project began and they decided to use the cone as their logo.