It's time to replace GIFs with AV1 video
singhkays.com
singhkays.com
I've talked about this before [0], but the big problem for me is that video is just difficult as hell. Compared to a GIF, it is just that much harder to save a video on a phone, and then upload it the same way as an image. Try to save a "GIF" from Twitter or from GIPHY - it's a /huge/ pain.
Whatever the GIF killer is will need to pass the right click test - I need to be able to just right click and save it.
With a GIF, you can right-click and save it, and all the looping info is inside the file. The quality is crappy, but it just works.
With all “proper” video formats, looping info is metadata, stored separately.
You can’t even go for something slightly more modern, animated PNGs, because there are warring formats and very few tools that support them.
I think the problem is that GIFs are images and so displayed as such with little concept of play-control. A video format communicate that you might want to pause for example. I believe a GIF-killer will need to be considered an image as a format.
> A video format communicate that you might want to pause for example.
> I believe a GIF-killer will need to be considered an image as a format.
If we consider animated GIF to be an image, then the distinction between "image" and "video" is pretty arbitrary.
I would say the distinction isn't inherent to the format either. It's inherent to the HTML tag. There's no reason we couldn't support `<img src="foo.av1" />` or `<video src="bar.gif" />` with the appropriate UI for each.
I actually think this is a symptom of something bigger: browsers (and most other applications) shouldn't care about media formats at all; that's a low-level concern of the OS/stdlib. The Datatypes system of AmigaOS (and later BeOS) is an example of how this could be improved.
The Internet has voted in favor of looping, "GIF-like" moving images. Platforms try to emulate this with proprietary video players. Some have sound (wanted or not), some of the video players prohibit copying, and none of the files work as simply as GIF for sharing.
We need something more modern than GIF, but that has playability baked in. Something that browsers treat as a moving image and not a video.
I don't quite follow. This is because the gif is decoded and played. No different than a video. You don't need a proprietary player to loop a video, you just go back to the start of the video. For streaming, this is only problematic for large videos that can't be cached, but the same applies to large gifs. Browsers can loop video, it's just a right-click setting. HTML5 can loop video, allowing sites to serve video in e.g. a banner, replacing gifs. You can save any video file just like a gif.
> Something that browsers treat as a moving image and not a video.
The entire point of deprecating gifs is because video is superior. Gif as an image format being able to specify frame duration and looping is hardly a noteworthy feature.
Try downloading a video from a popular social network. Can you easily do it without inspecting the source? If it's a two second clip, does it loop on your system? Or does the video player exit / end the stream?
This is absolutely a problem that GIF doesn't have.
> You don't need a proprietary player to loop a video
> You can save any video file just like a gif.
Except social networks force you to use a locked down or DRM'd player. You can get chunks of the video sometimes. Your non-tech friends are out of luck.
> you just go back to the start of the video
"just". Yeah, how many players support that out of the box? Yours might, but there are many more that do not.
Yes, I use Page Info (Tools menu -> Page Info) in Firefox. It lists all the media assets on the page and you can download the one you want.
The inability to right-click and save a video is less a problem with the video file itself and more a problem with how the page is structured. You can have the same right-click problem with GIFs depending on where they appear in the page structure.
Alternatively, use one of the media downloading add-ons which already exist.
The great mass of people don't care about saving media assets from a page. There will never be mass adoption of this, no matter how easy it is.
Video formats don't need to compete with GIFs. That competition is already over. GIF files are too big to be practical at scale. Video won the file size war a long time ago, which is precisely why Twitter "GIFs" are videos.
Inability to save videos/gifs isn't a format problem, it's a problem due to javascript obfuscation or DASH/HLS making it difficult because you have to find the video chunk url(s), fetch them, and if there are multiple pieces, piece the full video back together. Campaigning for a return to gif isn't going to make those sites switch back. The only sites that might switch back would be sites that already allow right-click download. They won't switch back either, though, because gifs are vastly less efficient.
Looping is a html5 video tag attribute. If a video isn't looping, it's because the site serving the video didn't add that tag attribute. Many gif-style video upload sites automatically loop videos.
Also, gifs in browsers don't support seeking which is annoying for gifs more than a few seconds long.
HTML5 video is perfectly fine, loops fine, and is easy to save if the site doesn't obfuscate it with javascript or turn it into a chunked HLS or DASH mess.
That's the site's decision. You also cannot easily download images from Twitter if there are more than one in a tweet for example. On Instagram it is blocked all in all.
No it isn't. UA means user agent, not corporate agent. If the user decides to persist something that is loaded on his machine then it is his choice to make.
You’re setting up a booth at a convention. You want to have a video playing on a TV. It should play forever in a loop.
Apparently, with any normal “smart” TV, that’s very hard to do! You can put a video file on an SD card or something, but you probably can’t persuade the built-in video player to loop it (edit: seamlessly, anyway). You can’t just set a loop flag on the file like you can with a GIF, because proper video formats don’t have any such flag.
I guess you could set up a web page with a looping video on it? That’s more of a hassle than just putting a file on an SD card, and less reliable if the net connection is spotty.
There are companies that will literally sell you a hardware dongle just to loop videos. It’s ludicrous.
QuickTime (MOV/MooV)
Says who? First of all, it really is debatable if animated gif even is a movie. It has no sound, is usually far shorter than the usual video clip, etc. Second, animated gifs are very often created solely for the purpose of displaying them in a short looping fashion. Third, the fact that all this can be done in a single image format makes them ideal for sharing through the web as well as private chat applications. And fifth, and this is what this is of course all about, sharing short animated gifs gives the user the possibility to share rich content not tied to any private business or entity. You can share 'em via Whatsapp, Telegram, e-mail, usb-stick, have a collection of them stored somewhere, without the need for a Facebook/Google/Amazon account and internet connectivity. You can look lovingly at them, even when your phone is in flight mode. Let's keep it that way. Let's not kill one of the nicest image formats around, and make everybody visit your website to see the embedded movie including horrid player that's supposed to be better but just isn't and never will be. Lot's of companies already did this (hi Twitter) and it's really disheartening to know that while I was able to collect a nice bunch of animated gifs over the years, my kids will probably never have that chance because the file format will just be walled off by the internet giants.
This means that once the new Chromium-based Edge ships, all major browsers will have support: https://www.caniuse.com/#feat=apng
1. https://pypi.org/project/apng/ 2. https://b.thumbs.redditmedia.com/4Q-yKMEPwm2higaB8Wj1pNII60j... 3. https://a.thumbs.redditmedia.com/kSUouIZtNICOcPf4v9F8fPOrpAe...
1. Similar looping behavior 2. No audio 3. Can be put in an <img> tag
You should be able to save the file like you would a gif, and viewers should also show it as they would a gif (not a video).
HEIF is an ISOBMFF (aka Quicktime/MP4 container)-derived container format for images, image sequences, and transformations. Its most visible use right now is Apple Live Photos, but various use-cases exist [2]. OS and application support is increasing.
Work is ongoing on defining AV1-encoded frames as a payload in HEIF [3].
[1] https://nokiatech.github.io/heif/technical.html [2] https://nokiatech.github.io/heif/examples.html [2] https://aomediacodec.github.io/av1-avif/#av1-image-sequence
The patent or patent application numbers, in order of their appearance in these documents:
AU 2014255577, CA 2909566, CN 201480034418.2, EP 14785343.6, IN 6931/CHENP/2015, KR 2015-7032685, RU 2015146961, US 14/254120, US 14/617266, WO PCT/FI2016/050063, US 14/618650, WO PCT/FI2016/050064, GB 1418114.3, WO PCT/FI2015/050671, WO PCT/FI2014/050582, US 14/583332, PCT/FI2014/051052, PCT PCT/FI2016/050381, US 15/578288
This is where I'd start.
Sources:
[1] https://mpeg.chiariglione.org/patents [2] https://isotc.iso.org/livelink/livelink/fetch/2000/2122/3770... [3] https://isotc.iso.org/livelink/livelink/fetch/2000/2122/3770... [4] https://isotc.iso.org/livelink/livelink/fetch/2000/2122/3770... [5] https://isotc.iso.org/livelink/livelink/fetch/2000/2122/3770... [6] https://www.iso.org/iso-standards-and-patents.html
https://github.com/nokiatech/heif/blob/master/LICENSE.TXT
So that solves that problem.
Which other patents is HEIF encumbered by?
Licensed Field is defined to be: "(...) the non-commercial purposes of evaluation, testing and academic research in each non-commercial case to use, run, modify (in a way that still complies with the Specification) and copy the Software to (a) generate, using one or more encoded pictures as inputs, a file complying with the Specification and including the one or more encoded pictures that were given as inputs; and/or (b) read a file complying with the Specification, resulting into one or more encoded pictures included in the file as outputs."
It is pretty clear from this reading that their patent grant is for non-commercial evaluation, testing and academic research only.
[1] https://github.com/nokiatech/heif/blob/master/LICENSE.TXT
https://patents.google.com/patent/US20160234144A1/ This one seems to be about specifying a Mimetype paramater that tries to describe the cost of image transformations requested in the target file, so that clients who know they can't perform those transformations can pick a different file.
https://patents.google.com/patent/US20160232939A1/ Seems to be about image sequences and specifying such a concept with coherent metadata in the container.
https://patents.google.com/patent/US20150193494A1/ This seems to talk about the myriad ways that ISOBMFF can assert metadata about data elements within, but there aren't always good ways to ensure the metadata points back to a specific data element. This talks about ways of figuring out whether such loosely-floating metadata in the container is still valid for data items; they also propose using checksums to figure out if the data items changed.
https://patents.google.com/patent/US20180146225A1/ This is a fancy restatement of P-frames for still images, leaving open the possibility that later frames also 'enhance' the first image in various ways e.g. upscale resolution and others.
https://patents.google.com/patent/US20140314148A1/ This defines signalling to allow putting all the I-frames at the start, and all the P-frames at the end.
Again, AV1 is royalty free, not patents free.
There is a feature request for Chrome: https://bugs.chromium.org/p/chromium/issues/detail?id=791658
WebP demo: https://webmproject.github.io/libwebp-demo/webp_wasm/index.h...
Theora\VP8\VP9\Opus\Vorbis demo: https://brionv.com/misc/ogv.js/demo/
ogv.js on GitHub: https://github.com/brion/ogv.js
Don't get me wrong, it's a super cool demo but anyone who does this is prod is a little nuts. The exception being a service that's write once read maybe like CCTV cameras.
Wikipedia uses ogv.js. If you've ever played audio or video on Wikipedia in Safari then you've used ogv.js.
Some Bach on Wikipedia in Safari: https://en.wikipedia.org/wiki/File:Chromatic_Fantasia_(Bach_...
When I want to copy an image from Instagram I have to use the dev tools to find it.
So it's worse than a UX problem, it's a social problem.
Maybe as-easy-as-screenshots screen recording would go a long way toward solving it, but we've been beat to it: big tech has bent kernels, operating systems, browsers, and even most nations around the world into collaborating to refuse to take moving screenshots of video files, under the label of DRM.
So maybe the root of it all is just timing. Images were added to the web when the web was just a tool, so everybody knew what they were before big tech could set an expectations like that moving an image from memory to disk isn't a normal feature, or that wanting to is controversial, or that doing it might be illegal. Video, though, came at a time when there were big players that knew the stakes and were ready.
Minus drag and drop, in browsers at least.
Videos really should be first-class entities, though.
Imagine an OS/browser-level ffmpeg implementation which would allow seamless copy/paste of videos, integrated snipping tools both for cropping and time, color adjustment, etc. with automatic imgur-style hosting of your newly edited video just a button-click away.
This only works for video tags that load a single webm/mp4 file. If it's using more complex chunked/streaming/mediasource delivery mode then you can't save the whole video because it's driven by javascript that might only keep a tiny slice of it loaded at any given time and not a single downloadable file. It also auto-negotiate quality and serve you a reduced version, which is probably not what you would want if you're downloading it.
Then you need browser addons or tools like youtube-dl to get the whole thing.
You just have to write some Greasemonkey script to circumvent all the crap that the video-serving websites do to prevent you from getting the normal video-in-a-browser UI. It's harder when you get this link https://gfycat.com/GregariousDevotedArachnid
You could even argue that GIFs not being a video with no video decoding required is a feature. It may take longer to load, but I can have 100+ GIFs playing at once with no impact to my CPU.
I don't care about video compression or hardware decoding or whatever until they function the same way as GIFs do.
The saving bit is the only part which doesn't work right with videos AFAIK. Sound-less (/muted) videos can autoplay and loop, and there's no controls unless you ask for them (via the `controls` attribute) or bring your own.
The examples in the article (the scenes are videos) autoplay, loop and don't have control in either Firefox or Safari.
Your opinions are just that, and usually overridable by the client. The client could even strip your media entirely.
And gifs are pausable (used to be ESC though apparently you now need extensions).
> This way the format has no choice but to behave as expected across everything.
I've got bad news for you: once it reaches the client you're not in control anymore, you can only suggest behaviour.
IMG would autoplay, would not have sound, would loop, and would not have controls.
VIDEO would be the opposite. For something like a plain JPG or PNG file, it just shows the one frame. Animated GIF files would of course benefit from the controls.
The same should go for unification of the VIDEO and AUDIO tags. Play an audio file as video, and you get a black screen with sound. Play a video file as audio, and you just hear the sound.
[1] https://calendar.perfplanet.com/2017/animated-gif-without-th... [2] https://bugs.chromium.org/p/chromium/issues/detail?id=791658
Why do you hate my phone battery so much?
Your average smartphone can play 1080p video without breaking a sweat, not so with 1080p gifs. Hell, a laptop will have permanent high-CPU usage on 1080p gifs, as a video it's background noise (https://www.reddit.com/r/osx/comments/43rrf0/pixel_art_gif_a...)
That's downright hostile to the end user…
https://www.w3.org/TR/UNDERSTANDING-WCAG20/time-limits-pause...
If browsers made it such that I couldn't not stop .gif animations (or playing video, or...), I would trash that browser.
Bluntly, you do not get to control my computer.
Human sight has evolved to be attracted to movement.
There are related problems like embedding. If you upload a video to Slack, say, you can’t control whether it autoplays or loops. If you upload a GIF it just works.
I agree that there won't be wide adoption of AV1s until it can transparently be interacted with just like gifs are now.
It doesn't seem like it mostly because browsers (slowly) decode GIF as they (slowly) download it, and cache all uncompressed frames in RAM. They don't do the same for <video> tag, because they assume it's only for high-res, non-looping video.
• GIF data is huge. 15x-20x times larger for the same dimensions & quality than normal video codecs, and sheer amount of bytes to chew through eclipses any savings from it being slightly simpler.
• GIF's compression doesn't support any parallelism. Frames have to be processed bit by bit, frame after frame. Your multi-core CPU can use only a fraction of its speed when decoding. OTOH modern formats support parallelism on all levels - frames, tiles within frames, blocks, transforms. Modern CPUs can process these very effectively.
• In modern systems RAM is ridiculously slow relative to computing power available on the CPU locally. However, GIF's LZW is based on lookups in a dynamic dictionary, so not only you have just one CPU core process it, the core mostly spends time chasing pointers.
• There's no hardware acceleration for GIF. For newer codecs it's quite common and very power-efficient.
There's no technical reason (other than legacy code) stopping browser vendors from treating AV1 just like GIF, with all looping <img> glory. In fact, Safari already supports H.264 in <img>! It's faster in every way.
I remember this myth, saying that the first moon landing required as much computing power (command central, ship etc.) as rendering a GIF. No mention about the resolution, frame speed and so on, though. Hence I think it's a myth. On the other hand you could probably tune those parameters enough to actually make it a true statement ...
There is an AV1 "image" format too, which supports "image sequences" but not, oddly, animation.
You can express the “lossless frames” aspect of GIFs today in existing video ways supported by MJPEG, H.264, H.265, or AV1 today.
AV1 image sequences are meant for sharing an album of stills, and are not a convenient shortcut for this.
Feeding a sequence of frames into `aomenc --lossless=1` should, assuming everything else is working correctly.
I believe looping is not currently a property that you can readily set at the codec level, which is perhaps the most critical missing feature of AGIF when considering codecs.
Perhaps focusing on the “loop” flag’s presence/absence and whether it’s honored by browsers would most usefully serve the post-GIF world?
Should AGIF continue to autoplay when in more efficient other formats it may not?
I don't know what you're talking about really... I was just using Google Slides today and both Firefox and Chrome went to 250% CPU usage, only because there was one slide with a 5 seconds full screen recording GIF. I begged to the person who added it to turn that to a video.
That's... not entirely accurate. What do you think is rendering all those gifs to screen?
https://www.hampsterdance.com/classics/originaldance.htm
Just did it on my 2011 MacBook Air. Pushes all four cores up... about 15%.
edit: such as https://giphy.com/sports/2019-stanley-cup-playoffs which seems to be entirely gifs if you view page resources in the debugger.
15% of 4 cores ~ 60% single core capacity. That's distinct from saturating a core both qualitatively and quantitatively, which means the prediction is not a bullseye... but it's on the order of magnitude in impact, which means they're not entirely wrong.
Two cores went up 20%. The other two didn't budge. Go figure.
Which is why I can't wait for GIFs to die.
1996: The GIF KILLER is going to be PNG! (We wait for animation. The PNG committee fails to deliver, they had a LZ method not covered by patent, they had the world cheering them on -- and having myself seen some of the listserv emails back then, some of the committee had asshole reasons thinly disguised like someone didn't like blinking banner ads.)
2001: The GIF killer is going to be MNG! (Oh now simple animation is too hardz! We're going to dump a kitchen sink of video features into it! Later! The rest of us have given up on the PNG committee) The GIF KILLER is going to be APNG! (Says Mozilla, not too convincingly but they did deliver something)
[embarrassing span of time passes]
2007: (The world gave up on all that. GIF is still alive)
[Interestingly, within this time the only other embed besides GIF that loops smoothly is Flash, and --- surprise -- it is universally hated by the Beautiful People]
[embarrassing span of time passes]
2016: With stupid player and JS tricks Geniuses loop video files that stutter and jump at the loop point and pretend they're GIFs. We have millions of colors but crappy loop stitches.
2019: GIF is still alive! Who'da thunk it. We have crappy 256 dither barf BUT perfect loop stitches! Because extending the simple concept to 16 million colors waaaay back in 1996 was just too advanced for the human race.
Let's have a round of applause for the PNG committee.
/SARC fuelled by some frustrating web development compromises
https://caniuse.com/#feat=mpeg4 97.16%
https://caniuse.com/#feat=webm 86.39%
https://caniuse.com/#feat=hevc 16.57%
https://caniuse.com/#feat=av1 35%
Note also that this is _any_ support at all, including the slow software implementations which boost the VP9 and AV1 numbers but have significant drawbacks if you care about quality, battery life, or the impact on other things running on the same device.
http://libwebpjs.appspot.com/vp8/webm-javascript-decoder/
And I think this:
https://developers.google.com/web/updates/2018/08/wasm-av1
So I don't think your "_any_ support at all" comment is correct.
Decoding MPEG4 in Javascript can be done, check out broadway but it uses massive massive CPU and basically sucks.
To put this in perspective, I have a 9 year old MacBook Air at home which I use for testing. If you look at 720/1080p video on YouTube, even that ancient hardware it takes 5-10% CPU to play H.264 content. I have a 2017 desktop at work with 4.2GHz Core i7 which still takes almost 100% of a CPU to play 720p AV-1 and ~60% to play VP9, or ~1% to play H.264. That's a really big difference for something like a GIF successor which will be widely shared, often with multiple visible at the same time, and people will expect to just work even on hardware which is more than a year old while still leaving capacity to do other things.
I think there is a bit of a parallel here. H.264 and WebM may be brilliant codecs from the engineering POV, but they are somehow encumbered [2]. This may end up in obvious legal problems; if possible, these should be avoided early on, by not investing the content in them where we can.
[1]: https://en.wikipedia.org/wiki/GIF#Unisys_and_LZW_patent_enfo...
IIRC the stuff which broke in IE6 were features GIFs didn't support at all (translucence and gamma correction).
For GIF replacement you'd use palettes and binary transparency, and it was supported just fine since IE4.
If the author aimed for the same quality they would be much smaller, they instead opted for the same bitrate because that would be opening the can of worms of "similar quality is subjective in the eye of the author." If you watch the samples, you can clearly see how more more AV1 gets done with [roughly] the same number of bits; H.264 looks like a complete joke in comparison.
If you massaged the AV1 bitrate until it was the same blurry mess as H.264 (in your eyes), it would likely be much smaller.
Except they didn't achieve quite the same bitrate. For scene 1, for example, H.264 was 209.9 kbps, VP9 was 191.2 kbps, AV1 was 230.1 kbps. Put another way: the AV1 stream had 39 additional kpbs (or 20% more bits) than the VP9 stream. 20% is a pretty big deal (especially at these low bitrates), and undermines the point the author was trying to make.
The increase in quality (and decrease in bitrate) for H.264 → VP9 is really cool. But the increase in quality for VP9 → AV1 isn't as impressive because the bitrate also increased. What would have really driven the author's point home was if the AV1 stream was higher quality and a lower bitrate than the VP9 stream.
I was thinking of the comparison from this angle:
GIF: plays everywhere, horrible quality and giant file sizes, high CPU usage.
H.264: plays everywhere, good quality and file sizes, almost universal hardware acceleration even on cheap devices
VP9: plays many places, competitive size with H.264, hardware acceleration is common but entire popular platforms lack support
AV1: limited support, great file sizes, hardware support has barely started shipping.
If the goal is to replace GIFs I would weight compatibility and ease of playback much greater than bumping the file size savings from 95% to 97%.
Notwithstanding any issues about video codec support in browsers, GIFs will continue to have value until browser-vendors, spec-writers, and webmasters accidentally or deliberately coalesce around a sane ruleset for embedded motion picture completely devoid of audio.
Today, browser-makers have concerns about which videos to autoplay, webmasters' tools for specifying "muted" videos have been unreliable. GIFs completely sidestep that conversation, because GIFs cannot contain audio, and will always autoplay.
1) Maximum duration of, say, 10 s (with mandatory looping)
2) Maximum display size of, say, 25% viewport area
3) Browsers must enforce "Click to stop" on these "video-img" elements even if there are other DOM elements on top.
I believe that autoplaying videos are allowed in all browsers if no sound channel is included in the video container.
They have. The "gifs" on reddit or imgur are generally h.264, even if you upload gifs they'll get converted to video files.
TFA's just saying those should be switched to AV1, or an AV1 source should be provided.
I'm not sure they're right though. h.264 will be larger and of lower quality especially at low bitrates, but clients can offload the decoding to hardware whereas with AV1 most or all will be decoding in software.
I've linked "images" purely because of the sound and other viewers got a version without it. And many times it just won't load. This is supposed to be simple...
Doing what this article recommends shouldn't cause those problems, though. The only notable risk is linking a format that mobile can't load.
I as a user can't possibly be expected to know and deal with whatever the recipient of my link uses.
A magnitude or two of data and worse quality is a small price to pay for something that actually works and still loads in realtime, even on mobile, anyway.
They can (publicly) now: https://news.ycombinator.com/item?id=19935900
Of course, there's no browser support for the Application Extension, so it requires a Javascript player for now.
I thought "everyone" already agreed on this. Video files are smaller and if you choose the right set of codecs for which clients have hardware acceleration then playback consumes less energy, meaning your visitors don't drain the batteries of their devices as fast.
> replacing GIFs with video has now been common for a few years
Indeed. Which kind of leaves me wondering why author seems to be introducing their article as though it wasn't.
Of course, the article does go on to argue for a specific codec. Still, to me it seems to talk in a way as if not using GIF is "controversial".
Aesthetically speaking GIFs have a character that you gotta jump through a lot of hoops to approximate with another format.
In addition to that they function everywhere, always autoplay, can't have annoying audio, and support transparency, these are all important features that nothing else on the 'market' can match.
I'm aware that there is lossless animated WebP with transparency, and I can encode a low-color animation into one of those for something functionally identical to a GIF, excepting the fact that it won't be supported anywhere except a recent Chrome.
[1] https://news.ycombinator.com/item?id=13871809 [2] https://www.chromestatus.com/feature/6691520493125632
It's a huge upgrade for certain kinds of content, especially animated icons with aliased edges. But that narrowness means there's only a moderately small push toward adoption.
APNG or something similar should have replaced GIF completely, but the delivery was badly fumbled. Browsers now mostly support it, but authoring tools mostly don’t.
Transparency for video is kind of a niche thing, sure, but when you need it you really need it. A good example would be compositing green-screen footage. (Keying transparency on a specific color is exactly the kind of hack GIF uses, whereas PNG does it properly, with a separate alpha channel.)
Omitting obvious stuff like an alpha channel because you don’t think anyone needs it is exactly the kind of oversight that makes all these “modern” video formats unable to completely replace GIFs. Looping is another example.
And I didn't say transparency isn't needed by "anyone". I said it's very rare for video-ish content.
Apng is better than gif. But its advantages really shine in realms other than video content. They're both pretty bad at video content, even despite looping properly.
MP4 AVC feels like a great replacement for animated GIFs and almost every device in use today plays it nicely yet, sadly, most of the websites that would allow inserting a GIF in a post won't allow an MP4 file instead. For some sites you even have to convert an MP4 to GIF before uploading it just to see it converted back to MP4 on their side for serving.
Perhaps it could be handy if img tags would just be extended to accept video files (of all the video formats the browser supports) below certain size. Or we should better (perhaps) just forget such a category as an "animated picture" and switch to treating them like regular videos, introducing a separate button to insert such alongside to the "insert picture" button.
media.av1.enabled
For what it's worth, AV1 videos play really slowly on my machine. There's probably a reason AV1 is not enabled by default yet. media.av1.use-dav1d = trueAPNG or similar image formats are better for this purpose
I agree, but I want to add that this has another side effect you don't mention: it makes high quality images impossible. In 2019, it would nice to have something better than cjpeg -q 98 for near lossless (or completely lossless images). I've spent many hours tinkering with the new inter frame based image codecs, and I haven't been able to achieve this because despite their advertised support for better standards, the decoders seem to have only implemented 8 bit 4:2:0 subsampled sRGB images.
I guess I'll go on storing my photography in 150 MB TIFF files...
- AV1 has a palette predictor designed to improve on pixel art by storing individual pixels as indexes into a palette.
- Chroma from luma helps preserve exact colors in pixel art, assuming color is lonely related to brightness (won't work as well for color-only changes, possibly not when brightness and color vary separately, or multiple colors and brightness are mixed)
Bad:
- AV1 takes seconds to minutes per frame. I let my laptop chug for half to several hours, running Manjaro AUR with bleeding-edge ffmpeg-git, encoding multicore tiled AV1, and it managed to encode under 3 seconds of video. (Did it link to an older libaom-av1 or is it bundled statically with ffmpeg?)
- When chroma subsampling and CfL (chroma from luma) mix, the brightness is subsampled to create a color prediction, instead of being used to add extra color resolution.
- Youtube's sample AV1 encodes have 4:2:0 subsampling (aka color channels have halved width and height resolution).
Rav1e may be faster, but apparently disabling chroma subsampling breaks CfL and inter-frames.
Personally, I love gifs. They work with no fuss.
It's a terribly shitty format, but remains popular because it has universal support and so works with no fuss. We need to get the same amount of support for a better format.
Anyone who cares about their data bill should be asking very serious questions about why we're still stuck with the massively inefficient 32-year-old GIF format as the only widely supported way to display an inline animation, especially as many superior alternatives like FLIF, BPG, etc. have been released over the last several years.
GIFs waste absolutely ungodly quantities of bandwidth. Any semi-modern video codec is at least an order of magnitude more efficient. Any way you slice it, the continued dominance of GIF is, at best, an egregious oversight, and it has a direct dollar impact on anyone with a metered connection (this is your phone, but increasingly likely to be your home connection too).
As a community, we need to make an alternative to GIF a real priority.
edit: I've downloaded first example[1] and video player won't play it neither.
edit2: Firefox 66 works!
[1] https://www.singhkays.com/blog/its-time-replace-gifs-with-av...
Edit: as ataylor pointed out, Mac support was added in 66.0 https://www.mozilla.org/en-US/firefox/66.0/releasenotes/
Firefox 66.0.5 (64-bit)
on Windows 10
And this is a challenge for a "new" format: if AV1 works on 90% of systems, and GIF works on 100%, then in many cases GIF is the clearly correct solution. Why would I throw away 10% of my money? Why would I ignore 10% of my customers? In many businesses, just a few customer calls because of this could seriously hurt profitability.
Even though the first preference is AV1, the 2nd, 3rd & 4th preferences are VP9, H264 and GIF which should play
The article, in its ffmpeg encoding guide says,
-f - Only used in the first pass. Specifies the format of the output file in the second pass i.e. MP4 in this case
This is not required to be the same as the intended output format. Using `-f null -` will work just as well, as long as the encoder is epxressly set, which it is, in the commands shown.I understand pushing for progress, but with this table, I'm not sure "it's time" just yet.
Exporting video formats is expensive: there's a lot of optimization work to have a high-quality battery-friendly implementation, decode hardware has to be licensed & updated, and they have to do security hardening and support every time they add a new format. If they're already working on AV1, why double the cost to add support for an older format which is almost never used as the only option?
VP9 is still interesting today since there are many devices out there that decode it and will never decode AV1 with hardware.
I think the reason is not technical. Apple has patents for MPEG formats, I think they wanted to push these formats instead. By not supporting VP8/VP9, they force(d) everyone to support their formats.
Now, if I want to make a video call with someone with an Apple device, I'll probably need, if I live in a place where software patents apply, to pay a license to decode/encode an MPEG format where the royalty-free VP9 would have done the job. Worse, I probably indirectly pay these fees (anyway) when I buy devices with support for MPEG formats, even if I live at some place were software patents don't apply.
4.4 shipped with software support, which meant that it was slow and chewed battery like it was going out of style. You had to wait until around 2015-2016 for hardware decoding support and around 2017 for encoding support before it became competitive.
Even then, however, there's a bigger problem: what really matters is the amount of unique video recorded in VP9, which even Google doesn't seem to do. Apple's users almost never run into the situation where they miss out on something because their device doesn't support VP9. Since the entire industry is moving to the newer AV1 format, the question is whether it's worth taking on the long-term security & support commitment of supporting an old-new format or simply putting those resources into something which will actually replace H.264 as a universally-supported format.
> By not supporting VP8/VP9, they force(d) everyone to support their formats.
This is trying too hard to construct a conspiracy theory: VP8 had no advantages over H.264 and arrived years later. VP9 had no significant advantages over H.265 and arrived years later. The only significant source of original content in either one is WebRTC chat, which is a pretty limited hook to justify a major {development,support,security,patent risk} commitment.
https://medium.com/netflix-techblog/optimized-shot-based-enc...
I've had 10-15 seconds of videos (640x480) at 10 fps well under 200 KB. I also compared JPEG with MP4 and decided to use MP4 video (1 frame) instead of JPEG to keep myself from re-implementing a UI again for an image.
There is no phone/tablet that can afford such performance.
Okay, I will. Hrm. Intel's AV1 encoder is getting 24 frames per second:
https://www.phoronix.com/scan.php?page=news_item&px=SVT-AV1-...
WAKE UP!
> There is no phone/tablet that can afford such performance.
Isn't there? I wonder how well the top end iPhones are decoding AV1:
https://code.videolan.org/videolan/dav1d/issues/15
Decoding at over 100 frames per second multithreaded two weeks ago. Not bad.
If your intent is to display content that is originally video, then you should use the best and most supported video format.
If your intent is to display some effect through animation, a gif isnt a bad thing.
For example, the ajax loader that we are all familiar with? The size difference is minor. The gif is 16k, an mp4 is 11k. HOWEVER, with the video I have worry about the browser playing it, looping it, and does it handle transparency? (i dunno)
If I wanted one of those full page & full motion backgrounds, it would definitely be a video. The first time I saw a page like that load, load really fast, and be high quality video, I was amazed (leave aside aesthetics)
https://webkit.org/blog/8672/on-the-road-to-webrtc-1-0-inclu...
And yes, I know websites can send subtitles separately then render the subtitles over the <video> element, but that's no excuse for an ostensibly modern media container to not support subtitle tracks.
The word “gif” will come to mean “animated image”.
ffmpeg -i input.mp4 -c:v libaom-av1 -strict experimental out.webm
Encoding on the CPU is less than 1fps now. rav1e is a bit faster. Hardware encoder support might be available on CPUs in 2020.https://www.phoronix.com/scan.php?page=news_item&px=SVT-AV1-...
YouTube already has many of its videos encoded in AV1 up to 720p. Try it yourself with Firefox 67 beta, or any other browser which uses the dav1d decoder.
Turn on AV1 on YouTube (set it to "Always prefer AV1"): https://www.youtube.com/testtube
Try the AV1 playlist: https://www.youtube.com/playlist?list=PLyqf6gJt7KuHBmeVzZteZ...
Pick any popular video on YouTube (like a music video) and play it. Check the format with right-click -> Stats for Nerds. If it's AV1 the codec will be "av01".
On my 5-year old laptop, AV1 in Firefox 67 beta is fast enough for 1080p30 and almost fast enough for 1080p60.
What we can get from the article thought is: why isn't gif replaced by webm/vp9 yet? Can be encoded in no time and is actually supported everywhere.
Apple has significant market penetration, and you can't get VP9 to easily work in safari/iOS/tvOS
Youtube serves h.264 to Apple platforms.
And yet, things continue to work and continue to progress for the most part, so format wars aren’t necessarily as big a problem as we like to think.
No <video> type formats are supported and being able to add an animated gif showing what you're creating a pull request for is immensely useful.
<video src="example.av1">
and, in addition, for as many people as possible to support opening of av1s as they do with gifs.
- looping is solved and convenient to configure
- it can be cross media barriers (copied into a text, copied into an e-mail, etc.)
- it pleases the bandwidth gods (are gifs usually smaller? i know that they have a limited color palette)
That being said, #2 is critical. I often open Safari to get gifs to copy to iMessage because Chrome and Firefox don't properly copy gifs.
AV1 may be a way to make that more "standard" (big hand wave) but adoption is conditional upon this type of common man friendly portability.
Judging by most websites I comes across, this must be referring to some other universe.
I hate opening “gifs” that are actually videos and, for example, interrupt my currently playing music to playback silence.
fifteen ffmpeg commands
Yeah I don't think AV1 is the answer.
<video style="display:block; margin: 0 auto;" autoplay loop muted playsinline poster="RollingCredits.jpg">
<source src="media/RollingCredits.av1.mp4" type="video/mp4">
<source src="media/RollingCredits.vp9.webm" type="video/webm">
<source src="media/RollingCredits.x264.mp4" type="video/mp4">
<img src="media/RollingCredits.gif">
</video>H265 is getting there, but in the meantime you'd be killing a lot of batteries with software decoding.
This page claims 78% supported on iOS and 57% on Android as of last August: https://www.scientiamobile.com/growing-support-of-hevc-or-h-...
I've added a note to the article
I've added a note to the article
And that is what is working against something completely replacing it.
Animated GIFs are not really a video format, they are just a set of non-lossy compressed images shown at a timer interval. Such small details are hugely important when some media is used in a creative way.