So I’m browsing YouTube the other day and I come across a catchy music video and I’d really like to download it and play it over and over again at home and while I’m out and about; you know, to annoy people. 🙂

Downloading a video from YouTube is pretty easy these days thanks to various browser extensions; and if the downloaded video is in a .mp4 container, I don’t have do anything since just about any video player, including my 1st generation PopcornHour reads them just fine. But some videos on YouTube are stuffed into .flv containers. So for those videos in .flv format, I want to convert them into .mp4 files at least, or something better. Additionally, for music videos I sometimes want just the audio; so I can play it in my car or with my desktop audio player. So an additional task is to extract just the audio into an audio container. On top of that, I would rather not re-encode the video or audio, I just want to extract it and stick it into a different container.

What’s a container you ask? Think of it as the box you stuff your media into. In the analog world of records, film, and such, the container would be the film strip, the vinyl record, or the magnetic tape inside a cassette tape. The actual audio and video information in those formats is put into those containers either by scratching it into the surface (in the case of records), using magnets (in the case of magnetic tape), or through a chemical photographic process that burns images into an emulsion on a film strip.

In a computer, audio and video exist as streams of data (think: long lines of ones and zeros). To make use of these streams, they need to be put into a container. In the analog world the container forces a particular format on the data it holds. For example, a magnetic tape would be destroyed if you ran it through the machine used to scratch tracks into blank master records. This restriction also exists in the digital realm to an extent; some containers are only able to contain certain types of information. Other containers, however, are very capable and can hold multiple audio, video, and subtitle streams.

So, back to my original problem; how to move streams between different containers. Well, it’s really easy with FFmpeg. Yes it requires a trip to the command-line, but it’s pretty painless.

FFmpeg is probably already installed on your Linux box (a lot of other programs use it). And if it’s not, your package manger should have a copy. Refer to your distribution’s documentation for instructions on getting it installed.

To test to see if you have it installed, open up a terminal and type ‘ffmpeg’ and then press Enter. If it is installed you will see something similar to the following:

me@mybox:~$ ffmpeg

FFmpeg version SVN-r0.5.1-4:0.5.1-1ubuntu1, Copyright (c) 2000-2009 Fabrice Bellard, et al.

configuration: --extra-version=4:0.5.1-1ubuntu1 --prefix=/usr --enable-avfilter --enable-avfilter-lavf --enable-vdpau --enable-bzlib --enable-libgsm --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-pthreads --enable-zlib --disable-stripping --disable-vhook --enable-runtime-cpudetect --enable-gpl --enable-postproc --enable-swscale --enable-x11grab --enable-libdc1394 --enable-shared --disable-static

libavutil 49.15. 0 / 49.15. 0

libavcodec 52.20. 1 / 52.20. 1

libavformat 52.31. 0 / 52.31. 0

libavdevice 52. 1. 0 / 52. 1. 0

libavfilter 0. 4. 0 / 0. 4. 0

libswscale 0. 7. 1 / 0. 7. 1

libpostproc 51. 2. 0 / 51. 2. 0

built on Mar 4 2010 12:35:30, gcc: 4.4.3

At least one output file must be specified

The above is output every time you run ffmpeg, so I’ll strip it from future examples.

So let’s say I’ve downloaded this cool song from YouTube:

me@mybox:~/tmp$ ls

cool-song.flv

The first thing I want to do is find out what is inside the .flv container. This is easy with FFmpeg:

me@mybox:~/tmp$ ffmpeg -i cool-song.flv

...skipped stuff...

Seems stream 0 codec frame rate differs from container frame rate: 59.94 (2997/50) -> 29.92 (359/12)

Input #0, flv, from 'cool-song.flv':

Duration: 00:03:15.96, start: 0.000000, bitrate: 514 kb/s

Stream #0.0: Video: h264, yuv420p, 480x360 [PAR 1:1 DAR 4:3], 514 kb/s, 29.92 tbr, 1k tbn, 59.94 tbc

Stream #0.1: Audio: aac, 44100 Hz, stereo, s16

At least one output file must be specified

I’ve put boxes around the important bits in the output above.

So now I know that the video inside the .flv is h264 and the audio is aac. My PopcornHour can play both of those, they just need to be in a supported container. To do so, do the following:

me@mybox:~/tmp$ ffmpeg -i cool-song.flv

> -acodec copy

> -vcodec copy

> cool-song.mkv Seems stream 0 codec frame rate differs from container frame rate: 59.94 (2997/50) -> 29.92 (359/12)

Input #0, flv, from 'cool-song.flv':

Duration: 00:03:15.96, start: 0.000000, bitrate: 514 kb/s

Stream #0.0: Video: h264, yuv420p, 480x360 [PAR 1:1 DAR 4:3], 514 kb/s, 29.92 tbr, 1k tbn, 59.94 tbc

Stream #0.1: Audio: aac, 44100 Hz, stereo, s16

Output #0, matroska, to 'cool-song.mkv':

Stream #0.0: Video: libx264, yuv420p, 480x360 [PAR 1:1 DAR 4:3], q=2-31, 514 kb/s, 90k tbn, 29.97 tbc

Stream #0.1: Audio: libfaac, 44100 Hz, stereo, s16

Stream mapping:

Stream #0.0 -> #0.0

Stream #0.1 -> #0.1

Press [q] to stop encoding

frame= 5874 fps= 0 q=-1.0 Lsize= 14807kB time=196.00 bitrate= 618.9kbits/s

video:11991kB audio:2714kB global headers:0kB muxing overhead 0.690280%

I split the FFmpeg command into four lines so I can explain what each part is doing:

ffmpeg -i cool-song.flv # Specify the input file

> -acodec copy # I want to copy the audio track

> -vcodec copy # I want to copy the video track too

> cool-song.mkv # specify the output filename and container

After -acodec and -vcodec I could have easily told FFmpeg to convert the audio or video into different formats, but why bother if my player can play them just fine? (I know, I know, patents. But let’s not get into that now, Ok?) Likewise I could have specified ‘.mp4’, ‘.avi’, or any other container supported by FFmpeg which in turn supports h264 video streams and aac audio streams. I happen to like .mkv (Matroska) containers, so that’s what I went with.

Since I am having FFmpeg just take the streams from one container and stuff them into another, the process is very fast. About the same amount of time it would take to copy the original file from one disk to another.

How about extracting just the audio? Well, for that I keep the -acodec line and omit the -vcodec line like so:

me@mybox:~/tmp$ ffmpeg -i cool-song.flv

> -acodec copy

> cool-song.aac Seems stream 0 codec frame rate differs from container frame rate: 59.94 (2997/50) -> 29.92 (359/12)

Input #0, flv, from 'cool-song.flv':

Duration: 00:03:15.96, start: 0.000000, bitrate: 514 kb/s

Stream #0.0: Video: h264, yuv420p, 480x360 [PAR 1:1 DAR 4:3], 514 kb/s, 29.92 tbr, 1k tbn, 59.94 tbc

Stream #0.1: Audio: aac, 44100 Hz, stereo, s16

Output #0, adts, to 'cool-song.aac':

Stream #0.0: Audio: libfaac, 44100 Hz, stereo, s16

Stream mapping:

Stream #0.1 -> #0.0

Press [q] to stop encoding

size= 2772kB time=196.51 bitrate= 115.6kbits/s

video:0kB audio:2714kB global headers:0kB muxing overhead 2.131281%

For an aac audio stream, the container that makes the most sense is obviously .aac, so that’s what I used.

That’s all there is to it. Moving audio and video streams between different containers is easy.

That’s it for the meat of this entry. I do want to point out a gotcha with FFmpeg and containers and show the list of every format and container my copy of FFmpeg can work with, but you don’t have to stick around if you don’t want to.

A note about Containers

FFmpeg knows the common extensions for the various codecs, so there’s no need to explicitly specify the container, just name the file with the appropriate extension and FFmpeg will figure it out. One gotcha though: FFmpeg will sometimes protect you from doing something stupid, but not always. For example, it will happily stuff the h264 video stream and aac audio stream into a .mp3 file. Just because it will do such a thing doesn’t mean you will like the result. I tried it on my example file and after it was done I had a file that not even FFmpeg could read properly:

me@mybox:~/tmp$ ffmpeg -i cool-song.flv

