Good Quality DOSBox Video Capture and FFmpeg Options
susam.in
susam.in
> my contacts who might be on devices that do not support playing AVI files, so I decided to convert this to MP4 format
– a file being an AVI tells you practically nothing about the actual codecs and streams contained within, and the same stands for MP4.
It seems DOSbox writes AVI files that contain video encoded in its own ZMBV codec (see https://wiki.multimedia.cx/index.php/DosBox_Capture_Codec); even if OP's contacts had devices that could play AVIs, it's likely they couldn't play that AVI anyway...
Input #0, avi, from 'dosbox_000.avi':
Duration: 00:00:03.64, start: 0.000000, bitrate: 1532 kb/s
Stream #0:0: Video: zmbv (ZMBV / 0x56424D5A), pal8, 640x400, 98 kb/s, 70.09 fps, 70.09 tbr, 70.09 tbn, 70.09 tbc
Stream #0:1: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 44100 Hz, 2 channels, s16, 1411 kb/sFor people on mobile/lazy: https://wiki.multimedia.cx/index.php/DosBox_Capture_Codec
-----
For those interested in an even deeper dive:
Decoder: https://github.com/FFmpeg/FFmpeg/blob/master/libavcodec/zmbv...
Encoder: https://github.com/FFmpeg/FFmpeg/blob/master/libavcodec/zmbv...
This implementation was written almost immediately after dosbox added the codec.
https://github.com/svn2github/dosbox/blob/acd380bcde72db74f3...
In some modes, like 320x200, pixels are 20% taller than "normal" square pixels. If you don't account for that, everything looks vertically squished.
REPEAT 4 [FD 1 RT 90]
REPEAT 360 [FD 1 RT 1]
I find that both the square and the circle appear squashed. On measuring the pixel height and width of these figures as they appear on my desktop, I see that the square is 400 pixels in width and 320 pixels in height. That's an aspect ratio of 5:4. Similarly, the circle is 460 pixels in width and 364 pixels in height. That's an aspect ratio of 1.26:1.I find the same aspect ratio in full screen (Alt + Enter) mode too. In the full screen mode, the square is 200 pixels in width and 160 pixels in height and the circle is 230 pixels in width and 182 pixels in height.
Here are the screenshots:
The parent of my earlier comment, i.e., the one by klodolph, claims that the pixel aspect ratio would be square by default in DOSBox, so I thought I would verify it once. As per my experiments, that does not seem to be the case.
By default, aspect=false. This gives incorrect results, as you observed, with Logo producing a squashed circle and square.
The fix is aspect=true (or aspect=1). This gives correct results, with non-square aspect for pixels, with Logo producing a more correct circle and square.
Because the Logo implementation was written for an actual IBM PC or compatible, it assumes that the aspect ratio of a 320x200 pixel screen is about 4:3. However, when displayed with the incorrect square-pixel aspect ratio given by default in DOSBox, it will be 8:5.
In other words, DOSBox displays graphics with a square pixel ratio by default, which is different from the original hardware. If you wrote a DOS program to draw a square number of pixels, say 128x128, then you would see that in DOSBox it would also be square, but on real hardware it would be about 20% taller than it is wide. If you use Logo you will get the opposite results, because Logo is correctly designed for the original hardware.
The pixels are square in DOSBox, but the graphics from these old programs are designed for non-square pixel ratio. So, if you display it with square pixel, the display aspect ratio will be wrong.
(Of course, this still contradicts with what neatcoder said, but I can't remember if these programs were "squished" on CRTs or not.)
- https://imgur.com/NZUGL1e (aspect=0)
- https://imgur.com/rnQOfA4 (aspect=1)
The one with aspect=1 looks very odd.
There are a number of different graphics modes, they have different pixel aspect ratios, you can also adjust the monitor, it is possible that back in school you were using a different mode or a different monitor. I think there are some other factors that can affect this.
The reason why I stick to aspect=0 (the DOSBox default) is that this is the one that more closely reproduces the experience I had with the CRT monitors at school. I agree that the actual monitor or the way it is configured could affect the aspect ratio we observe. Perhaps ours was not adjusted to produce 1:1 square while working with IBM Logo. But it did produce 1:1 square with GW-BASIC SCREEN 1 mode.
> Do aspect correction. It only affects non-square pixel modes like VGA Mode 13h, which has a resolution of 320x200 pixels and is used by many DOS games (DOOM, etc).
However SCREEN 2 mode of GW-BASIC has a resolution of 640x200 ( http://www.antonis.de/qbebooks/gwbasman/screens.html ).
For both 320x200 and 640x200, HSYNC ran at 15.75 kHz, VSYNC ran at 60 Hz. When you go from 320x200 to 640x200, all that happens is the pixel clock (the rate at which you read out from RAM) is doubled, so you get exactly two pixels horizontally packed in where there used to be one pixel. The older hardware, like EGA video cards, can only generate one other HSYNC speed: 21.8 kHz, for special 350-line modes. When VGA came out, it doubled the HSYNC frequency and, for these modes, would just read each row out twice.
http://www.minuszerodegrees.net/video/bios_video_modes.htm
So SCREEN 1 should have 1.2:1 ratio, and SCREEN 2 should have a 0.6:1 ratio.
One of the better ways to verify this kind of thing is to compare box art from DOS video games to screenshots taken from DOSBox or sprites extracted from the data files. You can see that the screenshots from DOSBox match the sprite files, if you leave aspect unadjusted, but if you look at the box art from the retail packaging, you will (often) see artwork and screenshots with the correct aspect ratio, just like you see on real hardware.
Here's a DOOM Wiki page discussing it, with a number of pictures and sources: https://doom.fandom.com/wiki/Aspect_ratio
You are right. I did not account for the aspect ratio. I will consider fixing the aspect ratio and updating the images.
How? Are the iframes losslessly compressed? For some reason I thought they were equivalent to JPEG.
https://dsp.stackexchange.com/questions/27752/is-dct-discret...
I personally won't call it lossless then, since no one will call 100% JPEG (even the 4:4:4 one) "lossless" (there is an entirely separate "true" lossless JPEG that no one uses).
But I'm not trying to argue if it's the term H264/video codec community uses.
Also I second izacus' "don't use baseline". I would even use a higher profile, for quality's sake. For bad clients you would always convert content if needed. Unless of course, you are one of those users constrained by them in the first place.