4 ms·
Is there anything in the new release that would allow an encoder to be "motion-aware"? e.g. if the video is static, don't store any information. But if there i
by KuhlMensch 7y ago
Is there anything in the new release that would allow an encoder to be "motion-aware"?
e.g. if the video is static, don't store any information. But if there is movement in the video, start storing frames etc
WHY? I find myself recording lots of videos of me talking through code in an IDE. The screen mostly static, with some occasional the screen scrolling. The regular tradeoff-space afforded by CRF doesn't seem to get me the size results I believe are possible.
- quixoticelixer- 7y agoEncoders already do this to some extent, but that is the codecs job (AV1, H264 etc) not FFmpegs.
- slimscsi 7y agoIncrease the key-frame interval
- hackcasual 7y agoThis might be helpful: https://video.stackexchange.com/questions/24680/what-is-keyint-and-min-keyint-and-no-scenecut https://video.stackexchange.com/questions/24680/what-is-keyi... If you're storing video only for offline viewing with minimal seeking, you can increase the iframe seperation, but if you're streaming this video, you'll need to pay the cost of including iframes to allow clients to seek or recover from dropped packets.
- nullwasamistake 7y agoThis guy is totally right. When there's no change on screen a huge percentage of bandwidth is from iframes, essentially start over points for fast forward and network corruption. There's a tradeoff between skip/fast forward fidelity, streaming delay, and iframes. If you're not live streaming and don't care how easy it is to skip around the video increase the iframes inverval as much as you want and watch the bitrate melt away
- astrange 7y agoIf you're streaming, you don't need to implement full I-frames; instead you can do a kind of top-to-bottom rolling refresh. The video will be corrupt until the decoder catches up, but that's OK. This is mostly used for TV broadcasts where you don't want the whole keyframe to get lost because of some brief interference. It's also good because it lowers peak bandwidth per second.
- KuhlMensch 7y agoAh, wonderful. Danke.
- lwansbrough 7y agoThere was a submission on HN a while back regarding the complexity of modern codecs. You should read this: https://news.ycombinator.com/item?id=19997813 https://news.ycombinator.com/item?id=19997813
- ww520 7y agoMost modern video codecs (vp9, av1, h264, h265, etc) handle motion-less or motion compression very well with diff between frames. The newer ones handle motion based frames better by shifting the next frame around to find the smallest diff. Ffmpeg just uses whatever codec configured.