> -acodec copy -vcodec copy cool-song.mp3 Seems stream 0 codec frame rate differs from container frame rate: 59.94 (2997/50) -> 29.92 (359/12)

Input #0, flv, from 'cool-song.flv':

Duration: 00:03:15.96, start: 0.000000, bitrate: 514 kb/s

Stream #0.0: Video: h264, yuv420p, 480x360 [PAR 1:1 DAR 4:3], 514 kb/s, 29.92 tbr, 1k tbn, 59.94 tbc

Stream #0.1: Audio: aac, 44100 Hz, stereo, s16

Output #0, mp3, to 'cool-song.mp3':

Stream #0.0: Video: libx264, yuv420p, 480x360 [PAR 1:1 DAR 4:3], q=2-31, 514 kb/s, 90k tbn, 29.97 tbc

Stream #0.1: Audio: libfaac, 44100 Hz, stereo, s16

Stream mapping:

Stream #0.0 -> #0.0

Stream #0.1 -> #0.1

Press [q] to stop encoding

frame= 5874 fps= 0 q=-1.0 Lsize= 14705kB time=196.00 bitrate= 614.6kbits/s

video:11991kB audio:2714kB global headers:0kB muxing overhead 0.000213% me@mybox:~/tmp$ ffmpeg -i cool-song.mp3

[mp3 @ 0x8499a60]Could not find codec parameters (Audio: mp1, 0 channels, s16)

cool-song.mp3: could not find codec parameters

You have been warned. 🙂

Supported Formats

FFmpeg supports a lot of different formats. The exact ones depends on how your copy of FFmpeg was configured when it was compiled. To see what your local copy of FFmpeg supports, use the -formats option. According to the FFmpeg man page, “[t]he fields preceding the format and codec names have the following meanings:

D Decoding available

E Encoding available

V/A/S Video/audio/subtitle codec

S Codec supports slices

D Codec supports direct rendering

T Codec can handle input truncated at random locations instead of only at frame boundaries

I’ve been saving this for last because the list is really long:

me@mybox:~/tmp$ ffmpeg -formats

File formats:

E 3g2 3GP2 format

E 3gp 3GP format

D 4xm 4X Technologies format

D IFF IFF format

D ISS Funcom ISS format

D MTV MTV format

DE RoQ raw id RoQ format

D aac raw ADTS AAC

DE ac3 raw AC-3

E adts ADTS AAC

DE aiff Audio IFF

DE alaw PCM A-law format

DE alsa ALSA audio output

DE amr 3GPP AMR file format

D apc CRYO APC format

D ape Monkey's Audio

DE asf ASF format

E asf_stream ASF format

DE ass SSA/ASS format

DE au SUN AU format

DE avi AVI format

E avm2 Flash 9 (AVM2) format

D avs AVS format

D bethsoftvid Bethesda Softworks VID format

D bfi Brute Force & Ignorance

D c93 Interplay C93

D cavsvideo raw Chinese AVS video

E crc CRC testing format

DE daud D-Cinema audio format

DE dirac raw Dirac

DE dnxhd raw DNxHD (SMPTE VC-3)

D dsicin Delphine Software International CIN format

DE dts raw DTS

DE dv DV video format

D dv1394 DV1394 A/V grab

E dvd MPEG-2 PS format (DVD VOB)

D dxa DXA

D ea Electronic Arts Multimedia Format

D ea_cdata Electronic Arts cdata

DE eac3 raw E-AC-3

DE f32be PCM 32 bit floating-point big-endian format

DE f32le PCM 32 bit floating-point little-endian format

DE f64be PCM 64 bit floating-point big-endian format

DE f64le PCM 64 bit floating-point little-endian format

DE ffm FFM (FFserver live feed) format

D film_cpk Sega FILM/CPK format

DE flac raw FLAC

D flic FLI/FLC/FLX animation format

DE flv FLV format

E framecrc framecrc testing format

E gif GIF Animation

D gsm raw GSM

DE gxf GXF format

DE h261 raw H.261

DE h263 raw H.263

DE h264 raw H.264 video format

D idcin id Cinematic format

DE image2 image2 sequence

DE image2pipe piped image2 sequence

D ingenient raw Ingenient MJPEG

D ipmovie Interplay MVE format

E ipod iPod H.264 MP4 format

