{"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\/zh\/blog\/mp4-to-webp-macos-ffmpeg-script","title":{"rendered":"\u4e00\u952e\u5f0f macOS \u811a\u672c\uff0c\u53ef\u5c06 MP4 \u8f6c\u6362\u4e3a\u5faa\u73af\u64ad\u653e\u7684 WebP GIF \u98ce\u683c\u52a8\u753b"},"content":{"rendered":"<p class=\"wp-block-paragraph\">\u5bf9\u4e8e\u5ba2\u6237\u7aef\u548c\u5e94\u7528\u7a0b\u5e8f\u5f00\u53d1\u5de5\u4f5c\uff0c\u6211\u7ecf\u5e38\u9700\u8981 <strong>\u5feb\u901f\u53ef\u89c6\u5316\u89c6\u9891\u5185\u5bb9<\/strong>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u4ea7\u54c1\u7ecf\u7406\u9884\u89c8\u52a8\u753b<\/li>\n\n\n\n<li>\u6587\u6863\u6216\u4ea7\u54c1\u9700\u6c42\u6587\u6863\u7684\u6f14\u793a\u7247\u6bb5<\/li>\n\n\n\n<li>\u7528\u4e8e\u793e\u4ea4\u5a92\u4f53\u5e16\u5b50\u6216\u843d\u5730\u9875\u7684\u8f7b\u91cf\u7ea7\u52a8\u753b<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u5728\u8fd9\u4e9b\u60c5\u51b5\u4e0b\uff0c, <strong>\u4ece MP4 \u6587\u4ef6\u4e2d\u63d0\u53d6\u51e0\u4e2a\u5173\u952e\u5e27\uff0c\u5e76\u5c06\u5b83\u4eec\u8f6c\u6362\u4e3a\u5faa\u73af\u64ad\u653e\u7684 WebP \u52a8\u753b\u3002<\/strong> \u901a\u5e38\u5c31\u8db3\u591f\u4e86\u2014\u2014\u800c\u4e14\u6bd4\u4e0a\u4f20\u5b8c\u6574\u89c6\u9891\u8981\u8f7b\u4fbf\u5f97\u591a\u3002.<\/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\">\u672c\u6587\u5206\u4eab\u4e86 <strong>macOS \u7684\u4e00\u952e\u5f0f shell \u811a\u672c<\/strong> \u90a3\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u4ece MP4 \u6587\u4ef6\u4e2d\u63d0\u53d6 6 \u5230 12 \u4e2a\u5747\u5300\u5206\u5e03\u7684\u5e27\u3002<\/li>\n\n\n\n<li>\u5c06\u5b83\u4eec\u8c03\u6574\u4e3a 720 \u50cf\u7d20\u5bbd<\/li>\n\n\n\n<li>\u6784\u5efa\u5faa\u73af\u64ad\u653e\u7684 WebP \u52a8\u753b<\/li>\n\n\n\n<li>\u5e76\u81ea\u52a8\u5b89\u88c5 <code>ffmpeg<\/code> \u5982\u679c\u7f3a\u5931<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u6240\u6709\u8fd9\u4e9b\u64cd\u4f5c\u90fd\u901a\u8fc7\u7ec8\u7aef\u4e2d\u7684\u4e00\u6761\u547d\u4ee4\u5b8c\u6210\u3002.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">1. \u811a\u672c\u7684\u529f\u80fd<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u5728 macOS \u4e0a\uff0c\u811a\u672c <code>extract_even_frames_webp.sh<\/code> \u63d0\u4f9b\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u81ea\u52a8\u7684 <code>ffmpeg<\/code> \u68c0\u6d4b\u548c\u5b89\u88c5<\/strong>\n<ul class=\"wp-block-list\">\n<li>\u68c0\u67e5\u662f\u5426 <code>ffmpeg<\/code> \u53ef\u7528<\/li>\n\n\n\n<li>\u5426\u5219\uff0c\u5148\u5b89\u88c5 Homebrew\uff08\u5982\u679c\u9700\u8981\uff09\uff0c\u7136\u540e\u518d\u5b89\u88c5 <code>ffmpeg<\/code><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\u751a\u81f3\u5e27\u63d0\u53d6<\/strong>\n<ul class=\"wp-block-list\">\n<li>\u8ba1\u7b97\u89c6\u9891\u65f6\u957f<\/li>\n\n\n\n<li>\u5747\u5300\u53d6\u6837 <strong>6-12\u5e27<\/strong> \u6574\u4e2a\u89c6\u9891\u7247\u6bb5<\/li>\n\n\n\n<li>\u9ed8\u8ba4\u503c\u4e3a 6 \u5e27\uff0c\u4f46\u60a8\u53ef\u4ee5\u81ea\u5b9a\u4e49\u5e27\u6570\u3002<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>WebP\u52a8\u753b\u751f\u6210<\/strong>\n<ul class=\"wp-block-list\">\n<li>\u5c06\u63d0\u53d6\u7684PNG\u5e27\u5408\u5e76\u6210\u4e00\u4e2a <strong>\u5faa\u73af\u64ad\u653e\u7684 WebP<\/strong><\/li>\n\n\n\n<li>\u8f93\u51fa\u5bbd\u5ea6\u4e3a <strong>720\u50cf\u7d20<\/strong> \u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff08\u9ad8\u5ea6\u6309\u6bd4\u4f8b\u7f29\u653e\uff09<\/li>\n\n\n\n<li>\u8d28\u91cf\u53ef\u901a\u8fc7\u4ee5\u4e0b\u65b9\u5f0f\u8c03\u8282 <code>-q:v<\/code><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\u81ea\u52a8\u6e05\u7406<\/strong>\n<ul class=\"wp-block-list\">\n<li>\u5c06\u4e2d\u95f4\u5e27\u5b58\u50a8\u5728\u4e34\u65f6\u76ee\u5f55\u4e2d<\/li>\n\n\n\n<li>WebP \u751f\u6210\u5b8c\u6210\u540e\uff0c\u5220\u9664\u4e34\u65f6\u76ee\u5f55\u3002<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\u9002\u7528\u4e8e\u77ed\u89c6\u9891\u548c\u957f\u89c6\u9891\u3002<\/strong>\n<ul class=\"wp-block-list\">\n<li>\u5982\u679c\u89c6\u9891\u5f88\u77ed\uff0c\u5e27\u6570\u4f1a\u81ea\u52a8\u51cf\u5c11\u3002<\/li>\n\n\n\n<li>\u5bf9\u4e8e\u8f83\u957f\u7684\u89c6\u9891\uff0c\u5e27\u5728\u6574\u4e2a\u65f6\u957f\u5185\u59cb\u7ec8\u5747\u5300\u5206\u5e03\u3002<\/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. \u5176\u5e95\u5c42\u5de5\u4f5c\u539f\u7406<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u4ee5\u4e0b\u662f\u8be5\u811a\u672c\u7684\u57fa\u672c\u903b\u8f91\u3002.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2.1 \u68c0\u67e5\u4f9d\u8d56\u5173\u7cfb<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u811a\u672c\u9996\u5148\u68c0\u67e5\u662f\u5426 <code>ffmpeg<\/code> \u5df2\u5b89\u88c5\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u7528\u9014 <code>\u547d\u4ee4 -v ffmpeg<\/code><\/li>\n\n\n\n<li>\u5982\u679c\u672a\u627e\u5230\uff0c\u5219\u68c0\u67e5 <code>\u917f\u9020<\/code>\n<ul class=\"wp-block-list\">\n<li>\u5982\u679c\u7f3a\u5c11 Homebrew\uff0c\u5b83\u4f1a\u5b89\u88c5 Homebrew\u3002<\/li>\n\n\n\n<li>\u7136\u540e\u4f7f\u7528 <code>brew install ffmpeg<\/code> \u5b89\u88c5 <code>ffmpeg<\/code><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">2.2 \u83b7\u53d6\u89c6\u9891\u65f6\u957f<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u4f7f\u7528 <code>ffprobe<\/code>, \u811a\u672c\u8bfb\u53d6 <strong>\u89c6\u9891\u603b\u65f6\u957f\uff08\u79d2\uff09<\/strong>.<br>\u6839\u636e\u6b64\u6570\u636e\u548c\u6240\u9700\u7684\u5e27\u6570\uff0c\u8ba1\u7b97\u5e27\u4e4b\u95f4\u7684\u65f6\u95f4\u95f4\u9694\u3002.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2.3 \u5747\u5300\u91c7\u6837\u5e27<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u5bf9\u4e8e\u6bcf\u4e2a\u5e27\u7d22\u5f15\uff0c\u5b83\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u8ba1\u7b97\u65f6\u95f4\u6233 = <code>\u7d22\u5f15 \u00d7 \u533a\u95f4<\/code><\/li>\n\n\n\n<li>\u7528\u9014 <code>ffmpeg -ss<\/code> \u8df3\u8f6c\u5230\u90a3\u4e2a\u65f6\u95f4\u4f4d\u7f6e<\/li>\n\n\n\n<li>\u63d0\u53d6\u4e00\u5e27<\/li>\n\n\n\n<li>\u7528 <code>\u6bd4\u4f8b\u5c3a=720:-1<\/code> \u6240\u4ee5\u5bbd\u5ea6\u662f 720 \u50cf\u7d20\uff0c\u9ad8\u5ea6\u662f\u6210\u6bd4\u4f8b\u7684\u3002<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">2.4 \u6784\u5efa WebP \u52a8\u753b<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u6240\u6709\u5e27\u90fd\u4fdd\u5b58\u4e3a PNG \u683c\u5f0f\u540e\uff0c\u811a\u672c\u4f1a\u8c03\u7528 <code>ffmpeg<\/code> \u518d\u6b21\u81f4\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u8bf7\u6309\u987a\u5e8f\u9605\u8bfb\uff08<code>%03d.png<\/code>)<\/li>\n\n\n\n<li>\u5c06\u5b83\u4eec\u7f16\u7801\u4e3a\u52a8\u753b WebP \u683c\u5f0f<\/li>\n\n\n\n<li>\u653e <code>-\u5faa\u73af 0<\/code> \u6240\u4ee5\u52a8\u753b\u4f1a\u65e0\u9650\u5faa\u73af\u64ad\u653e\u3002<\/li>\n\n\n\n<li>\u901a\u8fc7\u63a7\u5236\u8d28\u91cf <code>-q:v 70<\/code> \uff08\u6570\u503c\u8d8a\u4f4e\uff0c\u6587\u4ef6\u8d8a\u5927\uff0c\u753b\u8d28\u4e5f\u8d8a\u9ad8\uff09<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">2.5 \u6e05\u7406<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u6240\u6709\u4e2d\u95f4 PNG \u6587\u4ef6\u90fd\u5b58\u50a8\u5728\u7531\u2026\u2026\u521b\u5efa\u7684\u4e34\u65f6\u76ee\u5f55\u4e2d\u3002 <code>mktemp -d<\/code>.<br>WebP \u751f\u6210\u540e\uff0c\u8be5\u76ee\u5f55\u5c06\u88ab\u5220\u9664\u3002 <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. \u5b8c\u6574\u7684 shell \u811a\u672c\uff1aextract_even_frames_webp.sh<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u60a8\u53ef\u4ee5\u5c06\u4ee5\u4e0b\u811a\u672c\u4fdd\u5b58\u4e3a <code>extract_even_frames_webp.sh<\/code> \u5728\u4f60\u7684Mac\u7535\u8111\u4e0a\uff1a<\/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. \u5982\u4f55\u5728 macOS \u4e0a\u4f7f\u7528\u8be5\u811a\u672c<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u4fdd\u5b58\u811a\u672c<\/strong> \u5c06\u4ee5\u4e0a\u5185\u5bb9\u53e6\u5b58\u4e3a <code>extract_even_frames_webp.sh<\/code>, \u4f8b\u5982\uff0c\u5728\u60a8\u7684\u4e3b\u76ee\u5f55\u4e2d\u3002.<\/li>\n\n\n\n<li><strong>\u8d4b\u4e88\u5b83\u6267\u884c\u6743\u9650<\/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>\u57fa\u672c\u7528\u6cd5<\/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\">\u8fd9\u5c06\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u68c0\u67e5\u6216\u5b89\u88c5 <code>ffmpeg<\/code><\/li>\n\n\n\n<li>\u63d0\u53d6 6 \u4e2a\u7b49\u95f4\u8ddd\u7684\u5e27<\/li>\n\n\n\n<li>\u751f\u6210 <code>\u8f93\u51fa.webp<\/code> \u5bbd\u5ea6\u4e3a 720 \u50cf\u7d20<\/li>\n<\/ul>\n\n\n\n<ol start=\"4\" class=\"wp-block-list\">\n<li><strong>\u8bf7\u6307\u5b9a\u5e27\u6570\uff086-12\u5e27\uff09\u3002<\/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\">\u8fd9\u5c06\u63d0\u53d6 8 \u5e27\u800c\u4e0d\u662f\u9ed8\u8ba4\u7684 6 \u5e27\u3002.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">5. \u8fd9\u79cd\u5de5\u4f5c\u6d41\u7a0b\u7684\u4f18\u52bf<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e0e\u624b\u52a8\u6253\u5f00\u89c6\u9891\u7f16\u8f91\u5668\u6216\u70b9\u51fb\u56fe\u5f62\u754c\u9762\u8f6c\u6362\u5668\u76f8\u6bd4\uff0c\u8be5\u811a\u672c\u5177\u6709\u4ee5\u4e0b\u51e0\u4e2a\u4f18\u70b9\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u96f6\u624b\u52a8\u8bbe\u7f6e<\/strong>\n<ul class=\"wp-block-list\">\n<li>\u81ea\u52a8\u5b89\u88c5 <code>ffmpeg<\/code> \uff08\u5fc5\u8981\u65f6\u53ef\u4f7f\u7528\u81ea\u5236\u8f6f\u4ef6\uff09<\/li>\n\n\n\n<li>\u65e0\u9700\u641c\u7d22\u5b89\u88c5\u7a0b\u5e8f\u6216\u8bb0\u4f4f\u547d\u4ee4<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\u667a\u80fd\u5e27\u91c7\u6837<\/strong>\n<ul class=\"wp-block-list\">\n<li>\u5bf9\u4e8e\u77ed\u89c6\u9891\u7247\u6bb5\uff0c\u5b83\u4f1a\u81ea\u52a8\u51cf\u5c11\u5e27\u6570\u3002<\/li>\n\n\n\n<li>\u5bf9\u4e8e\u8f83\u957f\u7684\u89c6\u9891\uff0c\u5e27\u4e4b\u95f4\u7684\u95f4\u9694\u59cb\u7ec8\u5747\u5300\u5206\u5e03\u5728\u6574\u4e2a\u65f6\u957f\u5185\u3002<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\u8d28\u91cf\u548c\u5c3a\u5bf8\u63a7\u5236<\/strong>\n<ul class=\"wp-block-list\">\n<li><code>-q:v<\/code> \u5141\u8bb8\u60a8\u8c03\u6574 WebP \u8d28\u91cf\u4e0e\u6587\u4ef6\u5927\u5c0f\u4e4b\u95f4\u7684\u5173\u7cfb<\/li>\n\n\n\n<li><code>\u6bd4\u4f8b\u5c3a=720:-1<\/code> \u63d0\u4f9b\u9002\u5408\u7f51\u9875\u7684\u5bbd\u5ea6\u548c\u4e00\u81f4\u7684\u5bbd\u9ad8\u6bd4<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\u9ed8\u8ba4\u5faa\u73af<\/strong>\n<ul class=\"wp-block-list\">\n<li><code>-\u5faa\u73af 0<\/code> \u4f7f WebP \u52a8\u753b\u65e0\u9650\u5faa\u73af<\/li>\n\n\n\n<li>\u975e\u5e38\u9002\u5408\u7528\u4e8e\u9884\u89c8\u3001\u6f14\u793a\u4ee5\u53ca\u6587\u6863\u6216\u7f51\u7ad9\u4e0a\u7684\u7ec6\u5fae\u52a8\u6001\u6548\u679c\u3002<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\u6e05\u7406\u78c1\u76d8\u4f7f\u7528\u60c5\u51b5<\/strong>\n<ul class=\"wp-block-list\">\n<li>\u4e34\u65f6 PNG \u5e27\u5b58\u50a8\u5728\u4e34\u65f6\u6587\u4ef6\u5939\u4e2d\uff0c\u4e4b\u540e\u4f1a\u88ab\u5220\u9664\u3002<\/li>\n\n\n\n<li>\u4e0d\u4f1a\u51fa\u73b0\u6587\u4ef6\u5806\u79ef\u7684\u60c5\u51b5<\/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. \u793a\u4f8b\uff1a\u5c06 20 \u79d2\u7684 MP4 \u89c6\u9891\u8f6c\u6362\u4e3a WebP \u9884\u89c8<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u60f3\u8c61\u4e00\u4e0b\u4f60\u6709\u4e00\u4e2a <strong>20\u79d2\u529f\u80fd\u6f14\u793a\u89c6\u9891<\/strong> \u7136\u540e\u8dd1\uff1a<\/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\">\u811a\u672c\u5c06\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u8ba1\u7b97\u4e00\u4e2a\u5927\u7ea6\u4e3a \u7684\u533a\u95f4\u3002 <strong>3.33\u79d2<\/strong><\/li>\n\n\n\n<li>\u63d0\u53d6 6 \u5e27 <code>0\u79d2\u30013.33\u79d2\u30016.66\u79d2\u300110\u79d2\u300113.33\u79d2\u300116.66\u79d2<\/code><\/li>\n\n\n\n<li>\u5c06\u5b83\u4eec\u8c03\u6574\u4e3a 720 \u50cf\u7d20\u5bbd<\/li>\n\n\n\n<li>\u5efa\u9020\u4e00\u4e2a <strong>\u5faa\u73af\u64ad\u653e\u7684 WebP<\/strong> \u52a8\u753b\u7247<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u7136\u540e\u60a8\u53ef\u4ee5\u5c06\u6b64 WebP \u6587\u4ef6\u62d6\u653e\u5230\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u4ea7\u54c1\u6587\u6863\u6216\u98de\u4e66\/Notion\u6587\u6863\u4f5c\u4e3a <strong>\u8f7b\u91cf\u7ea7\u9884\u89c8<\/strong><\/li>\n\n\n\n<li>\u793e\u4ea4\u5e16\u5b50\u6216\u843d\u5730\u9875\u4f5c\u4e3a <strong>\u81ea\u52a8\u64ad\u653e\u52a8\u6001\u7f29\u7565\u56fe<\/strong><\/li>\n\n\n\n<li>PPT\u6f14\u793a\u6587\u7a3f\u548c\u5185\u90e8\u6f14\u793a\uff0c\u5728\u8fd9\u79cd\u60c5\u51b5\u4e0b\uff0c\u5236\u4f5c\u5b8c\u6574\u89c6\u9891\u5c31\u663e\u5f97\u591a\u4f59\u4e86\u3002<\/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. \u6269\u5c55\u601d\u8def<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u4e2a\u811a\u672c\u53ea\u662f\u4e00\u4e2a\u8d77\u70b9\u2014\u2014\u4f60\u53ef\u4ee5\u8f7b\u677e\u5730\u6839\u636e\u81ea\u5df1\u7684\u5de5\u4f5c\u6d41\u7a0b\u8fdb\u884c\u8c03\u6574\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u52a8\u6001\u5e27\u8ba1\u6570<\/strong>\n<ul class=\"wp-block-list\">\n<li>\u6839\u636e\u89c6\u9891\u957f\u5ea6\u81ea\u52a8\u9009\u62e9 6 \u5230 12 \u5e27\u3002<\/li>\n\n\n\n<li>\u4f8b\u5982\uff0c\u8f83\u957f\u7684\u89c6\u9891\u7247\u6bb5\u9700\u8981\u66f4\u591a\u5e27\u6765\u663e\u793a\u66f4\u591a\u72b6\u6001\u3002<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\u5b9a\u5236\u5c3a\u5bf8<\/strong>\n<ul class=\"wp-block-list\">\n<li>\u6539\u53d8 <code>\u6bd4\u4f8b\u5c3a=720:-1<\/code> \u5bbd\u5ea6\u53ef\u6839\u636e\u60a8\u7684\u4ea7\u54c1\u56e2\u961f\u504f\u597d\u800c\u5b9a\u3002<\/li>\n\n\n\n<li>\u6216\u8005\u5c06\u5bbd\u5ea6\u4f5c\u4e3a\u53c2\u6570\u516c\u5f00\uff1a <code>.\/script.sh in.mp4 out.webp 8 1080<\/code><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\u6279\u91cf\u5904\u7406<\/strong>\n<ul class=\"wp-block-list\">\n<li>\u5c06\u6b64\u811a\u672c\u5c01\u88c5\u5728\u53e6\u4e00\u4e2a\u5faa\u73af\u4e2d\u4ee5\u5904\u7406\u6240\u6709\u5185\u5bb9 <code>.mp4<\/code> \u6587\u4ef6\u5939\u4e2d\u7684\u6587\u4ef6<\/li>\n\n\n\n<li>\u5f53\u60a8\u4e00\u6b21\u6027\u5bfc\u51fa\u4e00\u6279\u529f\u80fd\u6f14\u793a\u65f6\uff0c\u6b64\u529f\u80fd\u975e\u5e38\u6709\u7528\u3002<\/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\">\u4f5c\u8005\u6ce8<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u6bb5\u811a\u672c\u6e90\u81ea\u6211\u5b9e\u9645\u7684 macOS \u5f00\u53d1\u5de5\u4f5c\u6d41\u7a0b\uff0c\u7528\u4e8e\u5c06 MP4 \u89c6\u9891\u8f6c\u6362\u4e3a\u8f7b\u91cf\u7ea7\u7684 WebP \u9884\u89c8\u3002\u6211\u5728\u65e5\u5e38\u5ba2\u6237\u5f00\u53d1\u4e2d\u4f7f\u7528\u5b83\u6765\u751f\u6210\u6587\u6863\u548c\u793e\u4ea4\u5a92\u4f53\u5e16\u5b50\u7684\u6f14\u793a\u52a8\u753b\u3002GPT \u4ec5\u7528\u4e8e\u8f85\u52a9\u7ffb\u8bd1\u3001\u7ed3\u6784\u5316\u548c\u6da6\u8272\u672c\u6587\u7684\u82f1\u6587\u7248\u672c\u2014\u2014\u811a\u672c\u903b\u8f91\u3001\u5b9e\u73b0\u7ec6\u8282\u548c\u4f7f\u7528\u6a21\u5f0f\u5747\u6765\u81ea\u6211\u81ea\u5df1\u7684\u9879\u76ee\u7ecf\u9a8c\u3002.<\/p>","protected":false},"excerpt":{"rendered":"<p>For client and app development work, I often need to visualize video content quickly: In these cases, extracting a few key frames from an MP4 and turning them into a looping WebP animation is usually enough\u2014and much lighter than uploading a full video. This article shares a one-click shell script for macOS that: All of [&hellip;]<\/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\/zh\/wp-json\/wp\/v2\/posts\/4875","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/imastudio.com\/zh\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/imastudio.com\/zh\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/imastudio.com\/zh\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/imastudio.com\/zh\/wp-json\/wp\/v2\/comments?post=4875"}],"version-history":[{"count":2,"href":"https:\/\/imastudio.com\/zh\/wp-json\/wp\/v2\/posts\/4875\/revisions"}],"predecessor-version":[{"id":4878,"href":"https:\/\/imastudio.com\/zh\/wp-json\/wp\/v2\/posts\/4875\/revisions\/4878"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/imastudio.com\/zh\/wp-json\/wp\/v2\/media\/4877"}],"wp:attachment":[{"href":"https:\/\/imastudio.com\/zh\/wp-json\/wp\/v2\/media?parent=4875"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/imastudio.com\/zh\/wp-json\/wp\/v2\/categories?post=4875"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/imastudio.com\/zh\/wp-json\/wp\/v2\/tags?post=4875"}],"curies":[{"name":"\u53ef\u6e7f\u6027\u7c89\u5242","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}