9 ms·
Create Vintage Videos Using FFmpeg in 4 Simple Steps
- systemvoltage 6y agoEvery single vintage effect misses out on one crucial factor - Resolution. Vintage films (even when scanned in 4K) do not have the same type of aliasing and sharpening aspects that digital cameras have. This effect is what “makes” it vintage for me. If you haven’t seen, Apollo (2019) documentary is simply stunning and even though it’s in 4K, it appears vintage.
- ponderingfish 6y agoExcellent point. Perhaps, a blurring filter would help with that.
- atonse 6y agoAnd a little bit of grain?
- kawsper 6y agoI would consider also getting some old lenses like the Krasnogorsk if you're recording this yourself. https://youtu.be/2YzFPruwXyk https://youtu.be/2YzFPruwXyk https://youtu.be/XelO_3rrkeA https://youtu.be/XelO_3rrkeA
- ponderingfish 6y agoNice! I am actually just using my iPhone videos and converting them this way! The output is pretty good and when I shared them with family, they loved it. Thanks for the lens links.
- deleted 6y ago[deleted]
- crazygringo 6y agoI'm curious what you're referring to specifically, since there is incredibly sharp film footage out there. Are you talking about resolution from film grain? Because 35mm film is generally to be considered a good bit higher resolution than 4K. Or the noise properties of film grain, which is a separate issue from resolution? Which shows up some in well-lit conditions, but is even more obvious in nighttime shots? That's certainly easy to add. Or are you talking about lower-quality lenses (e.g. chromatic abberation), or focus issues? Or something else? I don't know at all what you mean by the "aliasing and sharpening" that you claim professional digital cameras perform. (Since we're not talking about iPhone camera processing, but rather the cameras movies and broadcasters use.)
- simias 6y agoAnalog support doesn't sample individual pixels in a grid format. That's why it's rather meaningless to talk about the resolution of analog photos or video, the actually information density will vary depending on a large number of factors and may not even be the same depending on what you measure. For instance old school analog TV had significantly more information in the lumas than in the chroma. And then you have old school lenses vs. modern lenses and many other factors. I agree with the parent that the end result is an amusing novelty but if the intention was to fool me into thinking that it was actually an ancient recording I don't think I would've fallen for it. It's too sharp, the blurring effect on movement feel wrong too and the dynamics are off I think (film has amazing contrast that digital sensors still struggle to emulate).
- schrijver 6y ago> For instance old school analog TV had significantly more information in the lumas than in the chroma. That’s the case for the large majority of digital content as well, in a codec like H264 the chroma resolution is a quarter of the luma resolution. > but if the intention was to fool me into thinking that it was actually an ancient recording To be fair, no one claimed this. I think it’s almost impossible to do because so many factors come together.
- crazygringo 6y ago
- leeoniya 6y agosomewhat related: https://www.gamasutra.com/blogs/KylePittman/20150420/241442/CRT_Simulation_in_Super_Win_the_Game.php https://www.gamasutra.com/blogs/KylePittman/20150420/241442/...
- HelloNurse 6y agoThere's vintage and vintage. Old film scanned today (with modern resolution and chromatic fidelity, reproducing accurately chemical and optical issues in the original) is very different from old TV footage (with anisotropic filtering and old magnetic tape degradation effects) and from early digital cameras.
- warpech 6y agoWhich Apollo documentary are you referring to? There were a few last year according to IMDB
- yalooze 6y agoNot OP but can only assume it's this one https://www.imdb.com/title/tt8760684/?ref_=fn_al_tt_1 https://www.imdb.com/title/tt8760684/?ref_=fn_al_tt_1 lots of new footage and a great documentary.
- interestica 6y agoThis one. It's quite incredible in the way it's constructed. https://en.wikipedia.org/wiki/Apollo_11_(2019_film) https://en.wikipedia.org/wiki/Apollo_11_(2019_film) > The film consists solely of archival footage, including 70 mm film previously unreleased to the public, and does not feature narration, interviews or modern recreations. > In late 2016, Todd Douglas Miller had recently completed work on The Last Steps, a documentary about Apollo 17, when British archivist and film editor Stephen Slater suggested making a similarly themed documentary for the upcoming 50th anniversary celebrations of Apollo 11. > Miller's conception of the film was centered on a direct cinema approach. The final film contains no voice-over narration or interviews beyond what was available in the contemporary source material.
- moondev 6y agoFound a preview of this on youtube for anyone curious: https://www.youtube.com/watch?v=NgUYurzK-tM https://www.youtube.com/watch?v=NgUYurzK-tM The example footage looks awesome - incredible quality but unmistakably vintage.
- interestica 6y agoThat clip may be max 1080. Whats crazy is that while the film was released in 4k, the content sourced from 70mm film has a way higher (8k? more?) potential resolution. Combined with something like https://news.ycombinator.com/item?id=25105713 https://news.ycombinator.com/item?id=25105713 and we may still have really cool things to see from the 60s.
- vmception 6y agoThen add that affect lol. In production you don't just apply one filter and be done with it, and you don't just apply the filter evenly, you want to layer mask and add something dynamic to it. A proper tutorial won't tell you about all the other filters, just the one specific effect it is talking about.
- ExcavateGrandMa 6y ago"Secure Connection Failed"... your secure socket layer lacks compatibility... It's bad to share information with the public :)
- frankzander 6y agoSite doesn't work well with disables JS because of AMP. please disable this useless crap.
- frankzander 6y agoBut cool effect without expensive tools :)
- ux 6y agoYou forgot to add a vignette filter :) Also, the vignette preset for the curves filter is a bit over-the-top, you may want to get a smoother preset (the vignette filter can import Photoshop preset files, so you can look if you can find a free preset somewhere). Alternatively you can find out strategic keypoints within GIMP and translate them to FFmpeg parameter (a bit more hassle I admit), but note that the interpolation between points might not be exactly the same.
- ponderingfish 6y agoNext weekend's project :) Thanks for the tip!
- oh_sigh 6y agoSlightly off-topic, but why do old time football videos always seem like they're played at 80% speed?
- ponderingfish 6y agoDo you mean that they look cartoonish-ly fast or slow? It could come down the frame-rate of the camera used for video capture.
- oh_sigh 6y agoSlow. If you look back at footage of say superbowl 1975, everything just moves slower than real life. And they don't make an effort to match the timing of the film to real life time, like when they show clips from 40 years ago or whatever during football games
- deleted 6y ago[deleted]
- minimaxir 6y agoFor working with FFmpeg for programmatic video editing, I also recommend using moviepy: https://github.com/Zulko/moviepy https://github.com/Zulko/moviepy Discussion a few years ago: https://news.ycombinator.com/item?id=16297295 https://news.ycombinator.com/item?id=16297295
- deeblering4 6y agoTo me the film damage/dust/hair overlay seems a bit severe. It’s kind of a default “old stuff looks like this” filter, but I don’t think old films were actually this damaged unless it was stored outside for years or something.
- jrwr 6y agomostly it comes from heavily played film from the movie theaters, as the film would get banged up and damaged from repeated plays
- ponderingfish 6y agoYou can reduce its impact by adjusting the opacity while doing the overlay.
- deleted 6y ago[deleted]
- supernova87a 6y agoIf only now you could add the film going through the projector shutter sound! (and the reel flapping at the end when done)
- johnchristopher 6y agoI'd add some blur, applied in random spots but large enough not to notice it's shifting.
- __zayne__ 6y agoIt’s cool to see more people writing posts and experimenting on this topic. I was surprised at how little info I could find trying to research this about a year ago, and spent a decent chunk of this year experimenting with trying to create vintage/retro video filters using FFmpeg. If anyone is curious, I shared a bunch of my notes on this topic here a little while ago: https://zayne.io/articles/vintage-camera-filters-with-ffmpeg https://zayne.io/articles/vintage-camera-filters-with-ffmpeg Disclaimer: I’m still an FFmpeg noob
- throw_m239339 6y agoDoes anybody know how to overlay a shorter footage on a longer one? Because the shortest footage just freeze at the last frame in the tutorial. I want the shorter overlaid footage to loop on top of the longer one, Here is what I've tried: ffmpeg -i "Old Film Grain.mp4" -i "main-footage.mp4" -filter_complex \ "[0]format=rgba,colorchannelmixer=aa=0.25[fg];[1][fg]overlay[out]"\ -map [out] -pix_fmt yuv420p -crf 18 final.mp4 The shortest footage (Old Film Grain.mp4) doesn't loop as an overlay.
- mmozeiko 6y agoTry adding "-stream_loop -1" before first -i argument.
- throw_m239339 6y agothanks, -stream_loop -1 just loops the encoding forever for me, adding a duration with -t fixes it.
- __zayne__ 6y agoI like to get the duration of the base video using ffprobe, then use -stream_loop -1 to loop the overlay video on top of it, while using -t with the duration before the output to ensure it will only be as long as the duration of the base video. Here's an example: DURATION="$(ffprobe -i input.mp4 -show_entries format=duration -v quiet -of csv='p=0')" ffmpeg -i input.mp4 -stream_loop -1 -i overlay.mp4 -filter_complex " [1]colorchannelmixer=aa=0.1[2];[2][0]scale2ref[2][1];[1] [2]overlay" -t $DURATION output.mp4
- throw_m239339 6y agoThanks, adding a duration to the CLI args works well.
- _Gyan_ 6y agoffprobe step nor -t needed. ffmpeg -i input.mp4 -stream_loop -1 -i overlay.mp4 -filter_complex " [1]colorchannelmixer=aa=0.1[2];[2][0]scale2ref[2][1];[1] [2]overlay=shortest=1" -shortest -fflags +shortest -max_interleave_delta 100M output.mp4
- offtop5 6y agoSeems like a cool weekend project to get this whole flow working as a lambda. Charge people 10$ a month or so to upload and convert videos to this
- ponderingfish 6y agoThe last step involves video compression which could take a bit of time depending on the size of the video. If someone can put it on the cloud, I'd love to take a look :)! Cheers!
- imhoguy 6y agoIt would be even cooler to get it working in user browser with local CPU and no upload thanks to ffmpeg on WASM: https://github.com/ffmpegwasm/ffmpeg.wasm https://github.com/ffmpegwasm/ffmpeg.wasm
- jqbd 6y agoadd fake upload and download progress bar for extra points
- offtop5 6y agoVery very cool. The only issue is then your depending on the user not doing something stupid during the 5 minutes of so it takes to process. I personally don't have time for this experiment, but it's definitely interesting
- imhoguy 6y agoIf mega.nz can keep user attention during download and decryption - yes, that happens all client side - then I don't see user doesn't wait for local transcoding process to finish. Show them pre/post processed keyframes as progress indicator.