Description
Recently (about six months ago), while observing the growth of our recording storage, we considered compressing the recordings. There were two options: compress the recordings during the recording process itself or compress them at a later time. We tried both approaches and found that the CPU load does not significantly increase (though it does rise) when compressing during the encoding in egress. I decided to experiment with the settings of x264Enc, specifically with speed-preset, pass, quantizer, and bitrate. In my use case of recording video calls with room composite egress, the file size was reduced by 8-10 times (at the cost of a small CPU overhead, which turned out to be acceptable for us, as it may be for others as well).
I would love to tackle this myself, but I’ve never written in Go, and it seems very confusing to me. At this point, I’ve changed a couple of lines in pkg/pipeline/builder/video to include my desired settings for speed-preset, pass, quantizer, and bitrate. I’ve been using it for six months, and it’s working fine. However, I have to build it myself and keep track of new versions to rebuild. I think it would be great to add the ability to configure the encoder in the YAML config while keeping the current settings as defaults.