D libdc1394 dc1394 v.2 A/V grab

D lmlm4 lmlm4 raw format

DE m4v raw MPEG-4 video format

DE matroska Matroska file format

DE mjpeg raw MJPEG video

D mlp raw MLP

D mm American Laser Games MM format

DE mmf Yamaha SMAF

E mov MOV format

D mov,mp4,m4a,3gp,3g2,mj2 QuickTime/MPEG-4/Motion JPEG 2000 format

E mp2 MPEG audio layer 2

DE mp3 MPEG audio layer 3

E mp4 MP4 format

D mpc Musepack

D mpc8 Musepack SV8

DE mpeg MPEG-1 System format

E mpeg1video raw MPEG-1 video

E mpeg2video raw MPEG-2 video

DE mpegts MPEG-2 transport stream format

D mpegtsraw MPEG-2 raw transport stream format

D mpegvideo raw MPEG video

E mpjpeg MIME multipart JPEG format

D msnwctcp MSN TCP Webcam stream

DE mulaw PCM mu-law format

D mvi Motion Pixels MVI format

DE mxf Material eXchange Format

E mxf_d10 Material eXchange Format, D-10 Mapping

D nc NC camera feed format

D nsv Nullsoft Streaming Video

E null raw null video format

DE nut NUT format

D nuv NuppelVideo format

DE ogg Ogg

D oma Sony OpenMG audio

DE oss Open Sound System playback

E psp PSP MP4 format

D psxstr Sony Playstation STR format

D pva TechnoTrend PVA file and stream format

D r3d REDCODE R3D format

DE rawvideo raw video format

E rcv VC-1 test bitstream

D redir Redirector format

D rl2 RL2 format

DE rm RealMedia format

D rpl RPL/ARMovie format

E rtp RTP output format

D rtsp RTSP input format

DE s16be PCM signed 16 bit big-endian format

DE s16le PCM signed 16 bit little-endian format

DE s24be PCM signed 24 bit big-endian format

DE s24le PCM signed 24 bit little-endian format

DE s32be PCM signed 32 bit big-endian format

DE s32le PCM signed 32 bit little-endian format

DE s8 PCM signed 8 bit format

D sdp SDP

D shn raw Shorten

D siff Beam Software SIFF

D smk Smacker video

D sol Sierra SOL format

E svcd MPEG-2 PS format (VOB)

DE swf Flash format

D thp THP

D tiertexseq Tiertex Limited SEQ format

D tta True Audio

D txd Renderware TeXture Dictionary

DE u16be PCM unsigned 16 bit big-endian format

DE u16le PCM unsigned 16 bit little-endian format

DE u24be PCM unsigned 24 bit big-endian format

DE u24le PCM unsigned 24 bit little-endian format

DE u32be PCM unsigned 32 bit big-endian format

DE u32le PCM unsigned 32 bit little-endian format

DE u8 PCM unsigned 8 bit format

D vc1 raw VC-1

D vc1test VC-1 test bitstream format

E vcd MPEG-1 System format (VCD)

D video4linux Video4Linux device grab

D video4linux2 Video4Linux2 device grab

D vmd Sierra VMD format

E vob MPEG-2 PS format (VOB)

DE voc Creative Voice file format

DE wav WAV format

D wc3movie Wing Commander III movie format

D wsaud Westwood Studios audio format

D wsvqa Westwood Studios VQA format

D wv WavPack

D x11grab X11grab

D xa Maxis XA File Format

DE yuv4mpegpipe YUV4MPEG pipe format Codecs:

D V 4xm 4X Movie

D V D 8bps QuickTime 8BPS video

D A 8svx_exp 8SVX exponential

D A 8svx_fib 8SVX fibonacci

D A aac Advanced Audio Coding

D V D aasc Autodesk RLE

DEA ac3 ATSC A/52A (AC-3)

D A adpcm_4xm ADPCM 4X Movie

DEA adpcm_adx SEGA CRI ADX ADPCM

D A adpcm_ct ADPCM Creative Technology

D A adpcm_ea ADPCM Electronic Arts

D A adpcm_ea_maxis_xa ADPCM Electronic Arts Maxis CDROM XA

D A adpcm_ea_r1 ADPCM Electronic Arts R1

