Lack of yt-dlp+ffmpeg and screenshots' limited size on my mobile phone prompted me to build a simple tool to download pictures from YouTube videos. Check it out. hope you guys find it useful
I have extracted frames with vlc before before. They always look like shit. Like with a lower resolution. Why? Like if you freeze a youtube video the pic looks clean.
I think that's just VLC being VLC, or maybe VLC's youtube support doesn't get the high quality streams. When I play youtube videos with mpv (which uses yt-dlp), 's' to snapshot produces clean images.
During streaming, lower res image frames are sent, to avoid buffering as much as possible, depending on your internet speed the res increases or decreases
When you stop the frame, the video can download the highest res version without any problem, so you get crystal clear glimpse when paused, but blurry images when film is rolling.
> When you stop the frame, the video can download the highest res version without any problem, so you get crystal clear glimpse when paused, but blurry images when film is rolling.
If this were the case, when the player is paused and the "higher resolution frame" downloaded, there would be a discernable delay due to network and download latency, which I'm 100% certain is not the case. Pause any YT video and it is instantaneous with no perceivable delay or jank.
Edit: @teitoklien thank you for the correction about Adaptive Bitrate Streaming, I've removed this part of my reply so as to not spread misinformation. Sorry for any confusion!
Look into Adaptive Bitrate Streaming [0].
From what I’ve read HLS does work this way, when combined with Adaptive Bitrate streaming, the segment files are swapped midway depending on user device and connection quality (with each video segment being kept encoded at various qualities to change between as connection quality varies)
The screenshot thing is a fair question tho, why pausing leads to higher res. I think some players, do it custom, for User Experience, so that they can produce clean screenshots on pausing. I’ve seen YouTube do it for sure.
But for you’re main point, you’re objectively wrong, adaptive bit rates and swappable segment files are a thing.
Edit: (Don’t worry about it, being wrong is good hehe, i was wrong 7 times today while doing my work, helped me learn new things 3 out of those times, you helped me question myself and look back at my knowledge too, it’s been dusty for a while. Have a great day!)
It's basically an optical illusion. When things are in motion, your brain is better at ignoring the compression artifacts. When they're still, they're glaringly obvious.
By "pictures" does this mean individual frames? FYI on desktop using an up to date Chrome, you can right click twice – slowly, not a double-click – and choose "Save video frame as..." (on macOS, at least)
I giggled at "This extension does not contain any malicious or tracking code. No viruses. No ads. Only good software.". If only everybody added this statement we would not have malicious addons.
No it doesn't. FFMPEG can seek video directly without loading all the content, even for Dash/HLS (but in this case yt-dlp typically returns a plain HTTP source, which I assume internally FFMPEG uses HTTP header range to seek?)
Keep in mind you need to make sure to use input seeking, though (-ss before -i).
Also I'm not sure why they need `-vf scale="0:-1"` part.
I was gonna say that realistically your one liner is gonna need to be ran probably 20, 30 times before you’re able to pick the exact frame that you want.
But with a little bit extra work you could make that one liner into a script that will extract a range of frames surrounding the chosen timestamp.
Do any armchair lawyers (I know, I get what I pay for) want to chime in on the legality of creating user-definable 3-5 second gifs of YouTube videos, which link back to the video in question, for an online video curation library thing?
I mean, you will almost certainly be in a constant state of creating material in violation or copyright. Depending on the details of any specific copyright violation, it may be protected by Fair-use, and the length and lack of audio will likely help in your favor. But you'd have to defend those cases individually in court to even begin to make a fair-use argument. And I dont see how you could ever win any blanket decision in your favor.
With a good DMCA takedown story and compliance, you could potentially claim the copyright is responsibility of your users. And maybe you'll be too small, and the content, in general you are making too inconsequential, or even helpful (marketing wise) for anyone to care. But this is definitely be a project I would get a proper legal analysis of and have clear procedures and plans in place for any issues that may show up.
It is a full port of VLC so it should be able to handle this task. You're probably referring to the frontend which differs from the ones used on desktop but that does not mean the functionality is not available. It is, you just access it differently. Either enable the 'Take a screenshot' option (Controls Settings -> Take a screenshot) and use that or send an intent to do so. The former works while watching videos, the latter makes it possible to automate this task from within termux, Tasker or Automagic.
You can also just install vlc in termux and use the command line interface:
~ $ apt search vlc
Sorting... Done
Full Text Search... Done
vlc/stable 3.0.18-7 aarch64
A popular libre and open source media player and multimedia engine
vlc-qt/x11 3.0.18-7 aarch64
A popular libre and open source media player and multimedia engine
vlc-qt-static/x11 3.0.18-7 aarch64
Static libraries for vlc-qt
vlc-static/stable 3.0.18-7 aarch64
Static libraries for vlc