{"id":4875,"date":"2026-01-06T16:16:58","date_gmt":"2026-01-06T08:16:58","guid":{"rendered":"https:\/\/imastudio.com\/?p=4875"},"modified":"2026-01-06T16:17:31","modified_gmt":"2026-01-06T08:17:31","slug":"mp4-to-webp-macos-ffmpeg-script","status":"publish","type":"post","link":"https:\/\/imastudio.com\/fr\/blog\/mp4-to-webp-macos-ffmpeg-script","title":{"rendered":"Script macOS en un clic pour convertir des fichiers MP4 en animations en boucle de type GIF WebP"},"content":{"rendered":"<p class=\"wp-block-paragraph\">Pour le d\u00e9veloppement d&#039;applications et de projets clients, j&#039;ai souvent besoin de <strong>visualiser rapidement le contenu vid\u00e9o<\/strong>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>pr\u00e9visualiser les animations pour les chefs de produit<\/li>\n\n\n\n<li>extraits de d\u00e9monstration pour la documentation ou les PRD<\/li>\n\n\n\n<li>Animations l\u00e9g\u00e8res pour les publications sur les r\u00e9seaux sociaux ou les pages de destination<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Dans ces cas, <strong>extraire quelques images cl\u00e9s d&#039;un fichier MP4 et les transformer en une animation WebP en boucle<\/strong> Cela suffit g\u00e9n\u00e9ralement, et c&#039;est beaucoup plus l\u00e9ger que de t\u00e9l\u00e9charger une vid\u00e9o compl\u00e8te.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img fetchpriority=\"high\" decoding=\"async\" width=\"800\" height=\"533\" src=\"https:\/\/imastudio.com\/wp-content\/uploads\/2026\/01\/mac-os-video-to-webp-gif.jpg\" alt=\"\" class=\"wp-image-4877\" srcset=\"https:\/\/imastudio.com\/wp-content\/uploads\/2026\/01\/mac-os-video-to-webp-gif.jpg 800w, https:\/\/imastudio.com\/wp-content\/uploads\/2026\/01\/mac-os-video-to-webp-gif-300x200.jpg 300w, https:\/\/imastudio.com\/wp-content\/uploads\/2026\/01\/mac-os-video-to-webp-gif-768x512.jpg 768w, https:\/\/imastudio.com\/wp-content\/uploads\/2026\/01\/mac-os-video-to-webp-gif-18x12.jpg 18w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Cet article partage un <strong>Script shell en un clic pour macOS<\/strong> que:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>extrait 6 \u00e0 12 images r\u00e9guli\u00e8rement espac\u00e9es d&#039;un fichier MP4<\/li>\n\n\n\n<li>les redimensionne \u00e0 une largeur de 720 px<\/li>\n\n\n\n<li>cr\u00e9e une animation WebP en boucle<\/li>\n\n\n\n<li>et s&#039;installe automatiquement <code>ffmpeg<\/code> s&#039;il manque<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Tout cela s&#039;ex\u00e9cute \u00e0 partir d&#039;une seule commande dans le Terminal.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">1. Ce que fait le script<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Sur macOS, le script <code>extraire_les_images_pairs_webp.sh<\/code> fournit :<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Automatique <code>ffmpeg<\/code> d\u00e9tection et installation<\/strong>\n<ul class=\"wp-block-list\">\n<li>V\u00e9rifie si <code>ffmpeg<\/code> est disponible<\/li>\n\n\n\n<li>Sinon, installe Homebrew (si n\u00e9cessaire) puis installe <code>ffmpeg<\/code><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Extraction de trames m\u00eame<\/strong>\n<ul class=\"wp-block-list\">\n<li>Calcule la dur\u00e9e de la vid\u00e9o<\/li>\n\n\n\n<li>\u00c9chantillons uniformes <strong>6 \u00e0 12 images<\/strong> sur l&#039;ensemble du clip<\/li>\n\n\n\n<li>La valeur par d\u00e9faut est de 6 images, mais vous pouvez personnaliser ce nombre.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>g\u00e9n\u00e9ration d&#039;animations WebP<\/strong>\n<ul class=\"wp-block-list\">\n<li>Combine les images PNG extraites en un <strong>WebP en boucle<\/strong><\/li>\n\n\n\n<li>La largeur de sortie est <strong>720px<\/strong> par d\u00e9faut (la hauteur est proportionnelle)<\/li>\n\n\n\n<li>La qualit\u00e9 est ajustable via <code>-q:v<\/code><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Nettoyage automatique<\/strong>\n<ul class=\"wp-block-list\">\n<li>Stocke les trames interm\u00e9diaires dans un r\u00e9pertoire temporaire<\/li>\n\n\n\n<li>Supprime le r\u00e9pertoire temporaire apr\u00e8s la g\u00e9n\u00e9ration du fichier WebP<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Fonctionne avec les vid\u00e9os courtes et longues<\/strong>\n<ul class=\"wp-block-list\">\n<li>Si la vid\u00e9o est tr\u00e8s courte, le nombre d&#039;images est automatiquement r\u00e9duit.<\/li>\n\n\n\n<li>Pour les vid\u00e9os plus longues, les images sont toujours espac\u00e9es uniform\u00e9ment sur toute la dur\u00e9e.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">2. Son fonctionnement interne<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Voici la logique de base du script.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2.1 V\u00e9rifier les d\u00e9pendances<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Le script v\u00e9rifie d&#039;abord si <code>ffmpeg<\/code> est install\u00e9 :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Utilisations <code>commande -v ffmpeg<\/code><\/li>\n\n\n\n<li>S&#039;il n&#039;est pas trouv\u00e9, il v\u00e9rifie si <code>brasser<\/code>\n<ul class=\"wp-block-list\">\n<li>Si Homebrew est absent, il installe Homebrew<\/li>\n\n\n\n<li>Ensuite, utilise <code>brew installer ffmpeg<\/code> installer <code>ffmpeg<\/code><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">2.2 R\u00e9cup\u00e9rer la dur\u00e9e de la vid\u00e9o<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">En utilisant <code>sonde ff<\/code>, le script lit le <strong>dur\u00e9e totale de la vid\u00e9o en secondes<\/strong>.<br>En se basant sur ces donn\u00e9es et sur le nombre d&#039;images souhait\u00e9, il calcule l&#039;intervalle de temps entre les images.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2.3 \u00c9chantillonnage uniforme des images<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Pour chaque index d&#039;image, il\u00a0:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Calcule l&#039;horodatage = <code>index \u00d7 intervalle<\/code><\/li>\n\n\n\n<li>Utilisations <code>ffmpeg -ss<\/code> pour passer \u00e0 cette position temporelle<\/li>\n\n\n\n<li>Extrait exactement une image<\/li>\n\n\n\n<li>Il le met \u00e0 l&#039;\u00e9chelle avec <code>\u00e9chelle=720:-1<\/code> La largeur est donc de 720 px et la hauteur est proportionnelle.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">2.4 Cr\u00e9er l&#039;animation WebP<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Une fois toutes les images enregistr\u00e9es au format PNG, le script appelle <code>ffmpeg<\/code> \u00e0 nouveau \u00e0 :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Lisez-les dans l&#039;ordre (<code>%03d.png<\/code>)<\/li>\n\n\n\n<li>Encodez-les en tant que WebP anim\u00e9<\/li>\n\n\n\n<li>Ensemble <code>-boucle 0<\/code> L&#039;animation se r\u00e9p\u00e8te donc ind\u00e9finiment.<\/li>\n\n\n\n<li>Contr\u00f4ler la qualit\u00e9 avec <code>-q:v 70<\/code> (plus bas = meilleure qualit\u00e9, fichier plus volumineux)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">2.5 Nettoyage<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Tous les fichiers PNG interm\u00e9diaires sont stock\u00e9s dans un r\u00e9pertoire temporaire cr\u00e9\u00e9 par <code>mktemp -d<\/code>.<br>Une fois le fichier WebP g\u00e9n\u00e9r\u00e9, ce r\u00e9pertoire est supprim\u00e9 avec <code>rm -rf<\/code>.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">3. Script shell complet\u00a0: extract_even_frames_webp.sh<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Vous pouvez enregistrer le script suivant sous <code>extraire_les_images_pairs_webp.sh<\/code> sur votre Mac\u00a0:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#!\/bin\/bash\n\n# Usage: .\/extract_even_frames_webp.sh input.mp4 output.webp &#91;frames]\n# frames is optional, default 6, maximum 12\n\nINPUT=\"$1\"\nOUTPUT=\"$2\"\nFRAMES=\"${3:-6}\"\n\n# Cap maximum frames at 12\nif &#91; \"$FRAMES\" -gt 12 ]; then\n    FRAMES=12\nfi\n\nif &#91; -z \"$INPUT\" ] || &#91; -z \"$OUTPUT\" ]; then\n    echo \"Usage: $0 input.mp4 output.webp &#91;frames]\"\n    exit 1\nfi\n\n# ---------------------------------\n# 1\ufe0f\u20e3 Check ffmpeg\n# ---------------------------------\nif ! command -v ffmpeg &gt;\/dev\/null 2&gt;&amp;1; then\n    echo \"\u26a0\ufe0f ffmpeg not found, starting installation...\"\n    if ! command -v brew &gt;\/dev\/null 2&gt;&amp;1; then\n        echo \"\u26a0\ufe0f Homebrew not found, installing Homebrew...\"\n        \/bin\/bash -c \"$(curl -fsSL https:\/\/raw.githubusercontent.com\/Homebrew\/install\/HEAD\/install.sh)\"\n        echo \"\u2705 Homebrew installed\"\n    else\n        echo \"\u2705 Homebrew already installed\"\n    fi\n    brew update\n    brew install ffmpeg\n    if ! command -v ffmpeg &gt;\/dev\/null 2&gt;&amp;1; then\n        echo \"\u274c ffmpeg installation failed, please check manually\"\n        exit 1\n    fi\n    echo \"\ud83c\udf89 ffmpeg installed successfully!\"\nelse\n    echo \"\u2705 ffmpeg is already installed\"\nfi\n\n# ---------------------------------\n# 2\ufe0f\u20e3 Get video duration\n# ---------------------------------\nDURATION=$(ffprobe -v error -show_entries format=duration -of csv=p=0 \"$INPUT\")\nif &#91;&#91; -z \"$DURATION\" ]]; then\n    echo \"\u274c Failed to get video duration\"\n    exit 1\nfi\nDURATION=${DURATION%.*}  # integer seconds\n\n# If video is shorter than requested frames, match frame count to duration\nif &#91; \"$DURATION\" -lt \"$FRAMES\" ]; then\n    FRAMES=$DURATION\nfi\n\necho \"\ud83d\udcf9 Video length: ${DURATION}s, extracting $FRAMES frames evenly\"\n\n# ---------------------------------\n# 3\ufe0f\u20e3 Create temporary directory\n# ---------------------------------\nTMPDIR=$(mktemp -d)\n\n# ---------------------------------\n# 4\ufe0f\u20e3 Calculate interval\n# ---------------------------------\nINTERVAL=$(echo \"scale=6; $DURATION\/$FRAMES\" | bc)\necho \"\u23f1 Frame interval: $INTERVAL seconds\"\n\n# ---------------------------------\n# 5\ufe0f\u20e3 Extract frames\n# ---------------------------------\nfor i in $(seq 0 $(($FRAMES-1))); do\n    TIME=$(echo \"$i * $INTERVAL\" | bc)\n    printf -v FILENAME \"%03d.png\" $((i+1))\n    ffmpeg -ss \"$TIME\" -i \"$INPUT\" -frames:v 1 -vf \"scale=720:-1\" \\\n        \"$TMPDIR\/$FILENAME\" -hide_banner -loglevel error\ndone\n\n# ---------------------------------\n# 6\ufe0f\u20e3 Generate animated WebP\n# ---------------------------------\nffmpeg -y -i \"$TMPDIR\/%03d.png\" -vcodec libwebp -lossless 0 -q:v 70 \\\n    -loop 0 -preset picture \"$OUTPUT\" -hide_banner -loglevel error\n\n# ---------------------------------\n# 7\ufe0f\u20e3 Clean up\n# ---------------------------------\nrm -rf \"$TMPDIR\"\n\necho \"\ud83c\udf89 Done! Generated file: $OUTPUT\"\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">4. Comment utiliser le script sur macOS<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Enregistrer le script<\/strong> Enregistrez le contenu ci-dessus sous <code>extraire_les_images_pairs_webp.sh<\/code>, par exemple dans votre r\u00e9pertoire personnel.<\/li>\n\n\n\n<li><strong>Accordez-lui l&#039;autorisation d&#039;ex\u00e9cution<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>chmod +x extract_even_frames_webp.sh\n<\/code><\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li><strong>Utilisation de base<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>.\/extract_even_frames_webp.sh input.mp4 output.webp\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Cela permettra de :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>V\u00e9rifier ou installer <code>ffmpeg<\/code><\/li>\n\n\n\n<li>Extraire 6 cadres r\u00e9guli\u00e8rement espac\u00e9s<\/li>\n\n\n\n<li>G\u00e9n\u00e9rer <code>output.webp<\/code> \u00e0 une largeur de 720 px<\/li>\n<\/ul>\n\n\n\n<ol start=\"4\" class=\"wp-block-list\">\n<li><strong>Sp\u00e9cifiez le nombre d&#039;images (6\u201312)<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>.\/extract_even_frames_webp.sh input.mp4 output.webp 8\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Cela extraira 8 images au lieu des 6 par d\u00e9faut.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">5. Pourquoi ce flux de travail est utile<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Compar\u00e9 \u00e0 l&#039;ouverture manuelle d&#039;un \u00e9diteur vid\u00e9o ou \u00e0 la navigation dans un convertisseur graphique, ce script pr\u00e9sente quelques avantages\u00a0:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Aucune configuration manuelle<\/strong>\n<ul class=\"wp-block-list\">\n<li>Installation automatique <code>ffmpeg<\/code> (et brasser soi-m\u00eame si n\u00e9cessaire)<\/li>\n\n\n\n<li>Plus besoin de chercher des installateurs ni de se souvenir des commandes.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\u00c9chantillonnage intelligent des images<\/strong>\n<ul class=\"wp-block-list\">\n<li>Pour les clips courts, le nombre d&#039;images est automatiquement r\u00e9duit.<\/li>\n\n\n\n<li>Pour les vid\u00e9os plus longues, les images sont toujours espac\u00e9es uniform\u00e9ment sur toute la dur\u00e9e.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Contr\u00f4le de la qualit\u00e9 et de la taille<\/strong>\n<ul class=\"wp-block-list\">\n<li><code>-q:v<\/code> permet d&#039;ajuster la qualit\u00e9 WebP en fonction de la taille du fichier<\/li>\n\n\n\n<li><code>\u00e9chelle=720:-1<\/code> offre une largeur adapt\u00e9e au web et un rapport hauteur\/largeur constant<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Boucle par d\u00e9faut<\/strong>\n<ul class=\"wp-block-list\">\n<li><code>-boucle 0<\/code> fait boucler l&#039;animation WebP ind\u00e9finiment<\/li>\n\n\n\n<li>Id\u00e9al pour les aper\u00e7us, les d\u00e9mos et les animations subtiles sur les documents ou les sites web.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Utilisation propre du disque<\/strong>\n<ul class=\"wp-block-list\">\n<li>Les images PNG temporaires sont stock\u00e9es dans un dossier temporaire et supprim\u00e9es ensuite.<\/li>\n\n\n\n<li>Aucun fichier r\u00e9siduel ne s&#039;accumule au fil du temps.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">6. Exemple\u00a0: convertir un fichier MP4 de 20\u00a0secondes en aper\u00e7u WebP<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Imaginez que vous ayez un <strong>Vid\u00e9o de d\u00e9monstration de 20 secondes<\/strong> et courir :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>.\/extract_even_frames_webp.sh demo.mp4 demo-preview.webp 6\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Le script va\u00a0:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Calculez un intervalle d&#039;environ <strong>3,33 secondes<\/strong><\/li>\n\n\n\n<li>Extraire 6 images \u00e0 <code>0 s, 3,33 s, 6,66 s, 10 s, 13,33 s, 16,66 s<\/code><\/li>\n\n\n\n<li>Redimensionnez-les \u00e0 une largeur de 720 px<\/li>\n\n\n\n<li>Construire un <strong>WebP en boucle<\/strong> animation<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Vous pouvez ensuite d\u00e9poser ce fichier WebP dans\u00a0:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Documents produits ou documents Feishu \/ Notion en tant que <strong>aper\u00e7u l\u00e9ger<\/strong><\/li>\n\n\n\n<li>Publications sur les r\u00e9seaux sociaux ou pages de destination en tant que <strong>vignette anim\u00e9e \u00e0 lecture automatique<\/strong><\/li>\n\n\n\n<li>Pr\u00e9sentations PowerPoint et d\u00e9monstrations internes o\u00f9 une vid\u00e9o compl\u00e8te serait superflue.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">7. Id\u00e9es d&#039;extension<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Ce script est un point de d\u00e9part\u00a0; vous pouvez facilement l\u2019adapter \u00e0 votre propre flux de travail\u00a0:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Nombre d&#039;images dynamiques<\/strong>\n<ul class=\"wp-block-list\">\n<li>S\u00e9lection automatique entre 6 et 12 images en fonction de la dur\u00e9e de la vid\u00e9o<\/li>\n\n\n\n<li>Par exemple, davantage d&#039;images pour les clips plus longs afin de montrer plus d&#039;\u00e9tats.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Tailles personnalis\u00e9es<\/strong>\n<ul class=\"wp-block-list\">\n<li>Changement <code>\u00e9chelle=720:-1<\/code> \u00e0 la largeur que votre \u00e9quipe produit pr\u00e9f\u00e8re<\/li>\n\n\n\n<li>Ou exposer la largeur comme param\u00e8tre\u00a0: <code>.\/script.sh in.mp4 out.webp 8 1080<\/code><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Traitement par lots<\/strong>\n<ul class=\"wp-block-list\">\n<li>Int\u00e9grez ce script dans une autre boucle pour traiter tout. <code>.mp4<\/code> fichiers dans un dossier<\/li>\n\n\n\n<li>Utile lorsque vous exportez simultan\u00e9ment un lot de d\u00e9monstrations de fonctionnalit\u00e9s.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">Note de l&#039;auteur<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Ce script est issu de mon flux de travail de d\u00e9veloppement macOS r\u00e9el, qui consiste \u00e0 convertir des vid\u00e9os MP4 en aper\u00e7us WebP l\u00e9gers. Je l&#039;utilise quotidiennement pour g\u00e9n\u00e9rer des animations de d\u00e9monstration pour la documentation et les publications sur les r\u00e9seaux sociaux. GPT a uniquement servi \u00e0 traduire, structurer et peaufiner la version anglaise de cet article\u00a0; la logique du script, les d\u00e9tails d&#039;impl\u00e9mentation et les exemples d&#039;utilisation proviennent de mon exp\u00e9rience personnelle.<\/p>","protected":false},"excerpt":{"rendered":"<p>Pour le d\u00e9veloppement d&#039;applications et de projets clients, j&#039;ai souvent besoin de visualiser rapidement du contenu vid\u00e9o\u00a0: dans ce cas, extraire quelques images cl\u00e9s d&#039;un MP4 et les transformer en animation WebP en boucle suffit g\u00e9n\u00e9ralement, et c&#039;est beaucoup plus l\u00e9ger que de t\u00e9l\u00e9charger une vid\u00e9o compl\u00e8te. Cet article pr\u00e9sente un script shell pour macOS qui permet de r\u00e9aliser cette op\u00e9ration en un clic\u00a0: [\u2026]<\/p>","protected":false},"author":8,"featured_media":4877,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"rank_math_title":"MP4 to WebP on macOS: One-Click ffmpeg Script Guide","rank_math_description":"Use a one-click macOS shell script with ffmpeg to convert MP4 to looping WebP animations, with auto-install, even frame extraction and clean temp files.","footnotes":""},"categories":[35],"tags":[],"class_list":["post-4875","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-knowledge-hub"],"_links":{"self":[{"href":"https:\/\/imastudio.com\/fr\/wp-json\/wp\/v2\/posts\/4875","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/imastudio.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/imastudio.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/imastudio.com\/fr\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/imastudio.com\/fr\/wp-json\/wp\/v2\/comments?post=4875"}],"version-history":[{"count":2,"href":"https:\/\/imastudio.com\/fr\/wp-json\/wp\/v2\/posts\/4875\/revisions"}],"predecessor-version":[{"id":4878,"href":"https:\/\/imastudio.com\/fr\/wp-json\/wp\/v2\/posts\/4875\/revisions\/4878"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/imastudio.com\/fr\/wp-json\/wp\/v2\/media\/4877"}],"wp:attachment":[{"href":"https:\/\/imastudio.com\/fr\/wp-json\/wp\/v2\/media?parent=4875"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/imastudio.com\/fr\/wp-json\/wp\/v2\/categories?post=4875"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/imastudio.com\/fr\/wp-json\/wp\/v2\/tags?post=4875"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}