D A adpcm_ea_r2 ADPCM Electronic Arts R2

D A adpcm_ea_r3 ADPCM Electronic Arts R3

D A adpcm_ea_xas ADPCM Electronic Arts XAS

D A adpcm_ima_amv ADPCM IMA AMV

D A adpcm_ima_dk3 ADPCM IMA Duck DK3

D A adpcm_ima_dk4 ADPCM IMA Duck DK4

D A adpcm_ima_ea_eacs ADPCM IMA Electronic Arts EACS

D A adpcm_ima_ea_sead ADPCM IMA Electronic Arts SEAD

D A adpcm_ima_iss ADPCM IMA Funcom ISS

DEA adpcm_ima_qt ADPCM IMA QuickTime

D A adpcm_ima_smjpeg ADPCM IMA Loki SDL MJPEG

DEA adpcm_ima_wav ADPCM IMA WAV

D A adpcm_ima_ws ADPCM IMA Westwood

DEA adpcm_ms ADPCM Microsoft

D A adpcm_sbpro_2 ADPCM Sound Blaster Pro 2-bit

D A adpcm_sbpro_3 ADPCM Sound Blaster Pro 2.6-bit

D A adpcm_sbpro_4 ADPCM Sound Blaster Pro 4-bit

DEA adpcm_swf ADPCM Shockwave Flash

D A adpcm_thp ADPCM Nintendo Gamecube THP

D A adpcm_xa ADPCM CDROM XA

DEA adpcm_yamaha ADPCM Yamaha

DEA alac ALAC (Apple Lossless Audio Codec)

D V amv AMV Video

D A ape Monkey's Audio

DEV D asv1 ASUS V1

DEV D asv2 ASUS V2

D A atrac3 Atrac 3 (Adaptive TRansform Acoustic Coding 3)

D V D avs AVS (Audio Video Standard) video

D V bethsoftvid Bethesda VID video

D V bfi Brute Force & Ignorance

DEV bmp BMP image

D V D c93 Interplay C93

D V D camstudio CamStudio

D V D camtasia TechSmith Screen Capture Codec

D V D cavs Chinese AVS video (AVS1-P2, JiZhun profile)

D V D cinepak Cinepak

D V D cljr Cirrus Logic AccuPak

D A cook COOK

D V D cyuv Creative YUV (CYUV)

D A dca DCA (DTS Coherent Acoustics)

DEV D dnxhd VC3/DNxHD

D A dsicinaudio Delphine Software International CIN audio

D V D dsicinvideo Delphine Software International CIN video

DES dvbsub DVB subtitles

DES dvdsub DVD subtitles

DEV D dvvideo DV (Digital Video)

D V dxa Feeble Files/ScummVM DXA

D A eac3 ATSC A/52B (AC-3, E-AC-3)

D V D eacmv Electronic Arts CMV video

D V D eatgq Electronic Arts TGQ video

D V eatgv Electronic Arts TGV video

D V D eatqi Electronic Arts TQI Video

D V D escape124 Escape 124

DEV D ffv1 FFmpeg codec #1

DEVSD ffvhuff Huffyuv FFmpeg variant

DEA flac FLAC (Free Lossless Audio Codec)

DEV D flashsv Flash Screen Video

D V D flic Autodesk Animator Flic video

DEVSD flv Flash Video (FLV)

D V D fraps Fraps

DEA g726 G.726 ADPCM

DEV gif GIF (Graphics Interchange Format)

DEV D h261 H.261

DEVSDT h263 H.263 / H.263-1996

D VSD h263i Intel H.263

EV h263p H.263+ / H.263-1998 / H.263 version 2

D V D h264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10

D V D h264_vdpau H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (VDPAU acceleration)

DEVSD huffyuv Huffyuv / HuffYUV

D V D idcinvideo id Quake II CIN video

D A imc IMC (Intel Music Coder)

D V D indeo2 Intel Indeo 2

D V indeo3 Intel Indeo 3

D A interplay_dpcm DPCM Interplay

D V D interplayvideo Interplay MVE video

DEV D jpegls JPEG-LS

D V kmvc Karl Morton's video codec

EV libdirac libdirac Dirac 2.2

EA libfaac libfaac AAC (Advanced Audio Codec)

