What is a “file format”?
Can someone explain what a video file format is in laymans terms?
A video file format is a particular way of storing video data which attempts to solve one or more of the intrinsic problems involved with video data.
One such problem is file size. High quality video requires a huge amount of information (for example a 2 hour long DVD is roughly 9GB.) SOme video file formats address this problem with compression, others by dropping frames periodically, and still others don't try to address this at all.
Related to the size problem is the replay problem: the format must allow large amounts to data to be read back at a reasonably fast rate and no two frames of video should take very different times to read.
Other problems which can be addressed by the file format are such things as DRM, metadata, whether (and how) the file data can be streamed across a network, whether data can be correctly read from an arbitrary point in the file (as opposed to reading it sequentially from the beginning) and so forth.
So there is no catch-all description of what a video file format is or does (aside from have video data in it.) It is up to the developer to determine which problems are going to be addressed and how.
A video format is a way of arranging the information of a video. For example, you shoot a video in 25fps and interlaced (these are technical terms but are specific to the data inside the video file, think 1's and 0's).
When you go to 'convert' the video to another format, it takes the actual data of your video, and rearranges it in a different way to accommodate what you want. You could change the framerate if you wanted, you could sacrifice some quality of image in exchange for a smaller file.
Every video format has different characteristics. http://en.wikipedia.org/wiki/Video#Video_formats
Files are made up of 1s and 0s. Each 1 or 0 is called a bit.
To save a particular file, you need to agree on how to store those 1s and 0s. The most obvious way might be to divide your video into frames, then each frame into a grid of pixels. You could then start at the top left of frame and read from top left to bottom right. For each pixel you could store 8 bits to describe how red it is, 8 for how blue and 8 for how green. This would end up with a lot of data for a whole video. The problem with this is that the resulting file would be huge, and would contain lots of duplicate sections (i.e. if the screen was black for 1 second, you might store thousands of 0s next to each other)
A better way might be to do that, then to come up with some way to make it smaller – perhaps identifying blocks that are the same, and having an index that can minimise similar frames, or a way to describe blocks of colour in the video.
Different formats try to solve different problems – should the video be small, but have low quality? Big but take a lot of processing to play? Be able to store transparency? Each format is good at something different, hence the wide array, plus the fact that they are complex things, so many companies have come up with their own ways to solve the same problems.
It's often time consuming to convert from one format to another because you have to get the individual data about each pixel out, and rencode it using a different algorithm. If the original format was lossy (i.e. it removed data to get it smaller), then this will end up with an inferior copy of the original.