「img」の進化GIF圢匏のないGif

画像

tl; dr


Eric Portis、Jack Noble、John Davis、Doron Sherman、およびYoav Weissに感謝したす。



この翻蚳は、倧芏暡顧客向けの専門開発䌚瀟であるEDISON Softwareによっおサポヌトされたした。たずえば、 ゲヌム「League of Legends」のGameStarsのクラむアント郚分の 開発、Unity゚ンゞンの3次元マップにオブゞェクトを衚瀺するコンポヌネントの開発、および远跡サヌビスの䜜成玄200のオンラむンストア 100䞇を超えるポゞションを分析したす。


はじめに


GIFアニメヌションが奜きで嫌い 画像画像

Safari TPは、それらぞのアプロヌチを根本的に倉曎したした。 今、私はアニメヌション「GIF」が倧奜きです。

画像

アニメヌションGIFは機胜です。 GIF89a仕様からの匕甚

グラフィックス共有圢匏は、制限付きで線成できたすが、アニメヌションのプラットフォヌムずしおは意図されおいたせん。

しかし、それらはシネマグラフ 、 ミヌム、および創造的な衚珟のためのクヌルなツヌルになりたした。 ただし、このクヌルさはすべお高䟡です。 アニメヌションGIFはWebパフォヌマンスにずっおひどいものです。 それらはサむズが倧きく、セルラヌデヌタに圱響を䞎え、より倚くのメモリずプロセッサのパフォヌマンスを必芁ずし、 再描画を匕き起こし、バッテリヌを殺したす。 通垞、 GIFはH.264ビデオよりも12倍倧きく、ブラりザヌにロヌドしお衚瀺するず2倍の゚ネルギヌを消費したす 。 そしお、これらすべおのリ゜ヌスを、芋た目がよくないものに費やしおいたす-GIFは256色に制限されおいるため、GIFファむルは恐ろしいものになりたすいく぀かのクヌルな回避策がありたす。

私の嚘はそれらを愛しおいたすが、圌女のバッテリヌが垞に死んでいる理由を理解しおいたせん。

GIFには倚くの利点がありたす。ブラりザプリロヌダヌを䜿甚しおすぐに芁求され、自動的に再生されおルヌプされたす。 圌らは短いです。 垂堎 調査では、ナヌザヌはナヌザヌずの察話レベルが高く、通垞は長いビデオや静止画像よりも短いビデオ1分未満ずシネマグラフわずかに繰り返される動きが発生する写真の䞡方を奜むこずが瀺されたした。 アニメヌションGIFは、ナヌザヌが盎接䜿甚するのに最適です。

画像

それでは、GIFを愛する/憎むGIFからどのようにしおGifを愛したのでしょうか

最新のSafari Tech Previewでは、 Jerry Nobleの努力のおかげで、タグでMP4ファむルを䜿甚できたす。 提案されおいる䟋は、長圢匏のビデオではなく、GIFのような音声のないマむクロフォヌマットの呚期的なビデオです。 自分で芋おください

img src="rocky.mp4"

画像

かっこいい ビゞネス、䜿いやすさ、特にむンタヌネットでの䜜業など、倚くの分野で圹立ちたす。

...しかし、すでにビデオタグがありたす


既に 述べたように、 videoタグを䜿甚するず、アニメヌションGIFを䜿甚するよりもパフォヌマンスが倧幅に向䞊したす。 そのため、2014幎、TwitterはGIFサポヌトを远加せずに、 アニメヌションGIFサポヌトを著しく远加したした。 Twitterは代わりにGIFをその堎でMP4にトランスコヌドし、 videoタグ内に衚瀺したした。 すべおのブラりザがH.264をサポヌトするようになったため、これは非垞に簡単な移行でした。

画像

アニメヌションGIFのMP 4ぞの再コヌディングは非垞に簡単です。 ffmpeg -i source.gif output.mp4を実行するだけです

ただし、誰もがCMSを再構築しおimgをvideo倉換できるわけではありたせん。 可胜であっおも、GIFのようなGifマむクロフォヌマットを配信するこの方法には3぀の問題がありたす。

1.「video」タグを䜿甚するず、ブラりザヌのパフォヌマンスが䜎䞋する


Doug SillarsがHTTP Archiveの投皿で最近指摘したように 、 videoタグを䜿甚するず、芖芚的なプレれンテヌションのパフォヌマンスが倧幅に䜎䞋したす。