D A libfaad libfaad AAC (Advanced Audio Codec)

DEA libgsm libgsm GSM

DEA libgsm_ms libgsm GSM Microsoft variant

EA libmp3lame libmp3lame MP3 (MPEG audio layer 3)

DEA libopencore_amrnb OpenCORE Adaptive Multi-Rate (AMR) Narrow-Band

D A libopencore_amrwb OpenCORE Adaptive Multi-Rate (AMR) Wide-Band

D V libopenjpeg OpenJPEG based JPEG 2000 decoder

DEV libschroedinger libschroedinger Dirac 2.2

D A libspeex libspeex Speex

EV libtheora libtheora Theora

EA libvorbis libvorbis Vorbis

EV libx264 libx264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10

EV libxvid libxvidcore MPEG-4 part 2

EV ljpeg Lossless JPEG

D V D loco LOCO

D A mace3 MACE (Macintosh Audio Compression/Expansion) 3:1

D A mace6 MACE (Macintosh Audio Compression/Expansion) 6:1

D V D mdec Sony PlayStation MDEC (Motion DECoder)

D V D mimic Mimic

DEV D mjpeg MJPEG (Motion JPEG)

D V D mjpegb Apple MJPEG-B

D A mlp MLP (Meridian Lossless Packing)/TrueHD

D V D mmvideo American Laser Games MM Video

D V D motionpixels Motion Pixels video

D A mp1 MP1 (MPEG audio layer 1)

DEA mp2 MP2 (MPEG audio layer 2)

D A mp3 MP3 (MPEG audio layer 3)

D A mp3adu ADU (Application Data Unit) MP3 (MPEG audio layer 3)

D A mp3on4 MP3onMP4

D A mpc7 Musepack SV7

D A mpc8 Musepack SV8

DEVSDT mpeg1video MPEG-1 video

D V DT mpeg1video_vdpau MPEG-1 video (VDPAU acceleration)

DEVSDT mpeg2video MPEG-2 video

DEVSDT mpeg4 MPEG-4 part 2

D VSDT mpegvideo MPEG-1 video

D V DT mpegvideo_vdpau MPEG-1/2 video (VDPAU acceleration)

D VSDT mpegvideo_xvmc MPEG-1/2 video XvMC (X-Video Motion Compensation)

DEVSD msmpeg4 MPEG-4 part 2 Microsoft variant version 3

DEVSD msmpeg4v1 MPEG-4 part 2 Microsoft variant version 1

DEVSD msmpeg4v2 MPEG-4 part 2 Microsoft variant version 2

D V D msrle Microsoft RLE

D V D msvideo1 Microsoft Video 1

D V D mszh LCL (LossLess Codec Library) MSZH

DEA nellymoser Nellymoser Asao

D V D nuv NuppelVideo/RTJPEG

DEV pam PAM (Portable AnyMap) image

DEV pbm PBM (Portable BitMap) image

DEA pcm_alaw PCM A-law

D A pcm_dvd PCM signed 20|24-bit big-endian

DEA pcm_f32be PCM 32-bit floating point big-endian

DEA pcm_f32le PCM 32-bit floating point little-endian

DEA pcm_f64be PCM 64-bit floating point big-endian

DEA pcm_f64le PCM 64-bit floating point little-endian

DEA pcm_mulaw PCM mu-law

DEA pcm_s16be PCM signed 16-bit big-endian

DEA pcm_s16le PCM signed 16-bit little-endian

D A pcm_s16le_planar PCM 16-bit little-endian planar

DEA pcm_s24be PCM signed 24-bit big-endian

DEA pcm_s24daud PCM D-Cinema audio signed 24-bit

DEA pcm_s24le PCM signed 24-bit little-endian

DEA pcm_s32be PCM signed 32-bit big-endian

DEA pcm_s32le PCM signed 32-bit little-endian

DEA pcm_s8 PCM signed 8-bit

DEA pcm_u16be PCM unsigned 16-bit big-endian

DEA pcm_u16le PCM unsigned 16-bit little-endian

DEA pcm_u24be PCM unsigned 24-bit big-endian

DEA pcm_u24le PCM unsigned 24-bit little-endian

DEA pcm_u32be PCM unsigned 32-bit big-endian

DEA pcm_u32le PCM unsigned 32-bit little-endian

DEA pcm_u8 PCM unsigned 8-bit

DEA pcm_zork PCM Zork

D V pcx PC Paintbrush PCX image

DEV pgm PGM (Portable GrayMap) image

DEV pgmyuv PGMYUV (Portable GrayMap YUV) image

DEV png PNG image

DEV ppm PPM (Portable PixelMap) image

D V ptx V.Flash PTX image

D A qcelp QCELP / PureVoice

D A qdm2 QDesign Music Codec 2

D V D qdraw Apple QuickDraw

D V D qpeg Q-team QPEG

DEV D qtrle QuickTime Animation (RLE) video

DEV rawvideo raw video

D A real_144 RealAudio 1.0 (14.4K)

D A real_288 RealAudio 2.0 (28.8K)

D V D rl2 RL2 video

DEA roq_dpcm id RoQ DPCM

DEV D roqvideo id RoQ video

D V D rpza QuickTime video (RPZA)

DEV D rv10 RealVideo 1.0

DEV D rv20 RealVideo 2.0

D V D rv30 RealVideo 3.0

D V D rv40 RealVideo 4.0

DEV sgi SGI image

D A shorten Shorten

D A smackaud Smacker audio

D V smackvid Smacker video

D V D smc QuickTime Graphics (SMC)

DEV snow Snow

D A sol_dpcm DPCM Sol

DEA sonic Sonic

EA sonicls Sonic lossless

D V D sp5x Sunplus JPEG (SP5X)

D V sunrast Sun Rasterfile image

DEV D svq1 Sorenson Vector Quantizer 1

D VSD svq3 Sorenson Vector Quantizer 3

DEV targa Truevision Targa image

D V theora Theora

D V D thp Nintendo Gamecube THP video

D V D tiertexseqvideo Tiertex Limited SEQ video

DEV tiff TIFF image

D V D truemotion1 Duck TrueMotion 1.0

D V D truemotion2 Duck TrueMotion 2.0

D A truespeech DSP Group TrueSpeech

D A tta True Audio (TTA)

D V txd Renderware TXD (TeXture Dictionary) image

D V D ultimotion IBM UltiMotion

D V vb Beam Software VB

D V vc1 SMPTE VC-1

D V D vc1_vdpau SMPTE VC-1 VDPAU

D V D vcr1 ATI VCR1

D A vmdaudio Sierra VMD audio

D V D vmdvideo Sierra VMD video

D V vmnc VMware Screen Codec / VMware Video

DEA vorbis Vorbis

D V vp3 On2 VP3

D V D vp5 On2 VP5

D V D vp6 On2 VP6

D V D vp6a On2 VP6 (Flash version, with alpha channel)

D V D vp6f On2 VP6 (Flash version)

D V D vqavideo Westwood Studios VQA (Vector Quantized Animation) video

D A wavpack WavPack

DEA wmav1 Windows Media Audio 1

DEA wmav2 Windows Media Audio 2

DEVSD wmv1 Windows Media Video 7

DEVSD wmv2 Windows Media Video 8

D V wmv3 Windows Media Video 9

D V D wmv3_vdpau Windows Media Video 9 VDPAU

D V D wnv1 Winnov WNV1

D A ws_snd1 Westwood Audio (SND1)

D A xan_dpcm DPCM Xan

D V D xan_wc3 Wing Commander III / Xan

D V D xl Miro VideoXL

D S xsub XSUB

DEV D zlib LCL (LossLess Codec Library) ZLIB

DEV zmbv Zip Motion Blocks Video Bitstream filters:

text2movsub remove_extra noise mov2textsub mp3decomp mp3comp mjpegadump imxdump h264_mp4toannexb dump_extra

Supported file protocols:

file: gopher: http: pipe: rtp: tcp: udp:

Frame size, frame rate abbreviations:

ntsc pal qntsc qpal sntsc spal film ntsc-film sqcif qcif cif 4cif Note, the names of encoders and decoders do not always match, so there are

several cases where the above table shows encoder only or decoder only entries

even though both encoding and decoding are supported. For example, the h263

decoder corresponds to the h263 and h263p encoders, for file formats it is even

worse.

And that’s just about all I have to say about that.