Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
VidCutter: A program for lossless video cutting (github.com/ozmartian)
170 points by pkkm on Aug 20, 2023 | hide | past | favorite | 111 comments



Technically a front end for ffmpeg which does the actual video cutting. Like most other tools like this.


I was hired recently to author a set of DVDs (yes, I know!), discovered there's almost no commercial software still available outside of Scenarist and TMPGEnc, and tried a dozen modern projects while putting together a FOSS workflow, just in case I couldn't the conjure CDs, licenses, and keys for software I hadn't needed in a decade+.

vidcutter ultimately didn't help in this process. I built it from source and then tried the flatpak, but for all of its beauty, it hung or crashed when importing common but dated formats and containers, handling more than a few clips, and didn't allow precise jogging for splitting (when it didn't hang or crash). It's good for trimming up a smartphone video, but it's not on par with an NLE.

I ended up giving up and scripting out most of the project in ffmpeg and dvdauthor. If you know how to use core utilities, it's such an exercise in tedium struggling against underdeveloped front ends.


FWIW, LosslessCut works similarly to Vidcutter except it’s functionality is flawless (within limitations) in my experience. Def worth a look if you run into a similar need in the future.


LosslessCut hasn't failed me yet and barely crashes. No matter how bad or corrupted the source is! (Looking at you over-the-air)


After the recent experience, I decided to build an image for a dedicated legacy media workstation. Thanks for the rec, it'll definitely get added.


Excellent idea. Let me know if you end up posting it anywhere — I deal with legacy media all day and am always looking for new tricks.


+1 I love LosslessCut. Am using it for many months now and it has never let me down. It's a very polished piece of software which is in active developement!


We found DVD Styler [0] to work well enough for making dvds of our church service for elderly who had no internet during pandemic.

[0] https://www.dvdstyler.org/en/


I've also noticed playback of DVDs is terrible these days too. Long ago I ripped my DVD collection to iso files so I could preserve the full experience of the menus, etc. But almost nothing these days supports DVD iso playback and menus, not even VLC! The only software I can get to work to play them is Kodi. It's wild how much DVD software has disappeared, I don't remember it being this bad 20 years ago.


Same here. I've once `dd`'d a VideoCD into a `*.iso` file and there's seemingly no app that can read it now. VLC only detects the video stream and plays whatever frames it can decode, but since it's mixed with CD layout and filesystem stuff, it's rather garbled.

I can't mount the file and also can't find any software that can make sense out of the raw CD sectors. Very strange.


VLC does support DVD menus... maybe not from iso, but you can play ripped DVDs with menus from VIDEO_TS folders.

Why you'd want DVD menus in the first place, though...


Mount the ISO as a drive and play it ? It's a double click worth of effort on windows, and probably one mount call away on linux


I was trying to play it on Android devices and can't mount it unfortunately.


What about mpv? I don't have a DVD iso to test at the moment..


In my experience mpv and VLC will handle .IFO files in DVD’s VIDEO_TS folder structure just fine.

You could open the .VOB files directly, but that’s more cumbersome.


That’s not to say it doesn’t provide value. Using raw ffmpeg is a pretty technical task, with lots of pitfalls, and not for your average user.


And it gives you nice drag/drop/seek/preview type stuff.

That said, since I've been using an AI assisted terminal (warp.dev currently) my use of GUI wrappers for different tools has faded quite a bit. I like being able to "Clip 0:10 through 0:30 of file.mp4 and turn it into a web optimized gif", and this NLP workflow works as a "wrapper" for almost any CLI. It's a nice interface without the loss of any functionality.


How does it compare to https://github.com/mifi/lossless-cut?


It's not an electron app, for one


That's nice but in practice it doesn't mean anything.

Here's a comparison of both apps with the same video file open and the same clip cut:

Startup time (time between double click and window appears and ready):

- Losslesscut: 2 seconds

- VidCutter: 12 seconds

Time to load the video file:

- Losslesscut: 1 second (to be fair it doesn't show thumbnails)

- VidCutter: 3 seconds

Memory usage:

- Losslesscut: 368MB

- VidCutter: 455MB

Idle CPU usage:

- Losslesscut: 0%

- VidCutter: 0%

Network requests:

- Losslesscut: 7

- VidCutter: 0

Installed size:

- Losslesscut: 455MB

- VidCutter: 178MB

Source, kinda (the memory shown is the sum of all subprocesses. taken when idle so no ffmpeg subprocess included.):

https://imgur.com/a/DwrNdxT


Network requests:

- Losslesscut: 7

Whyyyy


Here's what's blocked and what I think it's doing based on the code.

    2023-08-21 12:33:28 | losslesscut.exe | Block | Out | 140.82.112.5 | 443 | <-- Github, update check
    2023-08-21 12:33:30 | losslesscut.exe | Block | Out | 54.192.51.72 | 443 | <-- https://losslesscut.mifi.no/config.json + 
    2023-08-21 12:33:30 | losslesscut.exe | Block | Out | 54.192.51.122 | 443 | <-- https://losslesscut.mifi.no/config.json +
    2023-08-21 12:33:30 | losslesscut.exe | Block | Out | 54.192.51.66 | 443 | <-- https://losslesscut.mifi.no/config.json + 
    2023-08-21 12:33:30 | losslesscut.exe | Block | Out | 54.192.51.52 | 443 | <-- https://losslesscut.mifi.no/config.json +
    2023-08-21 12:33:30 | losslesscut.exe | Block | Out | 172.217.13.206 | 443 | <-- Google, Unknown

In the code there is also: https://losslesscut-analytics.mifi.no/

Typical.


Because everything needs to phone home these days?

That's frankly quite disturbing to see. A program like this has zero need to even touch the network.


Eh... Updater would be fine.


Vidcutter's startup time isn't PyQT, that initializes nearly instantly. Considering how both defer to ffmpeg a lot of these stats dont mean anything


You said electron sucked. That might be, but vidcutter, the subject of this thread, isn't proving your point. Just goes to show that who writes the code has more impact than the tech stack when it comes to such tools.

I don't know if all the numbers are accurate but it's true that vidcutter does weird things. I think it extracts ffmpeg to the temp directory on every start for whatever reason (it's not like it's a portable executable, it requires installation so why not extract it then?).

I can't explain why it uses more memory or how they managed to make it look alien despite using QT (so much for accusing electron of not looking native).


They are a direct response to the GP post's offhand quip about Electron. GP found the difference relevant, and I believe you're GP, but I am confused now given the change in interest.


My point is that startup time may not have anything to do with the GUI. It is not a good metric. I could write both an electron and pyQT app that takes minutes to start if it has other shit it needs to be doing. I haven't used electron in years but pyQT apps start up instantly, therefore this app must be doing something else.

If the two apps were programmed identically then you might have a comparison.


Most people don't care whether an app uses Python with Qt or Javascript with Chromium. They care about more about useability and features.


The "most people" argument is moot. I have outlined by arguments elsewhere in this thread


Well, people don’t build apps for the very few users that don’t like JavaScript web crap but are fine with Python Qt crap.


> pyQT apps start up instantly

????


Have you written code with it? I am working on a pyQT project right now that is interactive pretty much as soon as python starts up


It uses PyQt. I'm not sure I'd put much money on it being faster than an Electron app. The only other PyQt app I have used is Cura and that is ridiculously slow. Takes like a minute to start up and you can watch it loading the controls when there are a lot of them.

I'd take Electron over that tbh.


Last time I tried VidCutter it was incredibly slow. So slow that it seemed completely glitched sometimes. It was such an incredibly slow and laggy chore to do anything in the app I could not keep using it.


I've been writing some code in PyQT and it's been rather pleasant and performant. A lot of decent GUI apps are written in QT. Python is just slow.

I will take that over some stupid app cramming an entire instance of Chromium down my throat any day.


I've been writing some code in React.js and its been rather pleasent and performant.


Yeah but it's web tech. Desktop apps should feel like desktop apps, not a glorified webpage


Why?

Perhaps I'm missing something, but I only care about the functionality and not whether the button should have round edges or the background having the right shade of grey. The consistent "feel" is nice to have (cough winform/wpf/uwp cough), but I would take "web-ish" applications over no application/crappy native application anytime (especially with Linux)


Native's not crappy, it's the best and most supported. We just happen to be in love with the web aesthetic and cross-platform. And that decisionmaking is mostly made by MBAs who see tech as a means to a financial end and not for the joy of writing good code

Web shit is fucking ugly, it eschews platform native conventions, and it just feels cheap.

But when I load up a winforms-esque app with toolbars and a statusbar and all the nice accoutrements we're accustomed too behaving in the way we are accustomed to... now I feel like I'm going to get shit done.

Literally the only electron app that feels serious is VSCode and the amount of optimizing MS has had to do has cut into seven figures


What makes Python native and JS not?

n.b. just because CPython exists doesn't mean Python is native.

n.b. native vs. web is colloquially a discussion from 00s macOS and 10s mobile about fidelity to the platform's standard UI toolkit.

n.b. when people shit on Electron its because of RAM use and lack of fidelity to the platform toolkit, and the waste of have a full JS engine compiled into an app, ideally they'd all use some base WebView from the system instead of Chromium


I am talking about using the platform's native windowing controls.

> ideally they'd all use some base WebView from the system instead of Chromium

Ideally they don't use any of that web trash and use something that favors the native platform conventions


This is some weird flavor of moralizing technology. Normal people literally do not care or even notice.


[flagged]


They are the overwhelming majority of users, whether you like it or not. This is the free market at work.

There isn't even a valid concern here to complain about. Electron apps are cross-platform out of the box. The tradeoff for open access and low-cost development is more RAM. Turns out, developers are more than happy to make that deal.


> They are the overwhelming majority of users, whether you like it or not.

Yes, and? They're not here. This is not where they hang out. The point isn't why someone who doesn't even know the difference must not run bloatware, but rather why people who do know better frown on bloatware.

> This is the free market at work.

Anything but. The bit that's missing is transparency. As in, both the buyer and the seller know everything there is to know about the product in question and other options available.

> Turns out, developers are more than happy to make that deal.

Yes, developers. Not users, who aren't actually keen on upgrading machines to achieve the same stuff, but have been mislead to think this is how it has to be -- because from personal computer and user empowerment, we got to corporate empowerment. And the same way (too many) corporations outsource costs to society and their employees, we now consider doing the same as very professional. You called it "low-cost development", as if the externalized costs simply don't exist. It's just a few seconds here, a few dollars there, multiplied over thousands or millions or actually-who-even-cares instances.

> Electron apps are cross-platform out of the box

So are apps that achieve the same or more with way, way less. When you talk about the box the users take them out of, that is. When it comes to developers who can "just use what they already know", sure, for them Electron works "out of the box", while other things "require assembly". Okay, so what? Isn't that what coding is?

Imagine architects building shittier bridges that use more resources, because that's easier and quicker. That's perfectly fine for individual architects, but as a trend it's just regression.


100% this.

> The point isn't why someone who doesn't even know the difference must not run bloatware, but rather why people who do know better frown on bloatware.

Also, computing industry seems to be unique in that tools for professionals and toys for general audience are being developed to the lowest common denominator of the latter. This is what's changed in the past 1.5 decade. Can you imagine surgeons or civil engineers doing their jobs using tools designed to take advantage of Joe Always Half-Drunk and Jane the Long Retired Grandma and the likes?

(This is partially where the idea that "customer doesn't want a drill, they want a hole in a wall" leads people astray.)

> Imagine architects building shittier bridges that use more resources, because that's easier and quicker. That's perfectly fine for individual architects, but as a trend it's just regression.

That is unfortunately happening everywhere, as the "cost function" driving optimization isn't global/general efficiency, but business efficiency. Initially these two are correlated, so any new industry tends to first develop in ways that cut down waste. But then it transitions to reducing costs to company, by generating more waste, just for someone else. Externalities seem to be a general problem for our civilization today.


As to your last paragraph, what really gets me is this:

However much you might save by cutting X corners, or how much you might make by selling someone something they don't need, etc. -- there are hundreds, thousands of companies you're dealing with that do the same to you, to people you love, your co-workers, employees and customers, probably making your life much worse than your own corner cutting can recoup. It might not even make business sense in the bigger picture, because instead of a small slice of something that is at least pie you get container ships full of saw dust or something.


I can't believe you're comparing developing desktop apps to surgery and civil engineering. The stakes here are zero. This is what open source software is all about: making apps accessible to more devs, and more users.


> The stakes here are zero.

For most, yes. But for software where stakes are non-zero, for software where errors could kill people or cause billions of dollars of damage, the tooling is... exactly the same. For example, the infamous "Industry 4.0" and "Industrial IoT" buzz-phrases are, in big part, about your usual garden quality open source software - mostly webshit - orchestrating the actual control systems in factories and manufacturing plants. I shudder to think what "Industry 5.0" will look like.


You are making weird moral judgements about desktop app frameworks. There is nothing wrong with Electron, there is no "regression". There is a reason why you're losing this battle, and it's because for many devs developing small apps, Electron is easier. That's it.

What I really can't understand is how people get so heated about tech stack choices like this. We're not talking about civil engineering, we're talking about an ffmpeg wrapper. Electron is just a means to an end. If your alternatives were better at what devs and users cared about, they'd be more popular. Clearly that isn't the case.

You should be excited that frameworks like Electron allow more devs to make powerful tools accessible to the public so quickly. This is what open source is all about!


> there is no "regression"

Not according to your standards, and that's fine, for your standards.

> There is a reason why you're losing this battle, and it's because for many devs developing small apps, Electron is easier. That's it.

What "battle"? Decent software still is being made, I'm still using it. But if someone is presented to the world, saying why I would never dream of using it is fair, no?

Why should I care what's easier for some "rando dev"? I'm the person who would use their resources to run it, while not using things that are faster and don't introduce even half a second of "waiting" (who does that?) when starting them, doing the thing, quitting them; even when I already have dozens of similarly well made programs running. So while someone else might say "oh this is great, because I don't know about Avidemux (or would rather wait 5 seconds just staring at nothing than spend 2 seconds hunting for the menu option)", I don't. Either you accept both types of reaction, or none.

> We're not talking about civil engineering, we're talking about an ffmpeg wrapper.

Exactly. Why again is that over 100MB big? Even making it in Love2D or something would be a million times more sane. And again, I'm not talking about civil engineering either, the alternatives I presented were "an Avidemux tutorial" which would be like 5 sentences and 3 screenshots, or Avidemux minus all the other stuff.

> If your alternatives were better at what devs and users cared about

My opinion of something isn't about what other people care about, in their state of what I'd describe as ignorance. And you aren't even saying what you care about, you are talking about "the average user", which is a complete waste of time. Bring even just one actual non-technical person in and let each of us make our points, let us show them the process of installing and using each respective software, and you'd have the start of an argument.

It's also not that everybody and their dog drives a SUV because that is sane. I don't care about what leads people to doing these things. I see the outcome, so whatever the root cause is, I see it as something to be improved, not accepted. If everything that anyone did was perfect by default and shouldn't be criticized, because that'd be a "weird moral judgement", why talk about anything?

> You should be excited that frameworks like Electron allow more devs to make powerful tools accessible to the public so quickly.

Why? Why can't you be excited that I can don't find them powerful, because they do 1% and take longer to do it, then sit there constantly taking up more space? After saying I am making "weird moral judgements", now you tell me what I should be excited for?


Why does everything have to boil down to making money? This is exactly what I mean.

The free market is meaningless when minds are corrupted by people who profit from them


Because developers need to eat, this should not be hard to understand. It is cheaper and faster to build an Electron app and have it immediately work cross platform, than to build several native apps just to please some random internet purist.


And if that eating is already covered? To say nothing of QT, Avalonia, Uno, GTK, and others. Many of those manage to figure out cross-platform with native controls.

But no, we have to use electron because she can throw cheap oversaturated webdevs at the problem and call it a day.


Because it's easier. That's it. You can argue about "equivalent alternatives" until you're blue in the face, but you're wrong. It's just easier for many devs to use Electron than whatever you just spouted, and that's why it's more popular.

You are acting like Principal Skinner going "No, it is the children who are wrong." What I can't understand is, why do you care so much?


Why do you care about why I care so much? I have my reasons. I have outlined them. They are much better than anyone else's reasons, by my standard, and I am going to stick to them.

Why are you arguing such conformist bullshit?


It's even easier to make a 3 screenshot tutorial to explain how to do it in Avidemux. Slightly more work would be to fork Avidemux and rip out everything but the lossless cutting. But then you'd at least have a tool worth calling it that.

It's not a one-way street, either. Even just putting a link in front of me is asking for my attention. I then read the description, which doesn't mention that it's giant and totally pointless if you use Avidemux, and have to click to the releases page to realize yes, it's another one of these that seem to quickly become the norm, and that I know won't be maintained in 5 years. But hey, I don't have anything better to do with my time, surely!


What's the difference between Javascript and Python? Neither are "native" to any operating system.


Have fun copying that error message from a non-selectable label widget...


Platform native dialogs almost always let you copy text with CTRL+C

And winforms labels have a selectable mode.


React Native it is, then


Why so in love with React? There are a million other ways to write good GUI apps without involving Facebook's clockwork


Why so in love with pyqt? There are a million other ways to write good GUI apps without having to distribute a full python and qt environment.


To be honest, I don't know, I've never heard of lossless-cut before. I've always just used VidCutter.


Does this do anything clever to enable actual frame perfect cutting, or is it just splitting on keyframes like avidemux or `ffmpeg -i input.mp4 -ss "START_TIME" -to "END_TIME" -c:v copy output.mp4`?


There's nothing "clever" you can do to losslessly cut outside the keyframe boundaries. Since reencoding is required, loss of quality for at least the cut GOP is a given.


I'm not sure about that, naively you could turn the entire cut GOP into i-frames couldn't you? I'm not super familiar with the nitty gritty of h264/h265 but intuitively I think you wouldn't even need to turn everything in the GOP into i-frames. You could trace out the inter-frame topology of the GOP and then replace only the "orphan" frames with i-frames, then the remaining p and b-frames would retain the necessary reference data for decoding.

I would love it if someone who knows more about this than I do would confirm/deny since this is something I've been curious about for a long time now. (Though I would also love a tool for near-lossless cutting that just re-encodes the cut GOP, please link such a thing if it exists)


"naively you could turn the entire cut GOP into i-frames couldn't you"

Yes, but then you'd have to render the result into a truly uncompressed format and it would have to stay in that format perpetually. If you wanted to deliver in another lossy format, you'd actually lose quality across the entire file instead of just the one GOP.

What I'm curious about is whether you can cut in the middle of GOPs, recompress the afflicted ones, and then concatenate the stream back together without recompressing all GOPs. If the file specifies a 12-frame GOP, cutting any GOPs is going to break that cadence. So can you have, say, a few thousand 12-frame GOPs... then an 8-frame GOP... then go back to 12-frame GOPs?

Update: Did some research and you can have "adaptive" GOPs of varying lengths: https://docs.aws.amazon.com/mediaconvert/latest/ug/gop-struc...


Yeah there's no issue there, most codecs support variable bitrates and variable iframe-pacing, and ffmpeg will happily concat such files. Also, there's no need to render into an "uncompressed format" the i-frames are still compressed, and even in the naive case you'd only need small number of i-frames because you only need to replace any orphans in the cut GOP after which you can just go back to normal decoding.


Yeah, you can absolutely reencode just the GOP where the cut happens and IIRC quite a few tools support that.


Indeed, was wondering whether there is a clever tool like that, i-frames is a simple idea, and then you could potentiality did something smarter like your tracing idea


You can toggle it between snapping your selection to the nearest keyframe and reencoding the frames between your selection and the nearest keyframe.


I believe the SmartCut feature reencodes just the frames needed to reach the closest keyframe.


Does anyone know of a software that can do motion detection and spit out timestamps in a video for use in ffmpeg or the like?


What do you mean by motion detection? Scene changes?

But whatever you mean, the answer is probably VapourSynth. In fact, you can probably do whatever you are trying to do inside VapourSynth instead of ffmpeg.


If you mean scene changes, this library works: https://github.com/Breakthrough/PySceneDetect




If you mean scene change detecting, LosslessCut can do that (wrapper around ffmpeg filters)


What would you like ffmpeg to do with the timestamps, extract them?


Frame-accurate cut/concat in FFMPEG appears to me to be significantly less performant than it should be. I know that we need to re-encode to get frame-accuracy, but I've tried cut/concat say 300 clips from 3 source videos concat together for a total of 30 min. runtime as an experiment take days upon days (with no estimated time of completion), and swap memory usage exceeding 200GB. For something even somewhat complex, it's significantly faster to first export the frames to .png then reform the video, but I wish I didn't have to do that.


You could cut on any frame if your container and decoder supported decoding two tracks at once, then switching the active track. You could decode two tracks in parallel, each from the last keyframe, then switch whenever your want.

Scope-creep would of course require that to expand to include dissolves, transitions, etc until you've got a whole editor/compositor engine running just to playback a single composition.

However this would be quite possible with technologies like WebCodecs+WebGPU.


Decoding a single frame can be done a completely deterministic constant-time basis using hardware acceleration, common in embedded systems.

Decoding two consecutive frames would obviously require two such cycles, which the hardware may or may not be spec’d for. With three, four or n skipped frames, you would require (at least) n frames prebuffering, rendering and graphics memory to guarantee smooth playback.

I think it makes sense to differentiate between mastering formats and consumption formats.

One does not, after all, ship studio masters of albums or songs people listen to.


You don't even need to support multi-stream decoding, just fast seeking.

Matroska supports a feature like this where it can link together multiple segments, letting you do something like having one file for a repeated opening sequence in a TV series.


What's the reason video editing is not lossless by default?


E.g. MPEG4 videos are usually made of I-frames (full frames), P-frames (predictions based on older images) and B-frames (predictions based on older and future pictures), and from these Group Of Pictures are made, which always start with an I-frame.

You cannot make frame-precise cuts within this sequence unless you wish to carry on the frames that won't be visible (and I don't think anyone tries to do these cuts by keeping some invisible frames), so you only get to make such edits that always include the first I-frame of the sequence.

Therefore if you want to make completely lossless edits your editing precision is lost. For frame-precise editing one usually ends up re-encoding the stream.

Of course, you could only re-encode only the GoPs that get broken while keeping the rest intact, and I guess this would be better and a lot faster than re-encoding everything. I don't know if any application tries to do this. But that is also a bit troublesome, as you'd like to use the same encoding parameters—and maybe the same encoder—as the other frames, to not have quality differences between the edits and original.


>Of course, you could only re-encode only the GoPs that get broken while keeping the rest intact, and I guess this would be better and a lot faster than re-encoding everything. I don't know if any application tries to do this.

LosslessCut does have experimental support for this partial re-encode called "smart cut" [1]. Since it's using ffmpeg internally, the challenge become how to instruct ffmpeg to do this[2]?

[1]: https://github.com/mifi/lossless-cut/issues/126

[2]: https://github.com/mifi/lossless-cut/issues/1216


I suspect QuickTime Player.app's trim (Edit menu > Trim) does this as well when you save the result (as opposed to exporting it).

It's far too fast to be re-encoding the whole video and is too precise to be cutting at the nearest keyframe.

It has limited codec and container support, though.


> It's far too fast to be re-encoding the whole video and is too precise to be cutting at the nearest keyframe.

Correct! For example, if you trim the end of a video in the middle of a GOP, it includes the entire GOP as is, but only plays up to the point where you trimmed.


Which is a very bad solution! Imagine cutting a video to remove some very privacy sensitive material, and some of those frames still ending up in the file, just not viewed because in theory the video file politely asks the player to skip until a later timestamp.

I'd for sure rather have tools that actually do what they claim to do. Using container metadata tricks feels to me as lazy and misleading to the user.


> and I don't think anyone tries to do these cuts by keeping some invisible frames

My experience shows that if you try, this confuses and breaks many (especially hardware) players trying to play that file.


Smart Cutter[1] does frame-accurate edits without re-encoding. I'm not sure what black magic it uses, but it seems to work really well (tested on a couple of MPEG-TS IPTV streams).

[1] - https://www.fame-ring.com/smart_cutter.html


I don't know if there are many cricket fans here, but I wondered if this is why - when watching the Ashes highlights of the cricket on BBC iPlayer or YouTube - the ball seems transparent as it runs over the grass.


> Of course, you could only re-encode only the GoPs that get broken while keeping the rest intact

That's exactly what VidCutter does.


Non-linear (i.e. normal) video (and audio) editing is lossless until you export the result. The neat thing that tools like this one, LosslessCut, Avidemux, etc. do is that they don't re-encode the video on save/export.

There are a few caveats, though. Examples: (1) You're limited to cuts-only edits. (2) Because the base unit of video encoded for distribution is a GOP¹, edits either have to happen on GOP boundaries (i.e. at a keyframe) or the apps have to re-encode the GOP.

¹ https://en.wikipedia.org/wiki/Group_of_pictures


A video in the readme would go a long way


...or anything else in the readme describing the program in any way or form. The title of this post has more information about the program than the whole readme.


Cool. I was wondering why this didn't exist.


Fun fact: The history of lossless editing goes back to the dawn of digital video on personal computers. For example, QuickTime Movies¹ have always been based on an EDL² model. Only when you "export" (vs. "save") is the content re-encoded.

The most popular tool in this category that I know of is https://mifi.no/losslesscut/.

¹ The object, vs. the QuickTime Movie file format ² https://en.wikipedia.org/wiki/Edit_decision_list


Only when you "export" (vs. "save") is the content re-encoded.

That's the way video editing in general has always worked.


Avidemux is another alternative existing for many years. I've used it a lot to quickly edit videos without recompression - saved me tons of time.


Yes, I recall using Avidemux for this purpose roughly 20 years ago.


There's also LosslessCut: https://github.com/mifi/lossless-cut



It has existed for decades.


OT: Are there any tools like LosslessCut (or extensions to it) that can do the following things?

1) Insert a few title slides in the video with a bit of text and image animation (like text and a logo showing up with some basic animation)

2) Add background music across various parts of the video


This is a perfect app for this job. Finally, cropping a part of a video to share quickly has became convenient! Thank you an awful huge lot!!

I used AviDemux in the past but that was a UX horror.


Is there any equivalent of losslesscut or vidcutter for images (jpeg, png)? The one I'm aware of is cropgui. Wondering if there is another alternative


So just a big ffmpeg wrapper?


Not _just_ a ffmpeg wrapper. But a ffmpeg wrapper, which is written in Python and is installable with flatpak.


Yes, almost like YouTube.




Consider applying for YC's Fall 2025 batch! Applications are open till Aug 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: