corgski
Well-known member
a.k.a. cursing ffmpeg and deciphering ICCVID.DLL while dreaming of building a youtube proxy
Here's what I have so far, using a 15 second test clip and cinepak compression
ffmpeg's implementation of cinepak is far too slow to be usable for on the fly conversion, running at approximately 0,2x realtime. That said, I documented my working configuration here: https://welcometomacintosh.neocities.org/notes.html
Mencoder's VfW wrapper doesn't implement core features of the VfW API which results in the Radius Cinepak codec shipped with windows creating unreasonably large files. I submitted a bug report about the lack of quality selection, but will need to submit another about the inability to specify a target bitrate and forced keyframes, as what I've discovered depends on all of those features.
So, using virtualdub on windows 10 I got to work fuzzing out the radius cinepak codec.
All the files I've created are named in the following manner qkb.avi where q is a quality from 0-100, k is keyframe every frames, and b is target bitrate in kbps. Interestingly, none of these numbers are actually correlated to what they supposedly stand for.
First off, if k is 100 or less, q has no effect whatsoever on the video and a lower b paradoxically raises the filesize by a few kB. A lower k value will also increase filesize by a few kB unless it's k=0 at which point it produces a massive file.
However, at k=101, q starts to mean something. q=0 produces a file that is an order of magnitude smaller than q=100. Values between 0 and 100 then scale the filesize and resulting video quality like you'd expect. b meanwhile no longer affects the file size or video quality whatsoever.
Why it doesn't use the requested quality value unless keyframes are spaced 101 or more frames apart is a mystery to me.
Here's a link to all the videos for comparison.
https://drive.google.com/drive/folders/1XYrTXgbMETGJ4fx2CBvUGFiSxmOSB0-Z?usp=sharing
Here's what I have so far, using a 15 second test clip and cinepak compression
ffmpeg's implementation of cinepak is far too slow to be usable for on the fly conversion, running at approximately 0,2x realtime. That said, I documented my working configuration here: https://welcometomacintosh.neocities.org/notes.html
Mencoder's VfW wrapper doesn't implement core features of the VfW API which results in the Radius Cinepak codec shipped with windows creating unreasonably large files. I submitted a bug report about the lack of quality selection, but will need to submit another about the inability to specify a target bitrate and forced keyframes, as what I've discovered depends on all of those features.
So, using virtualdub on windows 10 I got to work fuzzing out the radius cinepak codec.
All the files I've created are named in the following manner qkb.avi where q is a quality from 0-100, k is keyframe every frames, and b is target bitrate in kbps. Interestingly, none of these numbers are actually correlated to what they supposedly stand for.
First off, if k is 100 or less, q has no effect whatsoever on the video and a lower b paradoxically raises the filesize by a few kB. A lower k value will also increase filesize by a few kB unless it's k=0 at which point it produces a massive file.
However, at k=101, q starts to mean something. q=0 produces a file that is an order of magnitude smaller than q=100. Values between 0 and 100 then scale the filesize and resulting video quality like you'd expect. b meanwhile no longer affects the file size or video quality whatsoever.
Why it doesn't use the requested quality value unless keyframes are spaced 101 or more frames apart is a mystery to me.
Here's a link to all the videos for comparison.
https://drive.google.com/drive/folders/1XYrTXgbMETGJ4fx2CBvUGFiSxmOSB0-Z?usp=sharing
Last edited by a moderator: