3 ms·
I don't find trimming videos with ffmpeg particularly difficult, is just-ss xx -to xx -c copy basically. Sure, you need to get those time stamps using a media p
by sorenjan 7mo ago
I don't find trimming videos with ffmpeg particularly difficult, is just-ss xx -to xx -c copy basically. Sure, you need to get those time stamps using a media player, but you probably already have one so that isn't really an issue.
What I've found to be trickier is dividing a video into multiple clips, where one clip can start at the end of another, but not necessarily.
- ramon156 7mo agoI don't find Sharing files with people very difficult, just login to your FTP and give an account to another user. - Person commenting on OneDrive
- sorenjan 7mo agoMissed opportunity to reference the famous Dropbox hn comment. I just think there are other closely related use cases where a separate program can add more value, especially in the terminal. I wouldn't suggest most people should use ffmpeg instead of a gui, those are too dissimilar. Another example is cutting out a part of a video, with ffmpeg you need to make two temporary videos and then concatenate them, that process would greatly benefit from a better ux.
- tptacek 7mo agoPoint of order: the Dropbox HN comment is famously misconstrued. People think it was about Dropbox; it was about the Dropbox YC application, and was both well-intentioned and constructive.
- gyan 7mo ago> with ffmpeg you need to make two temporary videos and then concatenate them It can be done in a single command, no temp files needed.
- c0d3rPrimate 7mo ago[dead]
- hiccuphippo 7mo agoI used a plugin in mpv to do it but I can't find it anymore. You just pressed a key to mark the start and end. And with . and , you could do it at keyframe resolution not just seconds.
- justo32 7mo ago[dead]
- rigrassm 7mo agoFound a few links to projects that fit this description in an awesome-mpv repo. https://github.com/stax76/awesome-mpv?tab=readme-ov-file#video-editing https://github.com/stax76/awesome-mpv?tab=readme-ov-file#vid... Appreciate you mentioning the MPV route for making clips, I might actually go through and process all the game recordings I saved for clips over the years.
- opan 7mo agoThere's mpv-webm, which is great, but has no way to make a lossless clip AFAIK.
- bolangi 7mo agoFWIW, here's a simple command line utility for joining and trimming the multiple video files produced by a video camera. https://metacpan.org/dist/App-fftrim/view/script/fftrim https://metacpan.org/dist/App-fftrim/view/script/fftrim
- neRok 7mo agoThere's nothing easy about it. Here's a taste. # make a 6 second long video that alternates from green to red every second. ffmpeg -f lavfi -i "color=red[a];color=green[b];[a][b]overlay='mod(floor(t)\,2)*w'" -t 6 master.mp4; # creates 150 frames @ 25fps. # try make a 1 second clip starting at 0sec. it should be all green. ffmpeg -ss 0 -i "master.mp4" -t 1 -c copy "clip1.mp4"; # exports 27 frames. you see some red. ffmpeg -ss 0 -t 1 -i "master.mp4" -c copy "clip2.mp4"; # exports 27 frames. you see some red. ffmpeg -ss 0 -to 1 -i "master.mp4" -c copy "clip3.mp4"; # exports 27 frames. you see some red. # -t and -to stop after the limit, so subtract a frame. but that leaves 26... # so perhaps offset the start time so that frame#0 is at 0.04 (ie, list starts at 1)? ffmpeg -itsoffset 0.04 -ss 0 -i "master.mp4" -t 0.96 -c copy "clip4.mp4"; # exports 25 frames, all green, time = 1.00. success. # try make another 1 second clip starting at 2sec. it should be all green. ffmpeg -itsoffset 0.04 -ss 2 -i "master.mp4" -t 0.96 -c copy "clip5.mp4"; # exports 75 frames, time = 1.08, and you see red-green-red. # maybe don't offset the start, and drop 2 at the end? ffmpeg -ss 2 -i "master.mp4" -t 0.92 -c copy "clip6.mp4"; # exports 75 frames, time = 1.08, and you see green-red. ffmpeg -ss 2 -t 0.92 -i "master.mp4" -c copy "clip7.mp4"; # exports 75 frames, time = 0.92, and you see green-red. # try something different... ffmpeg -ss 2 -i "master.mp4" -c copy -frames 25 "clip8.mp4"; # video is broken. ffmpeg -ss 2 -i "master.mp4" -c copy -frames 25 -avoid_negative_ts make_zero "clip9.mp4"; # exports 25 frames, all green, time = 1.00. success? # try export a red video the same way. ffmpeg -ss 3 -i "master.mp4" -c copy -frames 25 -avoid_negative_ts make_zero "clip10.mp4"; # oh no, it's all green!
- sorenjan 7mo agoI've never tried doing frame perfect clips like that, that does sound annoying. But from a cursory read of the source, I don't think this program will solve that issue either? Because the time stamps in your examples are all correct, and the TUI is using ffmpeg with -ss and -t as well. func BuildFFmpegCommand(opts ExportOptions) string { output := opts.Output if output == "" { output = generateOutputName(opts.Input) } duration := opts.OutPoint - opts.InPoint args := []string{"ffmpeg", "-y", "-ss", fmt.Sprintf("%.3f", opts.InPoint.Seconds()), "-i", filepath.Base(opts.Input), "-t", fmt.Sprintf("%.3f", duration.Seconds()), } I think the best way of getting frame accurate clips like that is putting the starting time after the input (or rather before the output), which decodes the video up to that time, and reencode it instead of copying. Both of these commands gives the expected output: ffmpeg -i master.mp4 -ss 0 -t 1 -c:v libx264 green.mp4 ffmpeg -i master.mp4 -ss 1 -t 1 -c:v libx264 red.mp4
- skeeter2020 7mo agoI've been trying to cut precise clips from a long mp4 video over the past week or so and learned a lot. I started with ffmpeg on the command line but between getting accurate timestamps and keyframe/encoding issues it is not trivial. For my needs I want a very precise starting frame and best results came from first reencoding at much higher quality, then marking & batching with LossLessCut, then down coding my clips to desired quality. Even then there's still some manual review and touch-up. It's not crazy-hard, but by no means trivial or simple. https://github.com/mifi/lossless-cut https://github.com/mifi/lossless-cut