Windows Codecs FAQ
Codecs in Windows and video playback softwares
Author : Grendizer, Created on: 2006, June the 25th . Last change on: 2009-10-19 20:56
ABOUT THIS FAQ
Understanding how codecs work in Windows is tricky. I decided to share the knowledge I earn in some web sites and forum because I know many people are confronted with the same question. Each important ideas and information that we share on the web forums will be added here. I mostly dwell in the BsPlayer forum at http://www.bsplayer.com , my nickname is "Grendizer".
This FAQ applies to versions of Windows from Windows XP Pro SP2 to Windows Vista 64 bits SP1. A lot of this text is copied pasted from web sites and forums.
Update, august 2008: I now use Vista and it's working as well as Windows XP for Video playback, but I'm still waiting for a more simple way to deal with video playback and codecs. Update, april 2009: I heard something will replace DirectShow in Windows 7 (called "Media Foundation"), maybe a chance to get out of codecs hell?
HOW TO CONTACT THE AUTHOR OF THIS FAQ
My name is David Saber (aka "Grendizer"). if you want to email me, write to : [first name] [at] [first name] [last name] [.] [com]
HOW DOES THE PLAYBACK OF A VIDEO FILE WORK IN WINDOWS?
It depends whether the software is based upon the older Video for Windows system or DirectShow. Some players use both methods. See next questions.
HOW DOES THE PLAYBACK OF A VIDEO FILE WORK WITH VIDEO FOR WINDOWS?
There's a FourCC header at the beginning of the .AVI that tells the player to use that same codec for playback (decompressing). For Video for Windows, only one codec can be "registered" for a specific type of video (the FourCC). In some cases, people need to change the FourCC header with this program: AVI FourCC Code changer http://www.inmatrix.com/files/avic_download.shtml . More about the FourCC code below.
WHAT IS MICROSOFT DIRECTSHOW®?
DirectShow is a generic framework developed primarily for client-side streaming. Pluggable COM objects called filters are connected within a data-flow topology called a filter graph to implement streaming solutions. Microsoft provides a large number of filters to support many application areas. Developers can also create custom filters. DirectShow became an integral part of Microsoft DirectX® starting with version 8.0.
HOW DOES THE PLAYBACK OF A VIDEO FILE WORK WITH DIRECTSHOW?
I must first explain how a stream is handled in Windows. A stream is the course of a multimedia resource, going through several steps, from the file on the hard drive to the final broadcast of the video and audio. It works in different ways according to the type of resource and the type of the output.
Let's take 3 examples: the reading of a *.wav file, the reading of an MPEG2 file and the reading of an *.avi file containing "DV video" inside. The 3 files are on the hard drive and we want to play them in a video playback software.
****.WAV:
1: Opening of the file from the hard drive.
2: Handling of the audio data from this file.
3: Rendering of the audio (in the video playback software).
**** MPEG2 :
1: Opening of the file from the hard drive.
2: Demultiplexing of the datas. The opened data is made of video and audio, and they must be separated. Indeed, the audio data must go to the sound card, while the video data must go to the graphic card. The demultiplexing is done by an item called "demultiplexer" or "splitter".
3: Decompression of the 2 data streams. In the MPEG2 format, video and audio are compressed. So the video will be decompressed by a video codec, and the audio will be decompressed by an audio codec.
4: Rendering of the audio and video.
**** DV inside AVI
Take a look at this picture to understand what's going on between the opening of the file and its rendering : http://david.saber.free.fr/bazaar/codecs/DVAVI.jpg (or local link here).
Each one of those blue boxes is a DirectShow filter. It starts on the left with a file source filter which is responsible for reading the actual bytes from the AVI file on the disk and passing them on to the next filter. The AVI Splitter filter then extracts the actual DV data from the AVI data and sends those bits along (sometimes, a source filter is also a splitter filter). The DV data contains the video and the audio interleaved together so the DV Splitter takes that data and separates the video and the audio data. The audio data is sent to the Default DirectSound Device filter which will send the audio to the sound card so you can hear it. The video data from the DV file is sent to the DV Video Decoder. As you’ve probably guessed by now the DV Video Decoder is a DirectShow filter that internally uses the DV codec to decode the DV data to get the uncompressed video data. This video data is then sent to the Video Renderer which will display the video on your screen.
MORE ABOUT VIDEO FOR WINDOWS VS DIRECTSHOW
Video for Windows (VfW) codecs use the FourCC to define what compression it can handle and the computer's registry has a list of FourCCs that are available and which specific codec file is used. This is obviously very limiting since only one codec for a given format can be "registered". Also limiting is the fact that the codec FourCC is - well - just four characters. As new compressions schemes come along, a new FourCC has to be invented.
In the DirectShow world, a codec is still registered with the computer. Instead of a FourCC, a much more complicated item is used called a Universally Unique Identifier (UUID) that is more like a "SixteenCC". It is written (usually) in hexadecimal format, e.g: {B65D9851-0B54-11DA-B692-001150776A3C}
Unlikely the VfW case when the computer's registry holds a list of FourCCs and the corresponding files to use, DirectShow queries a DirectShow codec to see if it can support a specific compression scheme. This querying occurs when an application needs a codec. More than one codec for the same compression can exist and the one with the highest 'merit' generally wins.
In both DirectShow and VfW cases, the application (e.g., a media player) can completely bypass the operating system's selection process and explicitly load a particular codec. This is one way to get around the limitation with VfW. Let's say I have a media player and I always want it to use my version of a codec - I just need to know where the codec is and load it.
Finally, DirectShow can "wrap" VfW codecs so that VfW codecs can be visible to DirectShow applications.
WHAT IS A STREAM?
With DirectShow, a stream is the course of a multimedia resource, from the file on the hard drive to the final broadcast of the video and audio. It works in different ways according to the type of resource and the type of the output.
WHAT IS A CONTAINER?
A container is a file that contains other files or tracks: a video track, an audio track, a subtitle track. Examples of containers : *.avi, *.divx, *.mov, *.vob, *.wmv, *.mkv, *.ratdvd, *.mp4, *.ogm, etc.
WHAT IS A FILTER?
In the DirectShow course of an audio-video stream, from the video file to the render (playback inside the media player), there are several steps. The stream will go through filters and codec filters before it is finally rendered.Take a look at this picture to understand what's going on between the opening of the file and its rendering : http://www.davidsaber.com/resources/art_codecsfaq/dvavi.jpg
In the graph used to render an audio-video file, ALL items (steps) are filters, even the input and the output items of the graph. Some filters use a codec to decompress a video or audio, then pass it to the next step. In the case of an audio-video decoder filter, that particular filter will sometimes be referred to as a codec just for quickness. However there are many other DirectShow filters that aren’t associated with a codec. These are just called "filters".
A filtre is kind of a program that does a specific task inside a multimédia stream (not only decoding).
WHAT IS A CODEC?
The word codec is short for compressor/decompressor. When you install a video codec on your computer, what you really are doing is giving the Media Player instructions how to compress/decompress movies in that file format. If the needed codec is missing you will receive an error message that Media Player is unable to download an appropriate decompressor, or the file type is unknown.
In the DirectShow graph that is used from the video file to the render (playback inside the media player), codecs are not the only things that are used. There are also filters and demultiplexers. Many people call all those things "codecs", and even call containers as "codecs", but it is not correct.
Take a look at this picture to understand what's going on between the opening of the file and its rendering : http://www.davidsaber.com/resources/codecsfaq/DVAVI.jpg , local link.
ARE CODECS STANDALONES OR PART OF THE VIDEO PLAYBACK PROGRAM?
Some players use internal codecs, some players use Windows based standalone codecs, and some players will use internal and standalone codecs. See the "internal codecs" question for more info.
With directshow as well as with Video For Windows, codecs are standalones. Both types of codec are simply executable Windows files and the idea for both kinds is that the codec is available to any application that calls for it.
HOW CAN I SEE THE FOURCC CODE OF AN AVI FILE?
In Gspot 2.52, on the right side, under "c, S", in front of "Codec", is the FourCC code.
IS THERE A SOFTWARE THAT WILL LET ME CHECK THE LIST OF EVERY CODECS INSTALLED ON WINDOWS?
**** Gspot: http://www.headbands.com/gspot/ . Open Gspot v2.52, go to the menu "system" then "list codecs and other filters".
There seem to be a problem in Gspot 2.52, as this list is not complete. A more complete list can be seen in DXMan, BsPlayer and AviCodec.
Gspot also has a database of known codecs: in the menu "tables" you can see a list of all codecs known by Gspot (not necessarily installed on your comp).
**** DXMan: http://www.analogx.com/contents/download/audio/dxman.htm .
**** Bsplayer: http://www.bsplayer.org/ : in right click > options > preference > filter management > filter manager.
**** AviCodec: http://avicodec.duby.info/ : in the filters and codecs tab.
**** Graphedit: in the graph menu > add filter dialog. There is an old version of Graphedit at this address : http://www.doom9.org/Soft21/Filters/graphedit.rar . It is also downloadable inside the Microsoft Windows SDK (Software Development Kit): http://www.microsoft.com/downloads/details.aspx?FamilyId=E6E1C3DF-A74F-4207-8586-711EBE331CDC&displaylang=en. In November 2008, you get the version 6.1 of this package and version 9 of Graphedit. After you install, Graphedit will not appear in the start menu. You have to create a shorcut yourself. You find Grahedit 's Exe in : "C:\Program Files\Microsoft SDKs\Windows\v6.1\Bin\x64\graphedt.exe"
WHAT IS AN INTERNAL CODEC?
- Some softwares use internal codecs, they do not only use the codecs installed on Windows, they use also their own codecs. For example, VLC uses its own codecs. Media Player Classic uses its own codecs as well as Windows based codecs. BsPlayer has a small amount of internal codecs, but generaly uses the codecs installed on Windows.
Some players use both methods, internal and standalone codecs: they will first try to use their own codecs, but if no internal filter can be used, then they will querry external filters, like any other Direct Show application.
- Let's take an example with the playback of Quicktime files:
The VLC Player (http://www.videolan.org/) can read Quicktime files with no other installation needed, because VLC uses its own libraries.
BsPlayer hasn't any Quicktime thing built in, you'll need to install Quicktime Alternative or the official Quicktime Player to watch mov files. But the version of Quicktime Alternative I was using in July 2006 seems to have problems, especially with the DirectShow splitter filter.
Media Player Classic has a MP4/MOV splitter built in, but no Quicktime codec, you have to install a QuickTime codec (Alternative or that from Apple) to view Qt movies with MPC. As far as what I've understood, MPC does include some filters. It's not a 100% directshow app like BSP. Those filters are generally codecs and splitters. You can see the list of those filters in the MPC option dialog. I understood MPC opens the file, splits the video and audio, then sends them to the directshow graph.
- Since around the year 2008, BsPlayer v2.x has a new feature called "local codecs", read the following paragraph for more info.On the startup of a video file, BsPlayer will search the system for the needed codec, and if it doesn't find it
BSPLAYER'S LOCAL CODECS
- Since around the year 2008, BsPlayer v2.x has a new feature called "local codecs". On the startup of a video file playback, BsPlayer will search the system for the needed codec, and if it doesn't find it , it will download it, and save it in c:\users\username\appdata\roaming\BsPlayer folder. Only BsPlayer will use this downloaded codec, other programs won't.
- Good or bad? This function is handy because the media player will always find the latest version of the needed codec. But it is also a problem because the other software cannot use this downloaded codec.
From the moment BsPlayer uses its local codecs, it will not fully obey the DirectShow rules in Windows. This means that tools like Gspot or Graphedit do not show exactly what's going on inside bsplayer when a video is played. On the other hand BS.Player itself shows this when a video is loaded/played: (rightclick > ) Options > Preferences > Filters > Advanced.
- What happens if one wants to come back to Windows-based codecs instead of BsPlayer-installed local codecs ? Is there a way to disable the internal codecs and to tell Bsplayer to use the Windows based codecs instead?
Copying the codec from the appdata-BsPlayer folder to the "program files" folder and re-registering it does not work.
Also, I found out that uninstalling the codec, deleting the codec's folder from the appdata-BsPlayer folder , and reinstalling the codec, does not work. Here is an example with Ffdshow:
I didn't like the Ffdshow program to be inside the c:\users\appdata\roaming\BsPlayer folder. I like it better when it is installed in c:\program files (x86)\ffdshow, better for the program's updates. So I uninstalled FFdshow 32 bits, then deleted the folder inside this bsplayer folder, rebooted, then re installed FFdshow 32, rebooted, then played a video that should be decoded by FFdshow: Only the sound played well, as for the video: sometimes it played, sometimes it stays frozen on the first frame. In bsplayer > right click > options > filters > no FFdshow appears. Other codecs appears for the decoding of the audio and video. The 2 Ffdshow icons do not appear anymore in the systray. Using Windows Media Player, these 2 icons appear in the systray.
- Why all these problems occured? Because I installed BS.Player and at some time allowed it to instal "local codecs" (meaning for exclusive use by BS.Player and not any other application; also meaning that those codecs leave other applications alone with respect to the codecs they use.). I then removed ffdshow from BS.Player's "appdata\roaming" folder and installed ffdshow for generic use, but the problem is that BS.Player was still thinking it should only look "locally" for its codecs.
- How to fix this problem? I fixed it by , first: uninstalling BS.Player Prolite. During the uninstall process , it also uninstalled all "internal" codecs. Then I installed a fresh new version of my new purchased licensed BsPlayer Pro 2.40. The install process triggered BsPlayer's "Codec Manager". This nice tool let me see which codecs were installed, uninstalled, and also it shows the difference between "local" and "system" installed codecs. From the "Codec manager", one *should* be able to uninstall a local codec, and then install the same codec as "system based" (available for all Windows applications) , thus switching this codec from local to "global". However, with BsPlayer 2.43, it didn't work. I had to install ffdshow "globally", uninstall BsPlayer and reinstall BsPlayer for the codec to work with the video player software. After this install was finsihed, I ran BsPlayer's Codec Manager again, and everything was fine: the Codec Manager was showing Ffdshow as installed and system based, and the playback of a divx triggered the 2 systray Ffdshow icons.
- BsPlayer's "Codec manager" is hidden to the user, but is available in "C:\Program Files (x86)\Webteh\BSplayerPro\bspcodecdl.exe". This exe was then renamed to "codecmanager.exe". This should be available from BsPlayer's right click and in the start menu BsPlayer folder. I made a shortcut of this tool inside my start menu BsPlayer folder. Perhaps the Weteh developpers should take care of that.
HOW CAN I CHECK THE LIST OF ALL INTERNAL CODECS IN A VIDEO PLAYBACK PROGRAM?
In Media Player Classic : view menu > options > internal filters.
In VLC, some codecs are unified in libraries. For example, Divx is supported by the ffmpeg library. Trying to read and separate the libraries in VLC is a daunting task. It is best to look at supported formats on line : http://www.videolan.org/vlc/features.html .
In BsPlayer : I don't know.
WHAT'S BEST, INTERNAL OR EXTERNAL CODECS?
My personal opinion : I prefer players that use external codecs (like BsPlayer) than internal codecs (like Gom or VLC). The reason is when an update is done on a codec (like Divx), you need to wait for the developers of the software to code the new version of their internal codecs. SO they have a lot of codecs to update, you can’t be sure their internal codec will be as good as the original one.
HOW CAN I KNOW WHICH CODECS ARE NEEDED TO PLAY SOME VIDEO?
You'll need to install some applications for that.
**** GSPOT :
To find out which video codec you're missing you should download GSpot and open the movie you are having problems playing. The program will give you information about what codecs are needed to play the movie and if you have them installed on your computer. However, please note that even though GSpot might say that you have compatible codecs installed this information isn't always correct.
To see which codec is actually used to decode the video, use the "Render" option at the bottom of the program. If GSpot says "Rendering failed" or "Partial failure" then you don't have any compatible video codec installed.
Gspot identifies the filters ABLE to decode the streams. The "render" buttons (bottom right of the interface, reading 1, 2 and 3) will tell you which filters will actually be used for the playback. First Gspot will give you all possible graphs, then it will give you the graphs that work. Non valid graphs will be put in red, valid graphs will be green. Sometimes , several graphs are considered valid. After the last step of the rendering, the graph should look the same as in Graphedit, but sometimes, some differences persist.
Gspot is a good program, however, Gspot only works with *.avi and MPEG files. if you open, say, a MOV file using Gspot, it will give you limited information about it. If you render the file, it will show what filters DirectShow is attempting to use in order to play the file, but it will not tell what codecs are needed to play the MOV properly.
**** AviCodec: http://avicodec.duby.info/ : Recognized formats : Natively : AVI, ASF & WMV, Real (.rm, .rmvb), Ogg (.ogg, .ogm), Mpeg-(S)VCD-DVD (.mpg, .vob) .
**** mp4ui: http://mp4ui.sourceforge.net/ : this will analyse MP4 container files.
**** MkvToolNix: http://bunkus.org/videotools/mkvtoolnix/ : MkvToolNix is used to create Matroska (*.mkv) files from elementary streams. But it can also be handy in finding out information about existing Matroska, MP4 or AVI files. To determine the format of streams contained within a MKV open MMG -- a GUI to mkvmerge -- and drop the MKV in this window. The Tracks pane will show the codec ID (http://www.matroska.org/technical/specs/codecid/index.html) of each elementary stream. If you choose to remux the opened file, the status dialog box might show longer description of the "demultiplexer" and "output module" used for each stream, such as "MPEG-4 Part 10". After that you can choose to cancel the muxing process and discard the newly created file.
**** MediaInfo: http://mediainfo.sourceforge.net/en : This is a very cool program, very clear and easy to use. It will give informations about many container formats, and YES, it can open MOV/Quicktimes!! :)
**** GRAPHEDIT :
Graphedit is not as quick as Gspot to use, but it will work with any kind of container. Just click on « File » > « Render Media File », and browse to the file, and voilà, you can see your complete graph. From Windows Explorer, you can also right click on the video file and open with Graphedit. However, if the graph is cut by a missing codec, Graphedit will not tell you which codec is missing. It just shows what filters are used on your system for the playback of this file.
HOW CAN I CHECK THE VERSION NUMBER OF A CODEC OR FILTER, IN THE LIST OF DIRECTSHOW FILTERS?
Example with bsPlayer: open a video in BsPlayer, right click on the video windows, go to options > filters > advanced > on the left side are the names of the filters, on the right side are the information about this filter.
HOW CAN I SEE THE CODECS USED DURING THE PLAYBACK OF A VIDEO?
In BsPlayer: right click on the video or control window > options > filters.
In VLC: Right click -> Miscelaneous -> Media Info then go to the advanced information tab.
In Media Player Classic : play menu > filters.
HOW DOES WINDOWS DECIDE WHICH CODEC TO USE?
Let's say I have the Divx codec installed on Windows. I also have the ffdshow codec installed (it can read divx). Now when I play a divx video, one of these 2 codecs will be chosen by Windows. How does Windows make this choice? What makes a codec have a higher priority?
For DirectShow, you can have multiple codecs all registered for the same video format (e.g., a DV codec by Microsoft, MainConcept, Panasonic, Enosoft). The information contained within the computer's registry about the codec contains an entry called FilterData. Part of the FilterData entry is a "merit" value. (Some kinds of filters called DMOs have an entry called "Merit" instead of the FilterData). Basically, it is this merit value that determines the priority. Some actually have a merit of "Do not use" - this means that the operating system will never choose it - to use it, it has to be explicitly requested by the application.
MY DIRECTSHOW GRAPH IS POLLUTED BY A FILTER THAT DOES NOT WORK, WHAT SHOULD I DO?
You need to replace the bad filter in this graph by another one that will do the same job in a better way. Check the questions "How do I uninstall a codec?" and "How can I register/unregister a codec?"
But before you go changing filters on your hard drive, you can test a new graph setup using Graphedit. GraphEdit is a great tool that you can use to create and test a filter graph to play a media type that you plan on using in your program. I won't go into details on how to use GraphEdit, but it's nice that you know it and use it before you end up wasting time removing or installing a lot of filters, only to realize that 2 certain filters don't agree on a data type.
The first thing to do is to select "Render Media File" from the menu and select the media file that you wish to playback. GraphEdit will attempt to build a graph that is capable of playing back the file you chose. If it succeeds, you can press the 'play' button on the toolbar to run your graph. If it fails, you should select "Graph->Insert Filters" from the menu, and look for any alternate filters that may work with your media type that you can try connecting into your graph. Sometimes the default decoder or renderer that GraphEdit places in the graph is not the desired one, or doesn't work, and on occasion you may find an alternate filter that will work better. The most important thing is to find a combination of filters that successfully render your media, because if it doesn't work in GraphEdit, it's not going to work in your DirectShow based video playback program.
If you want information about the filters you are dealing with, memorize the filter name, get the info on the filters list inside the "graph > insert filter" dialog.
While building the graph, unfortunately it's not possible to disconnect a single filter as it would be practically impossible to recheck all the possible changes involved to the underlying system files (every block represents one or more dll or activex that needs to have its compatibility with the other options checked and in turn for the whole sequence too) on real time. The only option unfortunately is to disconnect everything.
MY DIRECTSHOW GRAPH IS NOT COMPLETE, IT IS "CUT" AT SOME POINT, WHAT TO DO?
This mainly happens when the splitter sends the audio to a decoder, but not the video, or conversely. See the following picture for an example of such an incomplete graph: http://www.davidsaber.com/resources/art_codecsfaq/graphedit_mp4.jpg , local link. The problem here is that the splitter that is installed on the system, for this kind of file, is not doing its work properly. So, my advice is to install another splitter.
A VIDEO FILE CRASHES MY VIDEO PLAYER SOFTWARE.
To know if this is a DirectShow crash, open the file with Graphedit. If Graphedit crashes, open the file with Gspot and render it. Gspot will tell you what is the filter that is causing the crash.
HOW DO I UNINSTALL A CODEC?
If a codec is annoying you, you can either uninstall it, unregister it, or lower its merit.
- For unregistering and tweaking the merit, see the related questions.
- To uninstall, just run the uninstall program.
- But if a codec does not have any uninstall program, unregistering and deleting the ax file will do it in most cases. You could also try the following programs: DXMan (http://www.analogx.com/contents/download/audio/dxman.htm) and Codec Sniper (http://www.videohelp.com/tools?tool=Codec_Sniper). Codec_Sniper did not work well on my system. For VfW codec's, there are a few more registry filters that you might want to clean out (such as HKLM\SYSTEM\CurrentControlSet\Control\MediaResources\icm), but they aren't as important. If a dshow filter did have an uninstaller, all it would do is unregister and delete the file.
- Codecs can also be removed using Window's own possibilities: e.g. through rightclick on My computer > Properties > .... or through [Start] > Settings > Control panel > System > .... followed by (for both "routes") .... > Hardware > Device manager > Sound, Video and Game controllers > .... Now you can doubleclick on "audio codecs" or "video codecs" and select [Properties] and there they are ...
HOW CAN I CHECK AND CHANGE THE MERIT OF A FILTER OR CODEC?
**** Gspot: Open Gspot > options > settings > expert mode. Then go to the system menu > list codecs and filters > right click on a codec > set filter merit.
**** Bsplayer: http://www.bsplayer.org/ : in right click > options > preference > filter management > filter manager.
HOW CAN I UNREGISTER A CODEC?
First you need to identify the codec which you want to unregister (because it is causing problems). Use Gspot to render the media file, then right clikc on the codec you don't want, choose "details on this filter". The dialog will give you the path of this filter (usually with an *.ax extension). Now you need to unregister the filter. You can use different programs for that.
**** CMD : open a command line window, then type in : regsvr32 [path of the codec file][name_of_codec_file] /u
**** GSPOT : Open Gspot > options > settings > expert mode. Then go to the system menu > list codecs and filters > right click on a codec > unregister.
Now, re-render the file to check if the codec is gone and if the new graph suits you.
**** Bsplayer: http://www.bsplayer.org/ : in right click > options > preference > filter management > filter manager.
HOW CAN I REGISTER A CODEC?
DirectShow Filters carry the file extension of .AX. For the most part you will be dealing with only .AX files, but this same process will also work for .DLL files.
**** Bsplayer: : in right click > options > preference > filter management > filter manager > click on the "register" button > browse to the filter file > and voilà.
**** CMD :
1: Locate the .AX file in question. Most of the time these are stored in C:\Windows\System32 or in C:\Program Files\\.
2: Goto Start>>Run>>Type “regsvr32.exe C:\Location\of the\ax file\filter.ax“ - Then Hit Enter
3: It should say it succeeded, if not you likely name to change the path so it is correct.
HOW CAN I SET OPTIONS FOR A CODEC?
It should have its own control pannel that you could open from the start menu. Otherwise you can access these controls by rendering the video file in Graphedit or Gspot, and right click on it. Also from the list of available codecs on your system. Some codecs/filters have no options.
WHAT IS THE BEST CODEC FOR DVD PLAYBACK?
I am looking for a good comparison test for DVD codecs. Unfortunately, they are hard to find on the web. There is one at : http://www.videohelp.com/compdvdsoft.htm , but I would like to see more decoders compared in a more recent test.
For now, my personal choices are the Nvidia, the Moonlight Elecard and the WinDVD decoders, as advised on some forums. The new Nvidia MPEG2 decoder is regarded as one of the best now. It can run in both hardware accellerated and full software mode. It exposes all the "PureVideo" functionality of nVidia cards when used in hardware accellerated mode. The Nvidia decoders come with the TheatreTek program, or as standalones from nvidia.com.
DOES THE MPEG2 CODEC INSTALLED ON WINDOWS DECODE ALSO THE AUDIO ON THE DVD'S?
No, it only decodes video. Usually, a DVD software or codec comes with a DVD audio codec that does this job. Also, an independant audio codec can decode the audio streams of DVD's. For example: AC3Filter v1.01. It can decode LPCM, AC-3, DTS and (I think) MP2 audio.
I CAN'T PLAY DVD'S USING BSPLAYER AND NVIDIA'S PUREVIDEO MPEG2 DECODER, WHY?
If you are using the Nvidia DVD MPEG2 codecs to read DVD videos, in BsPlayer, the video may be totally blurred, you'll only see messy horizontal stripes. In Windows Media Player 9, it works perfectly. For both applications, you will see that the Nvidia decoder is used, because there is a NVidia decoders icon in the systray popping up as soon as the dvd-video starts. Also BsPlayer tells you that this decoder is in use (by right click > options > filters).
Unfortunally, to use Purevideo, the Nvidia MPEG2 decoder is not enough. Each video player software must also be compatible with this codec. According to this article in french: http://www.presence-pc.com/tests/ATI-VideoShaders-NVIDIA-PureVideo-330/5/ , the PureVideo decoder is adapted to some software, not to all.
Otherwise try Elecard decoder (or just install K-Lite Mega Codec Pack and select playback only. Install it only if you know what you are going to do)
WHAT VIDEO CODECS DOES BLU-RAY SUPPORT?
MPEG-2 - enhanced for HD, also used for playback of DVDs and HDTV recordings.
MPEG-4 AVC - part of the MPEG-4 standard also known as H.264 (High Profile and Main Profile).
SMPTE VC-1 - standard based on Microsoft's Windows Media Video (WMV) technology.
Please note that this simply means that all Blu-ray players and recorders will have to support playback of these video codecs, it will still be up to the movie studios to decide which video codec(s) they use for their releases.
WHAT AUDIO CODECS DOES BLU-RAY SUPPORT?
Linear PCM (LPCM) - offers up to 8 channels of uncompressed audio.
Dolby Digital (DD) - format used for DVDs also known as AC3, offers 5.1-channel surround sound.
Dolby Digital Plus (DD+) - extension of DD, offers increased bitrates and 7.1-channel surround sound.
Dolby TrueHD - extension of MLP Lossless, offers lossless encoding of up to 8 channels of audio.
DTS Digital Surround - format used for DVDs, offers 5.1-channel surround sound.
DTS-HD - extension of DTS, offers increased bitrates and up to 8 channels of audio.
Please note that this simply means that all Blu-ray players and recorders will have to support playback of these audio codecs, it will still be up to the movie studios to decide which audio codec(s) they use for their releases.
WHAT VIDEO CODECS DOES HD DVD SUPPORT?
Technically, the HD DVD disc builds on the experience gained from the conventional DVD format. There is a choice of three video compression strategies for example: MPEG-2 HL [a higher resolution version of MPEG-2 ML used on existing DVDs]; AVC [MPEG-4] which achieves comparable quality at a significantly lower bit rate and VC-1 [previously known as Windows Media 9 from Microsoft]. The file structure on the disc adopts UDF 2.5.
WHAT AUDIO CODECS DOES HD DVD SUPPORT?
Audiophiles are well catered for in the new HD DVD format. The existing Dolby Digital [AC-3] and MPEG codecs are joined by Dolby Digital Plus (lossy) and DTS (lossy) as mandatory. Support for 2-channel LPCM, which may be used on current DVDs, is also mandated, along with the 2-channel MLP format that has been adopted for DVD-Audio. DTS HD is adopted as an option for lossless audio.
WHAT'S INSIDE A VOB FILE?
A VOB contains several streams multiplexed together: Video, Audio and Subtitles.
- Video is MPEG-2.
A VOB can contain one main video stream and several multiangle streams, allowing you to switch (as an example) the perspective during the movie. This feature is mostly used to display storyboards or other extra features during playback. The maximum bitrate of the video stream is 9.8mbit/s. Together, video and audio stream must be below 10mbit/s at any given moment.
MPEG2 is a compressed format.
- Audio can be AC-3, DTS, Linear PCM, Mpeg 2 multichannel or MPEG1 layer2 2 channel audio.
AC3 is pretty much the standard and MPEG-2 multichannel can only be found on very few discs. PCM is mostly found on music DVDs and MP2 on cheaper productions. PCM is high quality uncompressed audio which takes a lot of space, hence it's not an ideal choice for full length movies with extras and possibly multiple languages. AC3 streams have a bitrate between 192 and 448kbit/s. 192kbit/s is used for 2 channel sound, and 384-448kbit/s for 5.1channel surround. DTS streams have an average bitrate of 1.5Mbps.
AC3 and DTS are compressed formats.
It's possible to have up to 9 different audio streams and you can usually switch the audio stream during playback (this feature can be disabled during the authoring phase of a DVD).
- Subtitles : it's possible to have up to 32 different subtitle streams. Subtitles are 4 color bitmaps which are overlayed over the video stream, they're usually not encoded into the video stream. But overlay is not included in the same VOB, it belong to vts menu VOB.
IS THX A DVD AUDIO CODEC ?
No. It's a quality certificate for home and theatre speakers.
WHAT ARE IFO AND BUP FILES ON A DVD-VIDEO?
IFO Files give the player important navigational information, like where a chapter starts, where a certain audio or subtitle stream is located, etc. This is the reason why it's only possible to rip certain parts of a movie (like a chapter) with a ripper which can read this files.
BUP files are just backup files off the IFOs. As their counterparts they are not encrypted.
BEST MP3 DECODER?
Since what the MP3 standard really defines is a decoder, there should be no such thing as a better or a worse MP3 decoder. As long as a decoder is accurate, it'll output the expected quality. All the most popular decoders these days output accurate enough streams. These include:
* Winamp's FhG decoder
* mpg123, probably one of the most popular decoders, also used in foobar2000, Otachan's winamp plugin, LAME and countless other MP3 players
* MPAdec, a very accurate decoder based on mpg123
* Apollo, the most mathematically accurate decoder
* MAD, another very precise GPLd MP3 decoder
WHAT IS AC3?
It is the Dolby Digital 5.1 audio track that you find on DVD-videos. You can also find AC3 on some divx-like video files. Usually, the audio track of divx-like video files are encoded with the MP3 codec, which offers stereo only. Using the AC3 codec in divx-like video files, you can get a 5.1 surround sound. There is no much difference between the AC3 of DVD's and the AC3 of DIVX-like video files.
WHAT IS AC3FILTER?
It is DirectShow AC3 Decoder filter used to palyback AVI files with AC3 sound tracks and DVDs. Multichannel and S/PDIF support. Focused at flexible controls during playback: gains, mixer, stream information, levels and other. In the latest version, it also decodes more things, like MP3, PCM, etc. http://ac3filter.sourceforge.net/
WHEN I PLAY AND AUDIO CD WITH BSPLAYER, THE FILTERS MENU TELL ME THAT THE CODEC USED IS AC3. WHY? SHOULDN'T THERE BE A BASIC AUDIO CD PLAYBACK CODEC IN WINDOWS?
AC3 is stealing priority to that default decoder, uncheck these options in AC3 Filter preferences: You may want to uncheck “MPEG Audio” and “PCM” so that AC3Filter doesn't affect other audio besides AC-3 and DTS.
CAN THE DVD AUDIO DECODER FILTER DECODE THE AC3 TRACK INSIDE CONTAINERS OTHER THAN VOB?
When you install a DVD playback software, it comes with a DVD video decoder, and a DVD audio decoder. If the AC3 of DVD's is the same as the AC3 of divx-like videos (*.avis, etc), can the DVD Audio decoder decode this AC3 track inside the divx videos, instead of the AC3 Filter (http://ac3filter.sourceforge.net/) ?
Not that simple. Unless the decoder supports it directly (as AC3 Filter does) you would need an AC3/AVI parser filter, otherwise the decoder can't connect to the avi splitter. MPC has a built in parser though.
AC3FILTER IS INTRUSIVE! IT PUTS ITSELF INTO EVERY DIRECTSHOW GRAPH!!
The best thing to do is to lower its merit from the AC3 Filter control pannel (not from a DirectShow filter explorer). Go to the "system" tab and check "prefer other decoders". If you check the filter merit value in a DirectShow filter explorer, like BsPlayer, lowering the value in the AC3Filter options from "prefer AC3Filter" to "prefer other deocdeers" will switch the value from 10000000 to 00400000.
WHAT IS THE COT COT CODEC?
Cot cot codec is not a codec, it is the speak of a hen.
HOW DOES THE VC1 CODEC COMPARES WITH WMV9?
VC1 is a slightly modified version of the WMV9 Advanced Profile codec, it is what is used in the blu ray video discs as codec.
I GOT PROBLEMS READING MOV FILES FROM A DVDR OR CDR, USING QUICKTIME ALTERNATIVE.
Using Bsplayer, when I try to read *.mov files burnt on a dvdr, it does not play nicely. The video stops every seconds, during half a second, and then keeps playing for one second, then stops again... and so on. When I read the same *.mov file burnt on a dvdr, with MPC or VLC: no problem at all! Now if I copy the MOV file on the hard drive, when I try to read it with BsPlayer, it plays much better, but not perfectly. It seems there are still some little jerks in the playback of the MOV file.
Solution: instead of using the Quicktime Alternative splitter, I registered the Nero Quicktime Splitter, and the jerky playback problem was gone.
Why did it work in MPC before that? As far as what I've understood, MPC does include some filters. It's not a 100% directshow app like BSP. The filters in MPC are codecs and splitters. You can see the list of those filters in the MPC option dialog. I understood MPC opens the file, splits the video and audio, then sends them to the directshow graph. That may be the reason why I had a problem reading mov files in BSP, but not in MPC: the Quicktime Alternative splitter (that BSP uses through directshow) had problems. MPC's internal MPEG4/Quicktime splitter was doing the job fine.
As far as where MPC sends the video and audio after being split, that is determined by the setting in the Formats panel of the Options, and DirectShow is the default.
WHAT DIRECTSHOW GRAPH WILL PLAY MOV FILES?
Unfortunately, I didn't find any combination of source filters, splitter filters, and decoder filters, that will play ALL MOV files. So far, the best combination (for me) is : Default Windows Quicktime source (quartz.dll), Gabest MPEG4 Splitter, FFdshow MPEG4 decoder, and Nero Quicktime Audio Decoder.
I suspect the new MOV/MP4 splitters to be adapted to MPEG4 content, and not to other kind of codecs, used in older MOV files.
WHAT DIRECTSHOW GRAPH WILL PLAY MP4 FILES?
Source = quartz.dll, splitter = Gabest MP4 splitter, video decoder = Ffdshow MPEG4 decoder, and audio decoder = ffdshow.ax as well.
WHAT SPLITTERS CAN I USE WITHOUT A PROBLEM FOR MOV AND MP4 CONTAINERS?
In my experience, they all work for most files, but have problems on some exceptions. Here is a list of MP4/MOV files splitters and some comments (from 2006):
- The Quicktime Alternative splitter. I had problems with this one, so I tried other splitters.
Name of this splitter: CyberLink QuickTime Source Filter. Location: C:\Program Files\QuickTime Alternative\QuickTime.ax,
- The Nero Quicktime filters that come with Nero Burning Rom. According to my experience, it is good, but still have some problems on some MOV files.
Name of this splitter: Nero Digital Parser. Location: c:\program files\common files\ahead\DSfilter ... NDParser.ax
- The Gabest MP4 splitter (it splits Quicktimes too) that you can download from www.gabest.org . My experience: nice with MOV files, except some few exceptions, but does not do the job in a good way for MP4 files: only audio is rendered. The MP4 Splitter from Gabest is capable of splitting some of the latest QuickTime movies with H.264 content; MOV[AVC1+AAC]. Also MOV[MP4V+AAC] playes well, but for the majority of MOVs use QuickTime Alternative.
Name of this splitter: MP4 Splitter (and MPEG4 Video Splitter?). Location: c:\ ... MP4Splitter.ax
- 3ivX: in my experience, it is the only one that works in DirectShow for MP4 files. But for MOV files, it fails.
Name of this splitter: 3ivx D4 Media Splitter. Location: C:\Program Files\3ivx\3ivx D4 4.5.1\3ivxDSMediaSplitter.ax
IS THERE A WAY I CAN PLAY QUICKTIME MOVIES OUT OF INTERNET EXPLORER WHEN I CLICK ON A QUICKTIME MOVIE LINK?
I mean i don't want the quicktime movie to play in an ie6 window, but in the quicktime player.
* AFAIK you cant, only by downloading the movie to your hard drive can you do this. Some movies on the net are intended to be played in the QT Player and not have the plugin handle them, but only the web author has control over this.
* yes, with .qtl files, a metafile pointing to the actual .mov and telling to play it in QuickTime (like .asx for Windows Media Player and .ram for Real Player)
I used it in Flash one time.
But it's a nightmare to convice your host to register the MIMEtype settings..
And on some computers/ browser it doesn't seem work
It's kinda strange because I tested this page on different target machines, some also with proxy servers and it works fine.
http://www.streamingwizard.com/faq_metafiles.html
I need to ask those guys...
Actualy I want to register .qtl files on my mediatempleaccount too now.
Here is what you can send to educate your host:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnwmt/html/mime.asp
It's for .asx registration, but it's just the same.
And here is more info about .qtl files (which is a very simple .xml file you write in notepad)
http://developer.apple.com/documentation/QuickTime/QT4WebPage/samplechap/special-11.html
The .qtl idea is pretty cool because you can add a lot of cool attributes, but my advise it TEST on your target machines before you go with it.
Oh btw you can always do a TARGET="QuickTimePlayer", but than first you need to embed a posterframe.
Btw there is another trick with a frame, but I didn't test that yet
http://blueabuse.totallyhip.com/tut/23/
WHAT IS AAC?
Advanced Audio Coding (AAC) is a standardized, lossy compression and encoding scheme for digital audio. AAC achieves better quality sound than the more popular MP3 format when compared at the same bitrate, and creates smaller file sizes. For example: A 192 kbps song compressed as an MP3 will be about the same quality as a 128 kbps AAC file, but the AAC will be smaller in overall size. It is the default, and most commonly used format for compressing audio CDs for Apple's iPod and iTunes (Extension .m4a). Apple uses the AAC format for the files they sell on the iTunes Store, however these files are restricted with DRM and stored in a proprietary .m4p container that is only compatible with Apple's own iPod device, or iTunes. AAC is also used as the standard audio file for Sony's Playstation 3 and as the default audio codec for the .m4v format that Apple employs in its iTunes Store video files.
MULTIPLE AUDIO TRACKS IN ONE .AVI FILE
Is it posible to select one of two audio tracks (languages) stored in one .avi video file?
Let's take an example of a file in BsPlayer 2.35 32bits on Windows Vista SP1 64bits: I have a divx encoded avi with dual audio tracks (esp and eng) and BS player selects spanish one by default. In the right click menu > audio > the streams are greyed out. Also a Divx icon appears on the systray. Right clicking on it and choosing "audio streams" will show the two audio streams greyed out again. Why?
Answer: there must be a problem with one of the DirectShow filters, probably the splitter, not doing properly its job.
Instead of trying to find the guilty filter, there is a way to fix this in BsPlayer : please try as follows: (rightclick >) Options > Preferences. Now keep the Shift key pressed, and select "Filter management" in the right hand column. And then select (tick the box) "Use internal AVI parser". It fixed it for me. Article written in 2009-04-07.
HOW COME THE MPEG FILES TIME VALUES AREN'T ACCURATE?
Introduction: Sometimes, when reading MPEG files, or divx-like codecs encoded files, you find problems about the time lenght. 2 of the main problems are:
- The video player software does not show the real lenght of the movie.
- It is not possible to synchronize subtitles files with some video files.
- Example of a trouble with a video time lenght : I bought Lord of The Ring full edition with 12 DVD's. The episode 1 of the trilogy has 4 DVD's and 2 of them are making of's and documentaries. The problem is they don't have subtitle (english is not my mother language so I enjoy watching english spoken movies with english subtitles, so I can understand everything). I found the subtitles for these documentaries on the web, and I started to work on synchronizing them with the VOB files. Before using Subtitles Workshop, I wanted to play the VOB files, I used Media Player Classic. So I go to the time 10mn 00 seconds and I see a scene, then I go to time 25mn 00s and I see another scene, then I go back to 10mn 00 s, and I see a third, different scene!
To explain this problem, there are 2 theories : 1) The video file is responsible for the problem and 2) The video playing software is responsible for the problem.
1: The video file is, by its nature, bad for offering time lenght information, or somehow badly encoded.
Unlike AVI files, MPEG is a "streaming" file format; it's designed so players can decode it starting from an arbitrary spot. As such, it has no "header" with info about the file in its entirety, as an AVI file does. This means that the only way to obtain accurate information on most characteristics, including simple things like the number of frames, is to scan the entire file, which can take minutes. That's why different video players will tell different length values for the same file.
The latest versions of Gspot (in 2007) have this full scan feature.
This happens on some MPEG files, including VOB-DVD videos. But as codecs like divx are MPEG-based, it can also happen on some AVI's encoded with a divx-like codec.
In most cases, the time lenght will be correct: The length doesn't fluctuate. If you record/create a 60 minute mpeg file, it will be 60 minutes. But some video files are very difficult to handle for most video playing software. In this case, most probably, the video was not encoded with the right options.
2: The video playing software is limited in its way to interpret different kind of video encodings.
MPEGs have a definite length, the variation or problem is not in the MPG file or spec, it is in the particular playback software. Many softwares, and I can absolutely verify that Subtitle Workshop is one of them, have problems displaying correct time during playback, and most especially if you FF and RW, or "scrub" back and forth.
Conclusion: As far as my research went, I don't know which theory is the right one. Furthermore, I don't know of anyway to fix the problem for playing these "corrupted" video files, if anyone finds a workaround, please write me an email. For getting the true lenght of a file, I heard of some solutions : a) Gspot's latest versions , b) Make a D2V project file using DGIndex, make an AviSynth script out of it, and then open the script in VDub(Mod). And there's no problem at all getting the correct length of an AVI (like DivX or XviD) , c) VDubMod.
Here are 3 forum threads that tell about this problem:
http://groups.google.com/group/comp.compression/browse_thread/thread/b706baabc73727a9/70e067e7d00ea1d8?lnk=st&q=time+code+corrupt+mpeg&rnum=10&hl=en# (go to the top of the page)
http://www.urusoft.net/forum/viewtopic.php?id=148
http://forum.videohelp.com/topic332648.html#1724726
HOW DO I SAVE A .RAM STREAMING AUDIO FILE FROM THE NET?
to save the actual BIG rm file:
1) save the original tiny rm file , make your own html file , put a src link using the original tiny rm , this may give you a smil (about 1000 bytes of text) - save it
2) edit the smil as text, inside is ANOTHER rm reference
3) put THIS rm as a src link on your html page , save that BIG rm - this will play on realaudio!!
http://www.mp3machine.com/software/BlazeMediaPro/wwwboard/messages/128.shtml
WHAT IS NVIDIA PUREVIDEO?
Actually "Purevideo" stands for 2 things:
- Hardware acceleration (it also deinterlaces and does color correction ect). The nvidia drivers come with the "free" purevideo but its not a decoder in this case but video acceleration, you need a decoder to play DVD's. When you use Nvidia's hardware acceleration in (for example) PowerDVD, the decoder is still cyberlink.
- MPEG2-DVD decoder: the Nvidia DVD decoder called “NVIDIA DVD Decoder” has been renamed to “NVIDIA PureVideo Decoder”! Purevideo is a choice for DVD decoding that would work in any video player software.
SOME INFORMATION ABOUT NVIDIA GRAPHIC CARDS AND DVD + BLURAY DECODING
My card is a Nvidia GeForce 8800 GTX. I was wondering if it has a chipset for DVD and BluRay hardware decoding, and how can I check this? The only doc I had was a small "Quick installation guide" with no much information.
My purchase of an Asus- Nvidia graphic card allows me to use Purevideo-Hardware-Acceleration for free, but not Purevideo-DVD-Decoder (which can be purchased on the Nvidia web site).
So in 2008, Purevideo is compatible with DVD playback but not with BluRay playback. Purevideo HD is compatible with BluRay playback.
HOW TO USE PUREVIDEO'S VIDEO ACCELERATION ON WINDOWS VISTA?
- Firts, set it in Windows: Control Pannel > Additional options > turn on "Inverse Telecine" in the Nvidia control panel
- Second, set in in your video player software: to get DVD acceleration you just need to enable hardware acceleration(sometimes called DXVA) in your media player of choice.
Example, with Power DVD : start PowerDVD =>Config(CTRL+C) =>Video =>Enable Hardware Acceleration(check it)
Example, with Windows Media Player (Should be on by default) =>Tools =>Options =>Performance =>Turn on DirectX Video Acceleration(check it)
MONO SOUND TRACK ON STEREO OUTPUT
I Have A Video File With A Mono Sound Track; When I use my speakers as normal 5.1 speakers, the mono track is only output on the front middle speaker, which makes it barely audible. I want to send this mono soundtrack on the 2 front speakers , or better, as double stereo, on the 2 front speakers and the 2 rear speakers. Or, even better: what if the mono track would be output on ALL speakers of my 5.1 system? How do I do that?
Answer: using FFdshow, open audio decoder configuration, on the left side , choose "mixer"' then enable the "mixer" check box, then enable the "custom matrix" check box. The horizontal line is the input (your video file with its mono audio track) and the vertical line is the output (the 6 speakers of your surround soun system). keep a "1" under hirizontal "C" and vertical "C". This is the input audio output in the front middle speaker. Now add many "1" under the "C" vertical column. Add "0" in other boxes. The mono sound will be output on ALL speakers .
After the movie is finsihed, don't forget to uncheck "custom matrix".
BSPLAYER's PREFERENCES
- Where are the preferences files and the keyboard shortcuts file? In C:\Users\username\AppData\Roaming\BSplayer PRO or C:\Documents and Settings\Username\Application Data\BSplayer Pro\BSplayer.xml
32 BIT AND 64 VERSIONS OF THE SAME CODEC
Is it possible to install both 32 and 64 bit version of FFdshow on the same Windows Vista? Will there be conflicts betweent the 2? Answer: Both will function completely independently. This means, for example, bsPlayer (32 bits app) will use the 32 bits version of Ffdshow, and Windows Media Center (64 bits app) will use the 64 bits version of Ffdshow.
INFORMATION ABOUT THE FFDSHOW BETAS
In July 2009, The latest stable version of FFdshow is beta 6 , does this beta install the 32 bits version of FFdshow, the 64 bits version, or both? AFAIK all 64 bit versions are marked as such. All others (beta 6 included) are 32 bit. There is (at this time) no release containing both.