olive-editor / olive

Free open-source non-linear video editor
https://olivevideoeditor.org/
GNU General Public License v3.0
8.13k stars 548 forks source link

[Feature Request] Edit and export without re-encoding #528

Closed typoman closed 5 years ago

typoman commented 5 years ago

Very compact and light app, I like this a lot! Since it's possible to attatch and split videos using ffmpeg without re-encoding, I was wondering if it's possible to edit and export videos in Olive without re-encoding them?

ghost commented 5 years ago

Similar to #455 , but I understand this one

Vidcutter, Avidemux, and Losslesscut dedicate to this feature. I think it's possible, but ffmpeg's concat requires input videos to have same parameters

typoman commented 5 years ago

Thanks a lot! Sorry didn't know about them. Will check them out.

itsmattkc commented 5 years ago

I've toyed around with this idea before since I like the idea of not re-encoding for simple edits. It's tough because a lot of common source codecs (most notably H.264) use partial frames which means making a frame accurate cut would be virtually impossible. If you're just trimming the first second or so, FFmpeg can snap to the nearest keyframe. Olive's paradigm however is very much based around frame accuracy and if an exported video is not accurate, that would very much appear as a flaw in the design.

Intermediate codecs (ProRes/DNxHD) would handle this fine, and maybe this sort of thing could be implemented for that, but if the user wants to use anything not in ProRes, they'll have to re-encode it anyway, which feels like it kind of defeats the point.

455 would be a more complete solution to this (i.e. re-encoding when necessary, copying packets directly when not) but it's also infinitely more complex for that same reason. Definitely don't expect either any time soon, as @BrimsonBhin said in the other thread, hardware acceleration will be taking priority.

typoman commented 5 years ago

I understand the dilemma of cutting on keyframes or cutting accurately. Since I don't want to cut that accurately and keyframes are fine and my sources are from similar codec and resolution, I get that the goal of what you've built here does not match what I'm looking for. But still, your explanation alone means a lot to me; Thank you!

alcomposer commented 5 years ago

@typoman given that Olive is an NLE, many (if not all) professional NLE's have the ability to export the edit into other formats, be that EDL, XML or something else. Would it not be possible to export a given edit of the source files, that could then serve as the input into a dedicated piece of software that can navigate the limitations of source editing? Olive already uses XML, so possibly a converter could be put together for FFmpeg to take an Olive XML, and render non-destructively an output. Obviously if a users intent is to bypass re-encoding, then there are going to be no effects, or cross-fades.

itsmattkc commented 5 years ago

Indeed exporting EDLs, etc. (#444) for another program to handle may be a way to achieve this externally (can FFmpeg use EDLs to edit clips without re-encoding?). Again only really for codecs that don't use partial frames.

@typoman Haha sorry if I over-explained, but yeah it has been something I've thought about but haven't found a good way to implement into the current workflow without a complex hybrid system like #455.

itsmattkc commented 5 years ago

I'll fold this issue into #455 for now

typoman commented 5 years ago

Thank you everyone for all your input. I haven't tried what you have described here yet, but all this information is very much appreciated. Cheers!