Formats
Formats pris en charge et bibliothèques de lecture
Choisissez votre plateforme sous chaque format — les noms de bibliothèques renvoient aux dépôts officiels.
SVGA
.svgaUn format d'animation compact exporté directement depuis After Effects, largement utilisé pour les cadeaux de streaming en direct. Se lit avec accélération matérielle grâce à la famille SVGAPlayer.
val parser = SVGAParser(context)
parser.decodeFromURL(URL(itemUrl)) { videoItem ->
svgaImageView.setVideoItem(videoItem)
svgaImageView.startAnimation()
}
let player = SVGAPlayer(frame: view.bounds)
SVGAParser().parse(with: URL(string: itemUrl)!) { entity in
player.videoItem = entity
player.startAnimation()
}
import SVGA from "svgaplayerweb";
const player = new SVGA.Player("#canvas");
new SVGA.Parser().load(itemUrl, (videoItem) => {
player.setVideoItem(videoItem);
player.startAnimation();
});
SVGASimpleImage(resUrl: itemUrl);
WebP
.webpDes images WebP animées avec transparence alpha complète dans un seul petit fichier. Prises en charge nativement sur la plupart des plateformes — peu ou pas de runtime supplémentaire nécessaire.
// Animated WebP plays out of the box
Glide.with(context).load(itemUrl).into(imageView)
SDImageCodersManager.shared.addCoder(SDImageWebPCoder.shared)
imageView.sd_setImage(with: URL(string: itemUrl))
<!-- Animated WebP is supported natively -->
<img src="item.webp" alt="" />
// Animated WebP is supported natively
Image.network(itemUrl);
VAP
.mp4Le format Video Animation Player de Tencent : un MP4 portant une piste de couleur, une piste alpha et une boîte de configuration vapc, pour un compositing au pixel près d'effets de cadeaux riches.
// AnimView from the VAP SDK
animView.setLoop(1)
animView.startPlay(File(itemPath))
// QGVAPWrapView from the VAP SDK
[wrapView playHWDMP4:itemPath repeatCount:0 delegate:self];
import Vap from "video-animation-player";
new Vap({ container, src: itemUrl, config: vapcJson }).play();
VapView();
await VapController.playPath(itemPath);
MP4 Alpha
.mp4Un MP4 classique dont l'image contient la moitié couleur à côté d'une moitié alpha en niveaux de gris. Votre lecteur échantillonne les deux moitiés et compose une animation entièrement transparente.
// Side-by-side color/alpha video
alphaMovieView.setVideoFromUrl(itemUrl)
alphaMovieView.start()
BDAlphaPlayerMetalConfiguration *config =
[BDAlphaPlayerMetalConfiguration defaultConfiguration];
config.directory = itemDirectory;
[self.playerView playWithMetalConfiguration:config];
// Upload each <video> frame as a texture, then in the
// fragment shader: rgb from the color half x alpha from
// the alpha half -> draw on a transparent canvas.
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA,
gl.UNSIGNED_BYTE, video);
// Play the mp4, sample color/alpha halves in a
// custom FragmentShader and paint the composited frame.
final controller = VideoPlayerController.networkUrl(Uri.parse(itemUrl));
await controller.initialize();
controller.play();
PAG
.pagLe format PAG (Portable Animated Graphics) de Tencent : des animations After Effects dans un minuscule fichier binaire, rendues par le runtime multiplateforme libpag (WASM sur le web).
val pagView = PAGView(context)
pagView.composition = PAGFile.Load(itemPath)
pagView.setRepeatCount(0)
pagView.play()
let pagView = PAGView()
pagView.setComposition(PAGFile.load(itemPath))
pagView.setRepeatCount(0)
pagView.play()
import { PAGInit } from "libpag";
const PAG = await PAGInit();
const file = await PAG.PAGFile.load(buffer);
const view = await PAG.PAGView.init(file, canvas);
view.setRepeatCount(0);
await view.play();
PAGView.network(
itemUrl,
repeatCount: PAGView.REPEAT_COUNT_LOOP,
autoPlay: true,
);
Lottie
.json / .lottieLottie d'Airbnb : des animations After Effects exportées en JSON (ou un bundle dotLottie .lottie) et rendues nativement sur toutes les plateformes.
lottieView.setAnimationFromUrl(itemUrl)
lottieView.repeatCount = LottieDrawable.INFINITE
lottieView.playAnimation()
let view = LottieAnimationView(url: URL(string: itemUrl)!) { _ in }
view.loopMode = .loop
view.play()
import lottie from "lottie-web";
lottie.loadAnimation({
container,
path: itemUrl,
renderer: "svg",
loop: true,
autoplay: true,
});
APNG
.pngAnimated PNG — le format PNG standard doté d'un chunk de contrôle d'animation, conservant une qualité sans perte et un alpha complet. Les fichiers PNG statiques sont refusés par la marketplace.
val drawable = APNGDrawable.fromFile(itemPath)
imageView.setImageDrawable(drawable)
// APNG plays out of the box
imageView.sd_setImage(with: URL(string: itemUrl))
<!-- APNG is supported natively -->
<img src="item.png" alt="" />
// APNG is supported natively
Image.network(itemUrl);