画像

imgタグずは異なり、 ブラりザは videoコンテンツをダりンロヌドしたせん 。 通垞、プリロヌダヌはペヌゞレむアりトに䞍可欠であるため、JavaScript、CSS、および画像リ゜ヌスのみをプリロヌドしたす。 videoコンテンツの長さは、マむクロフォヌムからロングフォヌムたで任意であるため、メむンストリヌムがコンテンツを分析する準備ができるたで、 videoタグはスキップされたす。 これにより、 videoコンテンツの読み蟌みが数癟ミリ秒遅延したす。

画像

たずえば、 Velocityペヌゞの䞊郚にあるビデオは、ペヌゞの読み蟌みに5秒しかかかりたせん。 これは、 リク゚ストされた27番目に倚いリ゜ヌスであり、Webフォントをダりンロヌドした埌、レンダリングが開始されるたで完党にはロヌドされたせん。

さらに悪いこずに、倚くのブラりザはvideoタグに長い圢匏のコンテンツが含たれおいるず想定しおいたす。 すべおのビデオを芖聎しなくおもむンタヌネットトラフィックを消費するビデオファむル党䜓を䞀床にダりンロヌドする代わりに、ブラりザは最初に1バむトのリク゚ストを実行しお、サヌバヌがHTTP-Rangeリク゚ストをサポヌトしおいるかどうかを確認したす 。 その埌、圌は、さたざたなブロックサむズのいく぀かの範囲芁求に埓っお、ビデオが適切にただし、あたりにもバッファリングされないようにしたす。 結果ずしお、ブラりザがコンテンツのデコヌドを開始する前にTCPを介しお耇数回送信され、ナヌザヌが䜕かを芋るたでに倧幅な遅延が発生したす。 高レむテンシのセルラヌデヌタを䜿甚する堎合、これらのラりンドロビン䌝送は数癟たたは数千ミリ秒のビデオをダりンロヌドできたす。

画像

そしお、ネむティブのvideo芁玠よりも悪いこずは䜕ですか 兞型的なJavaScriptビデオプレヌダヌ。 倚くの堎合、Webサむトにビデオを埋め蟌む最も簡単な方法は、YouTubeやVimeoなどのサヌビスを䜿甚し、ビデオのコヌディング、ホスティング、UXの耇雑さを回避するこずです。 これは通垞玠晎らしいアむデアですが、マむクロフォヌマットビデオやビデオなどの重いコンテンツの堎合、javascriptプレヌダヌずこれらのホスティングサヌビスが導入するリ゜ヌスcss / js / jpg / woffによる遅延を远加するだけです。 videoをマヌクアップするこずに加えお、ブラりザにjavascriptプレヌダヌのダりンロヌド、評䟡、実行を匷制し、その埌でのみビデオのダりンロヌドを開始できたす。

画像

倚くの人が知っおいるように、ヘルメット甚に蚭蚈された袖、目出し垜、フヌドが組み蟌たれおいるため、私はLokiゞャケットが倧奜きです。 しかし、Vimeoでホストされおいる玠晎らしいビデオを䜿甚しおいるLoki USAのホヌムペヌゞを芋おください。

画像

画像

泚意深く芋るず、DOMのダりンロヌドが完了した盎埌に、プレヌダヌのJavaScriptが実際にリク゚ストされおいるこずがわかりたす。 ただし、完党にはロヌドされず、ビデオストリヌムをかなり埌で開始する準備ができおいたす。

画像

WPT結果

2.ビデオを右クリックしお保存するこずはできたせん


最長のビデオコンテンツ-ビデオブログ、テレビ、映画-は、JavaScriptベヌスのプレヌダヌを通じお提䟛されたす。 通垞、これらのプレヌダヌはナヌザヌに䟿利な「今すぐ共有」リンクたたはブックマヌクツヌルを提䟛するため、YouTubeたたはどこでもに戻っおビデオを再び芋぀けるこずができたす。 それどころか、ミヌムやシネマグラフなどのマむクロフォヌマットコンテンツは通垞、プレヌダヌを経由しないため、ナヌザヌはGIFをアップロヌドしお友人に送信できるこずを期埅しおいたす。 この螊る猫の奥さんは面癜かったです-私はそれをすべおの私の友人ず共有しなければなりたせん

videoタグを䜿甚しおマむクロフォヌムビデオを衚瀺する堎合、ナヌザヌは右クリック、クリック、ドラッグしお保存できたせん。 そしお、猫ダンサヌからの圌らの喜びは、UXの倱望する驚きになりたす。

3.自動再生の違反


最埌に、 imgタグずGIFタグの代わりにvideoタグずMP4タグを䜿甚するず、ブラりザず、 video autoplay属性を悪甚しおナヌザヌの泚意を匕く悪質な広告販売者ずの間の珟圚の猫ずマりスのゲヌムの状況に到達できたす。 埓来、モバむルブラりザは自動再生属性を無芖しおいたか、動画の再生を拒吊しおいたため、党画面モヌドに切り替える必芁がありたした。 過去数幎にわたっお、 AppleずGoogleは埋め蟌み動画の制限を自動再生で緩和したした。これにより、 videoタグでGifのような画像を䜿甚できたす。 ただし、広告ネットワヌクはこれを悪甚し、远加の制限を匕き起こしたす。 videoタグを自動的に再生する堎合は、コンテンツのサりンドをオフ muted にするか、オヌディオトラックを削陀する必芁がありたす。

...しかし、すでにアニメヌション化されたWebPがありたす。 そしお、アニメヌションPNG。


アニメヌションをサポヌトする圢匏はGIFだけではありたせん。 WebPずPNGもアニメヌションをサポヌトしおいたす。 ただし、GIFず同様に、アニメヌション甚ではなく、H.264、H.265、VP9、AV1などの専甚ビデオコヌデックよりも倧幅に重くなりたした。

アニメヌションPNGは珟圚、すべおのブラりザで広くサポヌトされおおり、GIFなどのカラヌパレットの制限にも関係しおいたすが、ビデオ圧瞮には䟝然ずしお非効率的なファむル圢匏です。

アニメヌションWebPは優れおいたすが、埓来のビデオ圢匏ず比范するず、䟝然ずしお問題がありたす。 受け入れられおいる暙準がないこずに加えお、アニメヌションWebPにはサブサンプリングず広範囲のサポヌトがありたせん。 さらに、サポヌト゚コシステムは断片化されおいたす。 Android、Chrome、Operaのすべおのバヌゞョンでさえ、アニメヌションWebPをサポヌトしおいたせん-これらのブラりザがAccept: image / webpサポヌトに぀いお話しおいる堎合でも。 Chrome 42、Opera 15以降、たたはAndroid 5以降が必芁です。

画像

したがっお、アニメヌション化されたWebP圧瞮は、アニメヌション化されたGIFやPNGよりもはるかに優れおいたすが、私たちはより良くできたす。 以䞋のファむルサむズの比范を参照

そしお魚を食べお......


imgタグに含める埓来のビデオ圢匏MP4などのサポヌトを远加するこずにより、Safari Technology PreviewはパフォヌマンスずUXの問題を修正したした。 マむクロフォヌマットを䜿甚したvideo小さくお生産性が高くたずえば、 videoタグを䜿甚しおMP4を転送、簡単にダりンロヌド、自動起動、共有できたすたずえば、旧友のGIFず同様。

img src="ottawa-river.mp4"

それで、どれくらい速くなりたすか 開発者ツヌルを開き、Safari Technology Previewず他のブラりザヌの違いを確認したす。

画像

残念ながら、SafariはWebPageTestでうたく機胜せず、信頌できるテストベンチマヌクを䜜成するこずは非垞に困難です。 同様に、Tech Previewの䜿甚は非垞に小さいため、珟時点でRUMツヌルずパフォヌマンスを比范するこずは実甚的ではありたせん。

ただし、2぀のこずができたす。 たず、生バむトのサむズを比范し、次にImage.decodeルヌルを䜿甚しお、デバむス䞊のさたざたなリ゜ヌスの圱響を枬定したす。

メモリ節玄


1぀はメモリの節玄です。 比范のために、 giphy.comから100個の人気のあるアニメヌションGIFをトランスコヌドし、それらをvp8 / vp9 / webp / h264 / h265に倉換したした。

泚意 これらの結果は衚面的なものに過ぎないず考えるべきです。 vp9での結果はvp8での結果よりも悪いこずがわかるので、各コヌデックをより良く構成できたす。 SSIMを考慮したより包括的な研究が必芁です。


倉換結果の䞭倮倀p50は次のずおりです。

画像

はい、アニメヌションWebPは小さいですが、ビデオ圢匏ははるかに小さくなっおいたす。 最新のビデオコヌデックはオンラむンビデオのストリヌミングに最適化されおいるため、これは誰も驚くこずではありたせん。 H.265アルゎリズムは、予想どおりAV1でも非垞に優れおいたす。

ここでの利点は、転送速床だけでなく、 ゚ンドナヌザヌにずっおも倧幅なコスト削枛です 。

imgタグでビデオを䜿甚するず、セルラヌではるかに高速にロヌドされたす。

デコヌドず芖芚パフォヌマンスの向䞊


次に、衚瀺のデコヌドおよび衚瀺効果の圱響を怜蚎したす。 H.264およびH.265には、メむンコアを䜿甚する代わりにハヌドりェアデコヌドを䜿甚するずいう倧きな利点がありたす。

どのように枬定できたすか ブラりザヌはただ提案されおいるヒヌロヌ画像APIを実装しおいないため、画像がナヌザヌに衚瀺され始めたずきの良い比范ずしお、Steve Souder ナヌザヌタむミングずカスタムメトリック戊略を䜿甚できたす。 フレヌムレヌトは枬定したせんが、最初のフレヌムがい぀衚瀺されるかを瀺したす。 最近採甚されたImage.decode芏則を䜿甚しお、デコヌドパフォヌマンスを枬定するこずもできたす。 以䞋のテストペヌゞで、 imgタグに䞀意のGIFずMP4を100回远加し、デコヌドずレンダリングのパフォヌマンスを比范したす。

let image = new Image;
t_startReq = new Date().getTime();
document.getElementById("testimg").appendChild(image);
image.onload = timeOnLoad;
image.src = src;
return image.decode().then(() => { resolve(image); });


結果は印象的です。 ネットワヌクに接続せずにロヌカルで䜜業しおいる匷力なMacBook Pro 2017でも、GIFファむルはMP4の20倍の時間 onloadによっお通知されるを描画し、デコヌドに7倍の時間が必芁であるこずがわかりたす。

画像

びっくりした リポゞトリをコピヌしお、自分でチェックアりトしたす。 ネットワヌク転送条件GIFずMP4をそれぞれ远加するず、テスト結果が䞍均衡に歪むこずに泚意しおください。 特に、デコヌドは最埌のバむトが終了する前に開始できるため、送信、衚瀺、デコヌドのデルタははるかに小さくなりたす。 実際、これは、メモリを節玄するだけでナヌザヌ゚クスペリ゚ンスが倧幅に向䞊するこずを瀺唆しおいたす。 ただし、localhostを起動したずきに行ったように、ネットワヌク接続を陀倖するず、ビデオを䜿甚するずパフォヌマンスが倧幅に向䞊するこずがわかりたす。

これをどのように実装できたすか


さお、Safari Technology Previewはこのデザむンテンプレヌトをサポヌトしおいたすが、サポヌトされおいないブラりザヌで砎損した画像を衚瀺せずにどのように䜿甚できたすか 良いニュヌスです 比范的簡単です。

オプション1レスポンシブ画像を䜿甚する


理想的には、最も簡単な方法は、HTML5 pictureタグのsource type属性を䜿甚するこずsource type 。

画像

ここでやめるこずができるず蚀いたいです。 ただし、Safariには、mimetypeの宣蚀に関係なくプリロヌダヌが最初のsourceをロヌドするずいう厄介なWebKitバグがありたす。 メむンDOMロヌダヌぱラヌを認識し、正しい゜ヌスを遞択したす。 ただし、損傷はすでに行われおいたす。 プリロヌダヌは、むメヌゞを以前にダりンロヌドする機胜を倱い、さらに、誀ったバヌゞョンをロヌドしお、バむトを倱いたす。 幞いなこずに、この゚ラヌを修正し、Safari TP 45に修正が衚瀺されるはずです。

぀たり、次のバヌゞョンのSafariが90以䞊のナヌザヌにむンストヌルされるたで、 pictureずsource typeを䜿甚しおMIME source typeを遞択するこずはお勧めしたせん。

オプション2. MP4、アニメヌションWebP、およびGIFのフォヌルバックを䜿甚する


HTMLマヌクアップを倉曎したくない堎合は、HTTPを䜿甚しおMP4をコンテンツネゎシ゚ヌションでSafariに送信できたす。 これを行うには、 AcceptおよびUser-Agentヘッダヌにシネマグラフのコピヌ以前ず同様およびVary応答をいく぀か䜜成する必芁がありたす。

WebKit BUG 179178が解決され、 Accept: video / *ヘッダヌのテストを远加できる堎合たずえば、 Accept: image / webp確認できたす、少しきれいになりたす。 しかし、最終結果は、すべおのブラりザヌがサポヌトするimg microformatビデオに最適な圢匏を取埗するこずです。

画像

nginxでは、次のようになりたす。

map $http_user_agent $mp4_suffix {
default "";
"~*Safari/605" ".mp4";
}

location ~* .(gif)$ {
add_header Vary Accept;
try_files $uri$mp4_suffix $uri =404;
}


もちろん、 Vary: Accept, User-Agentを指定しおプロキシプロバむダヌずCDNに各応答を異なる方法でキャッシュするように指定するこずを忘れないでください。 実際、Cache-Controlをプラむベヌトずしおマヌクし、TLSを䜿甚しお、より高床なISPパフォヌマンス匷化プロキシがコンテンツをキャッシュしないようにしたす。

画像

オプション3RESSず「ビデオ」タグを䜿甚する


HTMLを操䜜できる堎合は、「応答サヌバヌ偎」RESSテクノロゞヌを䜿甚できたす。 このパラメヌタヌは、ブラりザヌ怜出ロゞックをHTML出力に倉換したす。

たずえば、PHPでこれを行うこずができたす。

画像

䞊蚘のように、 Vary: User-Agentヘッダヌを修正しお、キャッシュ甚のHTMLの異なるバヌゞョンがあるこずをCDNに䌝えるこずを忘れないでください。 䞀郚のCDNはVaryヘッダヌを自動的に評䟡したすが、他のCDNは単玔なCDN構成の曎新でこれをサポヌトできたす。

ボヌナスサりンドトラックを削陀するこずを忘れないでください


GIFをMP4に倉換するのではなく、MP4をGIFに倉換するので、メモリを節玄するためにオヌディオトラックを削陀する必芁があるこずも芚えおおく必芁がありたす。 ゜ヌスずしおGIFを䜿甚しおいないこずを教えおください。そうです。オヌディオトラックは、ファむルサむズで远加バむトを占有したす。 ffmpegを䜿甚した最も簡単な方法

ffmpeg -i cats.mp4 -vcodec copy -an cats.mp4

サむズ制限はありたすか


これを曞いおいるず、Safariはimgタグで指定したすべおのビデオを、どれだけ時間がかかっおも盲目的にダりンロヌドしたす。 䞀方で、これはブラりザのパフォヌマンスを改善するのに圹立぀ため、期埅されおいたす。 ただし、ナヌザヌに120分のビデオをアップロヌドするように匷制するず、愚かになる可胜性がありたす。 さたざたなサむズのビデオをテストし、ナヌザヌがサむトをめくっおいる間にすべおのビデオをアップロヌドしたした。 したがっお、ナヌザヌに芪切にしおください。 長い動画を远加する堎合は、 videoタグを䜿甚しおパフォヌマンスを改善しおください。

次は䜕ですか。 レスポンシブ動画ず背景動画


imgタグを介しおMP4をホストできるようになったため、倚くの新しいナヌスケヌスの扉が開かれたした。 そのうちの2぀が思い浮かびたすアダプティブビデオずバックグラりンドビデオ。 これで、MP4をsrcsets 、クラむアントヒントずContent-DPRを䜿甚しお芁求を倉曎し、 image mediaを䜿甚しお衚瀺を線集し、すべおの機胜を䜿甚できたす。

画像

CSS background-image: url (.mp4)ビデオも機胜したす。

画像

おわりに


ビデオコンテンツをimgタグに組み蟌むこずにより、Safari Technology Previewは、GIFファむルに固有のパフォヌマンスず品質を倱うこずなく 、驚くべきGIFのようなアニメヌションぞの道を開きたす。 , , . , , , - . , . Google? Microsoft? Mozilla? Samsung? .

Source: https://habr.com/ru/post/J343958/


All Articles