A video file is actually a container. There are many type of containers, like .avi, .mov, .wma, .mkv, .flv and so on. Usually the container contains a video stream and an audio stream. Advanced containers can contain multiple audio streams and multiple subtitle tracks. Video and audio streams are encoded using various codecs, such as MP3, DivX, AC3, XviD, Ogg Vorbis and so on.
In order to play a file, any player has to understand the container format. Then it must be able to decode the video and the audio streams. In other words it has to understand the codecs.
The Dingoo understands a lot of container types and codecs. However, some video files have high bitrates, meaning that the stream is too big for the CPU to decode in real time. Thus, the codec gets very CPU intensive, even if the device understands it. Otherwise, the player will simply refuse to play files with high bitrates.
Someone was kind enough to do some tests by trying to play files with various (not "variable") bitrates. You can probably use the charts to get an idea about what codecs, containers and bitrates to use when encoding video files for the Dingoo for a smooth playback.
Video encoding is a nasty job. There are some good utilities you can use to encode and convert to your liking, the Swiss Army knife being the command-line
ffmpeg. There are various, easier to use frontends for it, like
SUPER.