rmbgvideo / docs /video-export-notes.md
notaneimu's picture
Add transparent VP8 export mode and notes
beaa25c
|
Raw
History Blame Contribute Delete
1.41 kB

Video Export Notes

Transparent VP8 WebM with ffmpeg.wasm

When transparent VP8 WebM is encoded from a raw RGBA stream, crf can appear to do nothing even though the argument is being passed correctly.

Why this happens:

  • The app feeds ffmpeg a rawvideo input stream, not a PNG frame sequence.
  • FFmpeg's rawvideo demuxer declares a fixed input bitrate based on width, height, pixel format, and framerate.
  • For RGBA video this reported input bitrate is enormous, often hundreds of Mbps.
  • If libvpx then sees a much smaller explicit -b:v target, its rate control can collapse into an effectively strict bitrate clamp.
  • In that state, output size tracks duration and -b:v much more than crf, so different CRF values can produce nearly identical files.

Practical consequence:

  • crf is not reliably meaningful for transparent VP8 WebM when the input is rawvideo and -b:v is set too low.

Why PNG-sequence examples behave differently:

  • With an image-sequence input such as frame_%03d.png, the demuxer does not report the same huge fixed source bitrate.
  • That means libvpx is less likely to abandon CRF-driven rate control.

Project takeaway:

  • For the app's transparent VP8 WebM mode, avoid treating a low -b:v value as harmless.
  • If CRF tuning seems ignored, the first thing to check is whether the explicit bitrate target is forcing libvpx into a near-CBR path.