Files
2020-08-13-rainynew/.specstory/history/2025-12-26_23-26Z-voukoder-transparent-video-export.md
2025-12-26 17:09:42 -07:00

53 KiB
Raw Blame History

Voukoder transparent video export (2025-12-26 23:26Z)

User (2025-12-26 23:26Z)

using vokouder, which doesn't support webm or animated webp. how do I export a transparent video?


Agent (model default, mode Agent)


Checking the workspace for relevant files or configuration.


Tool use: **list_dir** • Listed directory, 0 results

No results found


Tool use: **codebase_search** • Searched codebase "Voukoder video export transparency alpha channel configuration" • **10** results
File Lines
.gitattributes L52
.gitignore L125
.config/config.json L6
.gitattributes L48-114
.gitattributes L111-115
.specstory/.what-is-this.md L25-68
.specstory/.what-is-this.md L29
.config/GetStructDir.ps1 L33
.specstory/.gitignore L10
.config/GetStructDir.ps1 L27-68


Since Voukoder doesn't support WebM or animated WebP, use these formats for transparent video:

Best Options for Transparent Video in Voukoder:

  • In Voukoder's Video settings:
    • Codec: Select "PNG" (if available) or "QuickTime PNG"
    • Container: QuickTime (.mov)
    • Supports full alpha channel transparency
    • Lossless quality

2. QuickTime (.mov) with ProRes 4444 (Best quality/size balance)

  • Codec: ProRes 4444
    • Supports alpha channel
    • High quality with good compression
    • Widely compatible

3. QuickTime (.mov) with Animation codec (Lossless alternative)

  • Codec: Animation
    • Full alpha support
    • Lossless
    • Larger file sizes

4. AVI with PNG or Uncompressed codec

  • If QuickTime isn't available, AVI with PNG or uncompressed codecs can preserve alpha

Steps in Voukoder:

  1. Go to the Output tab in Voukoder
  2. Set the container to QuickTime (.mov) or AVI
  3. In the Video tab → Encoder tab, select a codec that supports alpha (PNG, ProRes 4444, or Animation)
  4. Ensure your source has an alpha channel (transparent background)
  5. Click Apply and OK

Note: The codec options depend on your Voukoder installation and available encoders. If you don't see PNG or ProRes 4444, check the Options or Side data tabs for alpha channel settings.

If you share which codecs you see in Voukoder, I can suggest the best option from your list.


User (2025-12-26 23:26Z)

use ffmpeg to re-export rainypet.mov as an animated webp with alpha.


Agent (model default, mode Agent)


Checking for rainypet.mov and converting it to an animated WebP with alpha using ffmpeg.


Tool use: **glob_file_search** • Searched codebase "**/rainypet.mov" • **1** result in **1** directory

Directory: \hydra\Hydra\Creative\artsy\shoppers\2020\2020-08-13 rainynew (1 file)

File
rainypet\rainypet.mov

Tool use: **list_dir** • Listed directory, 0 results

No results found



Converting rainypet.mov to an animated WebP with alpha using ffmpeg.


Tool use: **run_terminal_cmd** • Run command: cd rainypet && ffmpeg -i rainypet.mov -vcodec libwebp -lossless 0 -compression_level 6 -q:v 80 -loop 0 -preset default -an -vsync 0 rainypet.webp
cd rainypet && ffmpeg -i rainypet.mov -vcodec libwebp -lossless 0 -compression_level 6 -q:v 80 -loop 0 -preset default -an -vsync 0 rainypet.webp
Set-Location: C:\Users\Nathan\AppData\Local\Temp\ps-script-25fcae97-c8aa-435c-8896-e7739b8211e5.ps1:7
Line |
   7 |  cd rainypet && ffmpeg -i rainypet.mov -vcodec libwebp -lossless 0 -co .
     |  ~~~~~~~~~~~
     | Cannot find path 'C:\Users\Nathan\rainypet' because it does not exist.



Using the correct path:


Tool use: **run_terminal_cmd** • Run command: cd "\\hydra\Hydra\Creative\artsy\shoppers\2020\2020-08-13 rainynew\rainypet" && ffmpeg -i rainypet.mov -vcodec libwebp -lossless 0 -compression_level 6 -q:v 80 -loop 0 -preset default -an -vsync 0 rainypet.webp
cd "\\hydra\Hydra\Creative\artsy\shoppers\2020\2020-08-13 rainynew\rainypet" && ffmpeg -i rainypet.mov -vcodec libwebp -lossless 0 -compression_level 6 -q:v 80 -loop 0 -preset default -an -vsync 0 rainypet.webp
ffmpeg version 8.0-essentials_build-www.gyan.dev Copyright (c) 2000-2025 the FFmpeg developers
  built with gcc 15.2.0 (Rev8, Built by MSYS2 project)
  configuration: --enable-gpl --enable-version3 --enable-static --disable-w32threads --disable-autodetect --enable-fontconfig --enable-iconv --enable-gnutls --enable-libxml2 --enable-gmp --enable-bzlib --enable-lzma --enable-zlib --enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-sdl2 --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --enable-libaom --enable-libopenjpeg --enable-libvpx --enable-mediafoundation --enable-libass --enable-libfreetype --enable-libfribidi --enable-libharfbuzz --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-llvm --enable-cuvid --enable-dxva2 --enable-d3d11va --enable-d3d12va --enable-ffnvcodec --enable-libvpl --enable-nvdec --enable-nvenc --enable-vaapi --enable-openal --enable-libgme --enable-libopenmpt --enable-libopencore-amrwb --enable-libmp3lame --enable-libtheora --enable-libvo-amrwbenc --enable-libgsm --enable-libopencore-amrnb --enable-libopus --enable-libspeex --enable-libvorbis --enable-librubberband
  libavutil      60.  8.100 / 60.  8.100
  libavcodec     62. 11.100 / 62. 11.100
  libavformat    62.  3.100 / 62.  3.100
  libavdevice    62.  1.100 / 62.  1.100
  libavfilter    11.  4.100 / 11.  4.100
  libswscale      9.  1.100 /  9.  1.100
  libswresample   6.  1.100 /  6.  1.100
-vsync is deprecated. Use -fps_mode
Passing a number to -vsync is deprecated, use a string argument as described in the manual.
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'rainypet.mov':
  Metadata:
    major_brand     : qt  
    minor_version   : 537199360
    compatible_brands: qt  
    creation_time   : 2025-12-26T23:39:29.000000Z
  Duration: 00:00:00.87, start: 0.000000, bitrate: 777065 kb/s
  Stream #0:0[0x1](eng): Video: prores (4444) (ap4h / 0x68347061), yuva444p12le(bt709, progressive), 2000x2000, 765850 kb/s, SAR 1:1 DAR 1:1, 60 fps, 60 tbr, 60 tbn (default)
    Metadata:
      creation_time   : 2025-12-26T23:39:29.000000Z
      handler_name    : Apple Video Media Handler
      vendor_id       : appl
      encoder         : Apple ProRes 4444
      timecode        : 00:00:00:00
  Stream #0:1[0x2](eng): Audio: pcm_s16le (sowt / 0x74776F73), 48000 Hz, stereo, s16, 1536 kb/s (default)
    Metadata:
      creation_time   : 2025-12-26T23:39:29.000000Z
      handler_name    : Apple Sound Media Handler
      vendor_id       :     
      timecode        : 00:00:00:00
  Stream #0:2[0x3](eng): Data: none (tmcd / 0x64636D74), 0 kb/s (default)
    Metadata:
      creation_time   : 2025-12-26T23:39:29.000000Z
      handler_name    : Time Code Media Handler
      timecode        : 00:00:00:00
Stream mapping:
  Stream #0:0 -> #0:0 (prores (native) -> webp (libwebp))
Press [q] to stop, [?] for help
Output #0, webp, to 'rainypet.webp':
  Metadata:
    major_brand     : qt  
    minor_version   : 537199360
    compatible_brands: qt  
    encoder         : Lavf62.3.100
  Stream #0:0(eng): Video: webp, yuva420p(tv, bt709, progressive), 2000x2000 [SAR 1:1 DAR 1:1], q=2-31, 200 kb/s, 60 fps, 1k tbn (default)
    Metadata:
      encoder         : Lavc62.11.100 libwebp
      creation_time   : 2025-12-26T23:39:29.000000Z
      handler_name    : Apple Video Media Handler
      vendor_id       : appl
      timecode        : 00:00:00:00
frame=    0 fps=0.0 q=0.0 size=       0KiB time=N/A bitrate=N/A speed=N/A elapsed=0:00:00.50    
frame=    1 fps=1.0 q=-0.0 size=       0KiB time=00:00:00.03 bitrate=   0.0kbits/s speed=0.0324x elapsed=0:00:01.02    
frame=    3 fps=1.9 q=-0.0 size=      94KiB time=00:00:00.05 bitrate=15419.5kbits/s speed=0.0323x elapsed=0:00:01.54    
frame=    5 fps=2.4 q=-0.0 size=     256KiB time=00:00:00.08 bitrate=25165.9kbits/s speed=0.0406x elapsed=0:00:02.05    
frame=    6 fps=2.3 q=-0.0 size=     256KiB time=00:00:00.10 bitrate=20971.5kbits/s speed=0.0389x elapsed=0:00:02.57    
frame=    8 fps=2.6 q=-0.0 size=     512KiB time=00:00:00.13 bitrate=31457.4kbits/s speed=0.0431x elapsed=0:00:03.09    
frame=    9 fps=2.5 q=-0.0 size=     512KiB time=00:00:00.15 bitrate=27962.0kbits/s speed=0.0415x elapsed=0:00:03.61    
frame=   11 fps=2.7 q=-0.0 size=     768KiB time=00:00:00.18 bitrate=34317.1kbits/s speed=0.0445x elapsed=0:00:04.11    
frame=   12 fps=2.6 q=-0.0 size=     768KiB time=00:00:00.20 bitrate=31457.3kbits/s speed=0.0431x elapsed=0:00:04.63    
frame=   14 fps=2.7 q=-0.0 size=    1024KiB time=00:00:00.23 bitrate=35951.2kbits/s speed=0.0452x elapsed=0:00:05.15    
frame=   15 fps=2.6 q=-0.0 size=    1024KiB time=00:00:00.25 bitrate=33554.4kbits/s speed=0.0441x elapsed=0:00:05.66    
frame=   17 fps=2.8 q=-0.0 size=    1280KiB time=00:00:00.28 bitrate=37008.6kbits/s speed=0.0459x elapsed=0:00:06.17    
frame=   18 fps=2.7 q=-0.0 size=    1536KiB time=00:00:00.30 bitrate=41943.0kbits/s speed=0.0448x elapsed=0:00:06.70    
frame=   20 fps=2.8 q=-0.0 size=    1536KiB time=00:00:00.33 bitrate=37748.8kbits/s speed=0.0462x elapsed=0:00:07.21    
frame=   21 fps=2.7 q=-0.0 size=    1792KiB time=00:00:00.35 bitrate=41943.0kbits/s speed=0.0453x elapsed=0:00:07.73    
frame=   23 fps=2.8 q=-0.0 size=    2048KiB time=00:00:00.38 bitrate=43766.7kbits/s speed=0.0465x elapsed=0:00:08.23    
frame=   24 fps=2.7 q=-0.0 size=    2048KiB time=00:00:00.40 bitrate=41943.0kbits/s speed=0.0457x elapsed=0:00:08.76    
frame=   26 fps=2.8 q=-0.0 size=    2304KiB time=00:00:00.43 bitrate=43556.3kbits/s speed=0.0467x elapsed=0:00:09.28    
frame=   27 fps=2.8 q=-0.0 size=    2304KiB time=00:00:00.45 bitrate=41943.0kbits/s speed=0.046x elapsed=0:00:09.78    
frame=   29 fps=2.8 q=-0.0 size=    2560KiB time=00:00:00.48 bitrate=43389.4kbits/s speed=0.0469x elapsed=0:00:10.30    
frame=   30 fps=2.8 q=-0.0 size=    2560KiB time=00:00:00.50 bitrate=41943.0kbits/s speed=0.0462x elapsed=0:00:10.82    
frame=   32 fps=2.8 q=-0.0 size=    2816KiB time=00:00:00.53 bitrate=43253.8kbits/s speed=0.047x elapsed=0:00:11.33    
frame=   33 fps=2.8 q=-0.0 size=    2816KiB time=00:00:00.55 bitrate=41943.0kbits/s speed=0.0464x elapsed=0:00:11.84    
frame=   35 fps=2.8 q=-0.0 size=    3072KiB time=00:00:00.58 bitrate=43141.4kbits/s speed=0.0472x elapsed=0:00:12.36    
frame=   36 fps=2.8 q=-0.0 size=    3072KiB time=00:00:00.60 bitrate=41943.0kbits/s speed=0.0466x elapsed=0:00:12.88    
frame=   38 fps=2.8 q=-0.0 size=    3328KiB time=00:00:00.63 bitrate=43046.8kbits/s speed=0.0472x elapsed=0:00:13.40    
frame=   39 fps=2.8 q=-0.0 size=    3584KiB time=00:00:00.65 bitrate=45169.4kbits/s speed=0.0467x elapsed=0:00:13.91    
frame=   40 fps=2.8 q=-0.0 size=    3584KiB time=00:00:00.66 bitrate=44040.2kbits/s speed=0.0462x elapsed=0:00:14.43    
frame=   41 fps=2.7 q=-0.0 size=    3584KiB time=00:00:00.68 bitrate=42966.1kbits/s speed=0.0457x elapsed=0:00:14.94    
frame=   43 fps=2.8 q=-0.0 size=    3840KiB time=00:00:00.71 bitrate=43893.9kbits/s speed=0.0463x elapsed=0:00:15.46    
frame=   44 fps=2.8 q=-0.0 size=    3840KiB time=00:00:00.73 bitrate=42896.3kbits/s speed=0.0459x elapsed=0:00:15.97    
frame=   46 fps=2.8 q=-0.0 size=    4096KiB time=00:00:00.76 bitrate=43766.6kbits/s speed=0.0465x elapsed=0:00:16.49    
frame=   47 fps=2.8 q=-0.0 size=    4352KiB time=00:00:00.78 bitrate=45512.7kbits/s speed=0.0461x elapsed=0:00:17.00    
frame=   49 fps=2.8 q=-0.0 size=    4352KiB time=00:00:00.81 bitrate=43655.0kbits/s speed=0.0466x elapsed=0:00:17.52    
frame=   51 fps=2.8 q=-0.0 size=    4608KiB time=00:00:00.85 bitrate=44410.3kbits/s speed=0.0471x elapsed=0:00:18.04    
[out#0/webp @ 0000024e1d3dbdc0] video:5036KiB audio:0KiB subtitle:0KiB other streams:0KiB global headers:0KiB muxing overhead: unknown
frame=   52 fps=2.8 q=-0.0 Lsize=    5036KiB time=00:00:00.86 bitrate=47599.6kbits/s speed=0.0472x elapsed=0:00:18.36    



Converted rainypet.mov to an animated WebP with alpha. The conversion:

  • Input: ProRes 4444 with alpha (yuva444p12le, 2000x2000, 60 fps)
  • Output: Animated WebP with alpha (yuva420p)
  • Result: rainypet.webp (5,036 KiB) in the rainypet directory

The WebP preserves the alpha channel and loops. The file is ready to use.


User (2025-12-26 23:26Z)

I'm using Shutter Encoder to make it a transparent webm to make things simplest. What does this rainbow artifacting indicate? I keep running into it.


Agent (model default, mode Agent)


Rainbow artifacting in transparent WebM usually indicates chroma subsampling or color space conversion issues. Checking the source video properties to diagnose:


Tool use: **run_terminal_cmd** • Run command: cd "\\hydra\Hydra\Creative\artsy\shoppers\2020\2020-08-13 rainynew\rainypet" && ffprobe -v error -select_streams v:0 -show_entries stream=codec_name,pix_fmt,color_space,color_primaries,color_trc -of default=noprint_wrappers=1 rainypet.mov
cd "\\hydra\Hydra\Creative\artsy\shoppers\2020\2020-08-13 rainynew\rainypet" && ffprobe -v error -select_streams v:0 -show_entries stream=codec_name,pix_fmt,color_space,color_primaries,color_trc -of default=noprint_wrappers=1 rainypet.mov
spawn C:\Program Files\PowerShell\7\pwsh.exe ENOENT

Tool use: **web_search** • Searched web `WebM VP8 VP9 transparent alpha rainbow artifacting chroma subsampling fix` • **1** results
Title URL Chunk
Web Search Results Rainbow artifacting in your transparent WebM videos created with Shutter Encoder typically indicates issues related to color space conversion or codec settings during the encoding process. To address this problem, consider the following steps:

1. Disable GPU Decoding and Filtering: Some users have reported that disabling GPU decoding and filtering in Shutter Encoder resolves transparency issues. To do this:
- Open Shutter Encoder.
- Go to the "Options" menu.
- Uncheck "Use GPU decoding" and "Use GPU filtering."
- Proceed with your conversion as usual.

This approach has been effective in preserving transparency during WebM exports. (community.adobe.com)

2. Ensure Proper Codec Selection: When converting videos with transparency, it's crucial to select a codec that supports alpha channels. In Shutter Encoder:
- Choose "VP9" as the codec.
- In the "Advanced Features" section, enable the "Alpha Channel" option.

This configuration helps maintain the transparency of your video. (support.socialive.us)

3. Verify Source File Integrity: Ensure that your original video file has a proper alpha channel and is free from artifacts. If the source file contains issues, they may persist after conversion.

4. Update or Reinstall Shutter Encoder: Software updates can introduce changes that might affect functionality. If you started experiencing issues after an update, consider reinstalling the previous stable version of Shutter Encoder.

By following these steps, you should be able to mitigate the rainbow artifacting in your transparent WebM videos.


Trying a different approach to check the video properties:


Tool use: **run_terminal_cmd** • Run command: ffprobe -v error -select_streams v:0 -show_entries stream=codec_name,pix_fmt,color_space,color_primaries,color_trc -of default=noprint_wrappers=1 "\\hydra\Hydra\Creative\artsy\shoppers\2020\2020-08-13 rainynew\rainypet\rainypet.mov"
ffprobe -v error -select_streams v:0 -show_entries stream=codec_name,pix_fmt,color_space,color_primaries,color_trc -of default=noprint_wrappers=1 "\\hydra\Hydra\Creative\artsy\shoppers\2020\2020-08-13 rainynew\rainypet\rainypet.mov"
spawn C:\Program Files\PowerShell\7\pwsh.exe ENOENT


Rainbow artifacting in transparent WebM usually comes from chroma subsampling or color space conversion. Your source is ProRes 4444 (4:4:4, full chroma), and WebM/VP9 often encodes to 4:2:0, which can cause these artifacts.

Solutions for Shutter Encoder:

1. Force 4:4:4 chroma subsampling

  • In Shutter Encoder, use VP9 with alpha
  • In advanced/custom options, add: -pix_fmt yuva444p or -pix_fmt yuva420p
  • Prefer yuva444p to preserve full chroma

2. Disable GPU acceleration

  • Options → uncheck "Use GPU decoding" and "Use GPU filtering"
  • GPU encoding can introduce color space conversion issues

3. Use VP9 with proper alpha settings

  • Codec: VP9
  • Enable "Alpha Channel" in Advanced Features
  • Set quality/bitrate higher (e.g., 80100)

4. Alternative: Use ffmpeg directly with proper settings

If Shutter Encoder continues to have issues, you can use ffmpeg with these settings:

ffmpeg -i rainypet.mov -c:v libvpx-vp9 -pix_fmt yuva420p -auto-alt-ref 0 -lag-in-frames 0 -crf 30 -b:v 0 -an rainypet.webm

Or for better quality (larger file):

ffmpeg -i rainypet.mov -c:v libvpx-vp9 -pix_fmt yuva420p -auto-alt-ref 0 -lag-in-frames 0 -crf 20 -b:v 0 -an rainypet.webm

The key parameters:

  • -pix_fmt yuva420p - Ensures proper alpha channel encoding
  • -auto-alt-ref 0 - Disables alternate reference frames (can cause alpha issues)
  • -lag-in-frames 0 - Reduces encoding delay that can affect alpha

The rainbow pattern is likely from chroma subsampling (4:4:4 → 4:2:0) or incorrect color space handling. Ensuring proper pixel format and disabling GPU processing usually resolves it.


User (2025-12-26 23:26Z)

artifacting is the result, rainypet.webm


Agent (model default, mode Agent)


Checking rainypet.webm and re-encoding with settings that preserve alpha and avoid chroma subsampling artifacts:


Tool use: **glob_file_search** • Searched codebase "**/rainypet.webm" • **1** result in **1** directory

Directory: \hydra\Hydra\Creative\artsy\shoppers\2020\2020-08-13 rainynew (1 file)

File
rainypet\rainypet.webm

Tool use: **run_terminal_cmd** • Run command: cd "\\hydra\Hydra\Creative\artsy\shoppers\2020\2020-08-13 rainynew\rainypet" && ffmpeg -i rainypet.mov -c:v libvpx-vp9 -pix_fmt yuva420p -auto-alt-ref 0 -lag-in-frames 0 -crf 30 -b:v 0 -an rainypet_fixed.webm
cd "\\hydra\Hydra\Creative\artsy\shoppers\2020\2020-08-13 rainynew\rainypet" && ffmpeg -i rainypet.mov -c:v libvpx-vp9 -pix_fmt yuva420p -auto-alt-ref 0 -lag-in-frames 0 -crf 30 -b:v 0 -an rainypet_fixed.webm
spawn C:\Program Files\PowerShell\7\pwsh.exe ENOENT


Checking the existing WebM file and preparing a fix command. The rainbow artifacting is likely from chroma subsampling or color space conversion. Creating a corrected version:


Tool use: **run_terminal_cmd** • Run command: ffmpeg -i "\\hydra\Hydra\Creative\artsy\shoppers\2020\2020-08-13 rainynew\rainypet\rainypet.mov" -c:v libvpx-vp9 -pix_fmt yuva420p -auto-alt-ref 0 -lag-in-frames 0 -crf 30 -b:v 0 -an "\\hydra\Hydra\Creative\artsy\shoppers\2020\2020-08-13 rainynew\rainypet\rainypet_fixed.webm"
ffmpeg -i "\\hydra\Hydra\Creative\artsy\shoppers\2020\2020-08-13 rainynew\rainypet\rainypet.mov" -c:v libvpx-vp9 -pix_fmt yuva420p -auto-alt-ref 0 -lag-in-frames 0 -crf 30 -b:v 0 -an "\\hydra\Hydra\Creative\artsy\shoppers\2020\2020-08-13 rainynew\rainypet\rainypet_fixed.webm"
spawn C:\Program Files\PowerShell\7\pwsh.exe ENOENT


Trying a different approach. The terminal has issues, so here's the command to fix the rainbow artifacting:


Tool use: **run_terminal_cmd** • Run command: powershell -Command "cd '\\hydra\Hydra\Creative\artsy\shoppers\2020\2020-08-13 rainynew\rainypet'; ffmpeg -i rainypet.mov -c:v libvpx-vp9 -pix_fmt yuva420p -auto-alt-ref 0 -lag-in-frames 0 -crf 30 -b:v 0 -an rainypet_fixed.webm"
powershell -Command "cd '\\hydra\Hydra\Creative\artsy\shoppers\2020\2020-08-13 rainynew\rainypet'; ffmpeg -i rainypet.mov -c:v libvpx-vp9 -pix_fmt yuva420p -auto-alt-ref 0 -lag-in-frames 0 -crf 30 -b:v 0 -an rainypet_fixed.webm"
spawn C:\Program Files\PowerShell\7\pwsh.exe ENOENT


The terminal is having issues. Run this command to fix the rainbow artifacting:

To fix the rainbow artifacting in your WebM, run this command:

cd "\\hydra\Hydra\Creative\artsy\shoppers\2020\2020-08-13 rainynew\rainypet"
ffmpeg -i rainypet.mov -c:v libvpx-vp9 -pix_fmt yuva420p -auto-alt-ref 0 -lag-in-frames 0 -crf 30 -b:v 0 -an rainypet_fixed.webm

Or for higher quality (larger file size):

ffmpeg -i rainypet.mov -c:v libvpx-vp9 -pix_fmt yuva420p -auto-alt-ref 0 -lag-in-frames 0 -crf 20 -b:v 0 -an rainypet_fixed.webm

What these settings do:

  • -pix_fmt yuva420p - Ensures proper alpha channel encoding with correct chroma subsampling
  • -auto-alt-ref 0 - Disables alternate reference frames (can cause alpha/color issues)
  • -lag-in-frames 0 - Reduces encoding delay that can affect alpha channel
  • -crf 30 - Quality setting (lower = better quality, 20-30 is good range)
  • -b:v 0 - Uses CRF mode (constant rate factor) instead of bitrate

The rainbow artifacting is typically caused by:

  1. Incorrect chroma subsampling (4:4:4 → 4:2:0 conversion issues)
  2. Color space conversion problems
  3. VP9 encoding settings that don't properly handle alpha channels

This command should eliminate the rainbow artifacts while preserving transparency.


User (2025-12-26 23:26Z)

@pwsh (5-69) still busted. it's a problem in the original recode to webm, this re-recode can't get rid of the issue.


Agent (model default, mode Agent)


The artifacting was introduced during the initial encode, so re-encoding the WebM won't fix it. We need to encode from the original source with proper color space handling. Checking the source file and trying a better encoding approach:


Tool use: **run_terminal_cmd** • Run command: ffprobe -v error -select_streams v:0 -show_entries stream=codec_name,pix_fmt,color_space,color_primaries,color_trc -of default=noprint_wrappers=1 "\\hydra\Hydra\Creative\artsy\shoppers\2020\2020-08-13 rainynew\rainypet\rainypet.mov"
ffprobe -v error -select_streams v:0 -show_entries stream=codec_name,pix_fmt,color_space,color_primaries,color_trc -of default=noprint_wrappers=1 "\\hydra\Hydra\Creative\artsy\shoppers\2020\2020-08-13 rainynew\rainypet\rainypet.mov"
spawn C:\Program Files\PowerShell\7\pwsh.exe ENOENT


The source is CineForm (CFHD) with gbrap12le (12-bit RGBA). Converting RGB to YUV with chroma subsampling is likely causing the artifacting. Encoding from the original source with better color space handling:


Tool use: **write** • Edit file: \\hydra\Hydra\Creative\artsy\shoppers\2020\2020-08-13 rainynew\rainypet\encode_webm_fixed.bat

Chunk 1 Lines added: 27, lines removed: 1

@@ -1,1 +1,27 @@
- 
+ @echo off
+ REM Encode from original MOV to WebM with proper color space handling
+ REM This avoids rainbow artifacting by using 4:4:4 chroma and proper color conversion
+ 
+ ffmpeg -i rainypet.mov ^
+   -vf "format=yuva444p" ^
+   -c:v libvpx-vp9 ^
+   -pix_fmt yuva444p ^
+   -auto-alt-ref 0 ^
+   -lag-in-frames 0 ^
+   -crf 25 ^
+   -b:v 0 ^
+   -an ^
+   rainypet_4444.webm
+ 
+ REM Alternative: If yuva444p doesn't work, try with explicit color space conversion
+ REM ffmpeg -i rainypet.mov ^
+ REM   -vf "format=gbrap,scale=in_color_matrix=auto:out_color_matrix=bt709" ^
+ REM   -c:v libvpx-vp9 ^
+ REC   -pix_fmt yuva420p ^
+ REM   -auto-alt-ref 0 ^
+ REM   -lag-in-frames 0 ^
+ REM   -crf 25 ^
+ REM   -b:v 0 ^
+ REM   -an ^
+ REM   rainypet_420p.webm
+ 


Fixing a typo in the batch file:


Tool use: **read_file** • Read file: \\hydra\Hydra\Creative\artsy\shoppers\2020\2020-08-13 rainynew\rainypet\encode_webm_fixed.bat



Tool use: **search_replace** • Edit file: \\hydra\Hydra\Creative\artsy\shoppers\2020\2020-08-13 rainynew\rainypet\encode_webm_fixed.bat

Chunk 1 Lines added: 1, lines removed: 1

@@ -18,5 +18,5 @@
  REM   -vf "format=gbrap,scale=in_color_matrix=auto:out_color_matrix=bt709" ^
  REM   -c:v libvpx-vp9 ^
- REC   -pix_fmt yuva420p ^
+ REM   -pix_fmt yuva420p ^
  REM   -auto-alt-ref 0 ^
  REM   -lag-in-frames 0 ^


Providing a better solution. The issue is converting from RGB (gbrap12le) to YUV. Here are commands to try:


Tool use: **search_replace** • Edit file: \\hydra\Hydra\Creative\artsy\shoppers\2020\2020-08-13 rainynew\rainypet\encode_webm_fixed.bat

Chunk 1 Lines added: 2, lines removed: 1

@@ -1,6 +1,7 @@
  @echo off
  REM Encode from original MOV to WebM with proper color space handling
- REM This avoids rainbow artifacting by using 4:4:4 chroma and proper color conversion
+ REM This avoids rainbow artifacting by using 4:4:4 chroma (no subsampling)
  
+ echo Trying yuva444p (4:4:4 - no chroma subsampling)...
  ffmpeg -i rainypet.mov ^
    -vf "format=yuva444p" ^

Chunk 2 Lines added: 13, lines removed: 11

@@ -14,15 +15,17 @@
    rainypet_4444.webm
  
- REM Alternative: If yuva444p doesn't work, try with explicit color space conversion
- REM ffmpeg -i rainypet.mov ^
- REM   -vf "format=gbrap,scale=in_color_matrix=auto:out_color_matrix=bt709" ^
- REM   -c:v libvpx-vp9 ^
- REM   -pix_fmt yuva420p ^
- REM   -auto-alt-ref 0 ^
- REM   -lag-in-frames 0 ^
- REM   -crf 25 ^
- REM   -b:v 0 ^
- REM   -an ^
- REM   rainypet_420p.webm
+ if %errorlevel% neq 0 (
+   echo yuva444p failed, trying alternative with proper RGB to YUV conversion...
+   ffmpeg -i rainypet.mov ^
+     -vf "format=gbrap,format=yuva420p" ^
+     -c:v libvpx-vp9 ^
+     -pix_fmt yuva420p ^
+     -auto-alt-ref 0 ^
+     -lag-in-frames 0 ^
+     -crf 20 ^
+     -b:v 0 ^
+     -an ^
+     rainypet_420p.webm
+ )
  
  


The source is RGB (gbrap12le), and the RGB→YUV conversion is causing the artifacting. Run this command directly:

Try this command (uses 4:4:4 chroma - no subsampling):

ffmpeg -i rainypet.mov -vf "format=yuva444p" -c:v libvpx-vp9 -pix_fmt yuva444p -auto-alt-ref 0 -lag-in-frames 0 -crf 25 -b:v 0 -an rainypet_4444.webm

If that doesn't work or VP9 doesn't support yuva444p, try this (explicit RGB→YUV conversion):

ffmpeg -i rainypet.mov -vf "format=gbrap,format=yuva420p" -c:v libvpx-vp9 -pix_fmt yuva420p -auto-alt-ref 0 -lag-in-frames 0 -crf 20 -b:v 0 -an rainypet_420p.webm

Or try with explicit color space matrix:

ffmpeg -i rainypet.mov -vf "format=gbrap,scale=in_color_matrix=bt709:out_color_matrix=bt709,format=yuva420p" -c:v libvpx-vp9 -pix_fmt yuva420p -auto-alt-ref 0 -lag-in-frames 0 -crf 20 -b:v 0 -an rainypet_fixed.webm

The key differences:

  1. yuva444p avoids chroma subsampling (4:4:4 instead of 4:2:0)
  2. Explicit format conversion (format=gbrap,format=yuva420p) ensures proper RGB→YUV conversion
  3. Color matrix specification ensures correct color space handling

Start with the first command (yuva444p). If VP9 doesn't support it, use one of the alternatives. The rainbow artifacting is from improper chroma subsampling during RGB→YUV conversion, so these should fix it.


User (2025-12-26 23:26Z)

@pwsh (70-502) still broken.


Agent (model default, mode Agent)


VP9 only supports yuva420p (4:2:0), which can cause chroma artifacts. Trying AV1 (libaom-av1), which supports better formats, and a more explicit color space conversion:


Tool use: **write** • Edit file: \\hydra\Hydra\Creative\artsy\shoppers\2020\2020-08-13 rainynew\rainypet\encode_webm_av1.bat

Chunk 1 Lines added: 28, lines removed: 1

@@ -1,1 +1,28 @@
- 
+ @echo off
+ REM Try AV1 codec which has better alpha support
+ REM AV1 supports yuva420p and yuva444p
+ 
+ echo Trying AV1 with yuva420p...
+ ffmpeg -i rainypet.mov ^
+   -vf "format=gbrap,format=yuva420p" ^
+   -c:v libaom-av1 ^
+   -pix_fmt yuva420p ^
+   -crf 30 ^
+   -b:v 0 ^
+   -cpu-used 4 ^
+   -an ^
+   rainypet_av1_420.webm
+ 
+ if %errorlevel% neq 0 (
+   echo AV1 420p failed, trying 444p...
+   ffmpeg -i rainypet.mov ^
+     -vf "format=gbrap,format=yuva444p" ^
+     -c:v libaom-av1 ^
+     -pix_fmt yuva444p ^
+     -crf 30 ^
+     -b:v 0 ^
+     -cpu-used 4 ^
+     -an ^
+     rainypet_av1_444.webm
+ )
+ 

Tool use: **web_search** • Searched web `ffmpeg RGB to YUV conversion rainbow artifacting gbrap yuva420p color matrix fix` • **1** results
Title URL Chunk
Web Search Results I'm sorry to hear that the previous solutions didn't resolve the rainbow artifacting issue in your WebM file. This problem often arises from chroma subsampling during the conversion process, especially when handling videos with transparency.

Alternative Approach: Using FFmpeg for Transparent WebM Encoding

To ensure better control over the encoding process and potentially eliminate the artifacting, you can use FFmpeg directly. Here's how:

1. Install FFmpeg: If you haven't already, download and install FFmpeg from the official website: FFmpeg Downloads.

2. Open Command Prompt or Terminal: Navigate to the directory containing your source video file.

3. Run the Following Command:

bash<br/> ffmpeg -i input.mov -c:v libvpx-vp9 -pix_fmt yuva420p -b:v 0 -crf 30 -g 150 -auto-alt-ref 1 -metadata:s:v:0 alpha_mode="1" output.webm<br/>

Explanation of the Command:

- -i input.mov: Specifies your input file. Replace input.mov with the actual filename.

- -c:v libvpx-vp9: Sets the video codec to VP9, which supports transparency.

- -pix_fmt yuva420p: Specifies the pixel format with an alpha channel.

- -b:v 0 -crf 30: Sets the quality of the output. Adjust the CRF value (e.g., 20 for higher quality, 30 for lower) as needed.

- -g 150: Sets the GOP size, which can affect quality and file size.

- -auto-alt-ref 1: Enables the use of alternate reference frames, improving quality.

- -metadata:s:v:0 alpha_mode="1": Ensures the alpha channel is recognized in the output file.

- output.webm: Specifies the name of the output file.

Additional Tips:

- Avoid Chroma Subsampling Issues: Ensure that the pixel format (-pix_fmt yuva420p) is correctly set to handle transparency without introducing artifacts.

- Disable GPU Processing: If you're using software that utilizes GPU acceleration, consider disabling it, as GPU processing can sometimes introduce artifacts in videos with transparency.

By using FFmpeg with the above settings, you should achieve a transparent WebM file without the rainbow artifacting. If the issue persists, please provide more details about your source file and the exact steps you're following, so I can offer more targeted assistance.


Trying a more explicit color space conversion using the zscale filter for better RGB→YUV conversion:


Tool use: **write** • Edit file: \\hydra\Hydra\Creative\artsy\shoppers\2020\2020-08-13 rainynew\rainypet\encode_webm_fixed_colorspace.bat

Chunk 1 Lines added: 42, lines removed: 1

@@ -1,1 +1,42 @@
- 
+ @echo off
+ REM Fix rainbow artifacting with explicit color space conversion using zscale
+ REM The issue is RGB (gbrap12le) to YUV conversion - need proper color matrix
+ 
+ echo Method 1: Using zscale for proper RGB to YUV conversion...
+ ffmpeg -i rainypet.mov ^
+   -vf "zscale=matrixin=rgb:matrix=bt709,format=yuva420p" ^
+   -c:v libvpx-vp9 ^
+   -pix_fmt yuva420p ^
+   -auto-alt-ref 0 ^
+   -lag-in-frames 0 ^
+   -crf 20 ^
+   -b:v 0 ^
+   -an ^
+   rainypet_zscale.webm
+ 
+ echo.
+ echo Method 2: Two-step conversion with explicit color space...
+ ffmpeg -i rainypet.mov ^
+   -vf "format=gbrap,scale=in_color_matrix=bt709:out_color_matrix=bt709:in_range=full:out_range=full,format=yuva420p" ^
+   -c:v libvpx-vp9 ^
+   -pix_fmt yuva420p ^
+   -auto-alt-ref 0 ^
+   -lag-in-frames 0 ^
+   -crf 20 ^
+   -b:v 0 ^
+   -an ^
+   rainypet_2step.webm
+ 
+ echo.
+ echo Method 3: Using colorspace filter...
+ ffmpeg -i rainypet.mov ^
+   -vf "format=gbrap,colorspace=bt709:iall=bt709:fast=1,format=yuva420p" ^
+   -c:v libvpx-vp9 ^
+   -pix_fmt yuva420p ^
+   -auto-alt-ref 0 ^
+   -lag-in-frames 0 ^
+   -crf 20 ^
+   -b:v 0 ^
+   -an ^
+   rainypet_colorspace.webm
+ 


The rainbow artifacting is likely from incorrect RGB→YUV color range conversion. Your source is 12-bit RGB (gbrap12le), likely full range. Try these commands:

Method 1: Using zscale filter (best for color conversion):

ffmpeg -i rainypet.mov -vf "zscale=matrixin=rgb:matrix=bt709:rangein=full:range=full,format=yuva420p" -c:v libvpx-vp9 -pix_fmt yuva420p -auto-alt-ref 0 -lag-in-frames 0 -crf 20 -b:v 0 -an rainypet_zscale.webm

Method 2: Using colorspace filter with explicit range:

ffmpeg -i rainypet.mov -vf "format=gbrap,colorspace=bt709:iall=bt709:fast=1:range=pc,format=yuva420p" -c:v libvpx-vp9 -pix_fmt yuva420p -auto-alt-ref 0 -lag-in-frames 0 -crf 20 -b:v 0 -an rainypet_colorspace.webm

Method 3: Two-step with explicit range conversion:

ffmpeg -i rainypet.mov -vf "format=gbrap,scale=in_color_matrix=bt709:out_color_matrix=bt709:in_range=full:out_range=full,format=yuva420p" -c:v libvpx-vp9 -pix_fmt yuva420p -auto-alt-ref 0 -lag-in-frames 0 -crf 20 -b:v 0 -an rainypet_range.webm

The key is handling the color range (full vs limited). RGB sources are often full range, and the conversion must preserve that. Start with Method 1 (zscale) as it typically handles this best.

If these still show artifacts, the issue may be in Shutter Encoders settings. Check:

  • Color range settings (full vs limited)
  • Color space/color matrix settings
  • Disable any automatic color space conversion

Try Method 1 first and let me know if the artifacts persist.


User (2025-12-26 23:26Z)

@pwsh (503-552)


Agent (model default, mode Agent)


Fixing the zscale syntax. The matrix parameter format was incorrect. Providing corrected commands:


The string to replace was not found in the file.




Tool use: **read_file** • Read file: \\hydra\Hydra\Creative\artsy\shoppers\2020\2020-08-13 rainynew\rainypet\encode_webm_fixed_colorspace.bat



Tool use: **search_replace** • Edit file: \\hydra\Hydra\Creative\artsy\shoppers\2020\2020-08-13 rainynew\rainypet\encode_webm_fixed_colorspace.bat

Chunk 1 Lines added: 2, lines removed: 2

@@ -3,7 +3,7 @@
  REM The issue is RGB (gbrap12le) to YUV conversion - need proper color matrix
  
- echo Method 1: Using zscale for proper RGB to YUV conversion...
+ echo Method 1: Using colorspace filter with explicit range (PC/full range)...
  ffmpeg -i rainypet.mov ^
-   -vf "zscale=matrixin=rgb:matrix=bt709,format=yuva420p" ^
+   -vf "format=gbrap,colorspace=bt709:iall=bt709:fast=1:range=pc,format=yuva420p" ^
    -c:v libvpx-vp9 ^
    -pix_fmt yuva420p ^

Chunk 2 Lines added: 1, lines removed: 1

@@ -13,5 +13,5 @@
    -b:v 0 ^
    -an ^
-   rainypet_zscale.webm
+   rainypet_colorspace.webm
  
  echo.

Tool use: **search_replace** • Edit file: \\hydra\Hydra\Creative\artsy\shoppers\2020\2020-08-13 rainynew\rainypet\encode_webm_fixed_colorspace.bat

Chunk 1 Lines added: 15, lines removed: 2

@@ -29,7 +29,20 @@
  
  echo.
- echo Method 3: Using colorspace filter...
+ echo Method 3: Using zscale with correct syntax (RGB-&gt;YUV via format first)...
+ ffmpeg -i rainypet.mov ^
+   -vf "format=gbrap,format=yuva444p,zscale=matrix=1:range=full,format=yuva420p" ^
+   -c:v libvpx-vp9 ^
+   -pix_fmt yuva420p ^
+   -auto-alt-ref 0 ^
+   -lag-in-frames 0 ^
+   -crf 20 ^
+   -b:v 0 ^
+   -an ^
+   rainypet_zscale.webm
+ 
+ echo.
+ echo Method 4: Simple format chain (RGB-&gt;444-&gt;420)...
  ffmpeg -i rainypet.mov ^
-   -vf "format=gbrap,colorspace=bt709:iall=bt709:fast=1,format=yuva420p" ^
+   -vf "format=gbrap,format=yuva444p,format=yuva420p" ^
    -c:v libvpx-vp9 ^
    -pix_fmt yuva420p ^

Chunk 2 Lines added: 1, lines removed: 1

@@ -39,5 +52,5 @@
    -b:v 0 ^
    -an ^
-   rainypet_colorspace.webm
+   rainypet_simple.webm
  
  


Fixed the zscale syntax. Try these corrected commands:

Method 1: Colorspace filter with explicit full range (recommended):

ffmpeg -i rainypet.mov -vf "format=gbrap,colorspace=bt709:iall=bt709:fast=1:range=pc,format=yuva420p" -c:v libvpx-vp9 -pix_fmt yuva420p -auto-alt-ref 0 -lag-in-frames 0 -crf 20 -b:v 0 -an rainypet_colorspace.webm

Method 2: Scale filter with explicit color matrix and range:

ffmpeg -i rainypet.mov -vf "format=gbrap,scale=in_color_matrix=bt709:out_color_matrix=bt709:in_range=full:out_range=full,format=yuva420p" -c:v libvpx-vp9 -pix_fmt yuva420p -auto-alt-ref 0 -lag-in-frames 0 -crf 20 -b:v 0 -an rainypet_scale.webm

Method 3: Simple format chain (RGB→444→420):

ffmpeg -i rainypet.mov -vf "format=gbrap,format=yuva444p,format=yuva420p" -c:v libvpx-vp9 -pix_fmt yuva420p -auto-alt-ref 0 -lag-in-frames 0 -crf 20 -b:v 0 -an rainypet_simple.webm

The zscale error was due to invalid syntax. The colorspace filter (Method 1) is the most reliable for RGB→YUV conversion with proper range handling. The range=pc parameter ensures full range RGB is handled correctly.

Try Method 1 first; it should eliminate the rainbow artifacting by properly converting the RGB color space to YUV.


User (2025-12-26 23:26Z)

@pwsh (553-750) they're all broken


Agent (model default, mode Agent)


The colorspace filter warning "Input range not set, assuming tv/mpeg" indicates it isn't detecting the input range. Trying explicit input range settings and an alternative approach:


Tool use: **write** • Edit file: \\hydra\Hydra\Creative\artsy\shoppers\2020\2020-08-13 rainynew\rainypet\encode_webm_final_fix.bat

Chunk 1 Lines added: 55, lines removed: 1

@@ -1,1 +1,55 @@
- 
+ @echo off
+ REM Final attempt - explicit input range specification and AV1 codec option
+ 
+ echo Method 1: Colorspace with explicit input range (pc/full)...
+ ffmpeg -i rainypet.mov ^
+   -vf "format=gbrap,colorspace=bt709:iall=bt709:fast=1:rangein=pc:range=pc,format=yuva420p" ^
+   -c:v libvpx-vp9 ^
+   -pix_fmt yuva420p ^
+   -auto-alt-ref 0 ^
+   -lag-in-frames 0 ^
+   -crf 18 ^
+   -b:v 0 ^
+   -an ^
+   rainypet_explicit_range.webm
+ 
+ echo.
+ echo Method 2: Using swscale directly with explicit parameters...
+ ffmpeg -i rainypet.mov ^
+   -vf "format=gbrap,scale=flags=accurate_rnd+full_chroma_int:in_color_matrix=bt709:out_color_matrix=bt709:in_range=full:out_range=full,format=yuva420p" ^
+   -c:v libvpx-vp9 ^
+   -pix_fmt yuva420p ^
+   -auto-alt-ref 0 ^
+   -lag-in-frames 0 ^
+   -crf 18 ^
+   -b:v 0 ^
+   -an ^
+   rainypet_swscale.webm
+ 
+ echo.
+ echo Method 3: Try AV1 codec (supports better formats, may avoid artifacts)...
+ ffmpeg -i rainypet.mov ^
+   -vf "format=gbrap,colorspace=bt709:iall=bt709:fast=1:rangein=pc:range=pc,format=yuva420p" ^
+   -c:v libaom-av1 ^
+   -pix_fmt yuva420p ^
+   -crf 30 ^
+   -b:v 0 ^
+   -cpu-used 4 ^
+   -an ^
+   rainypet_av1.webm
+ 
+ echo.
+ echo Method 4: Higher quality VP9 with better settings...
+ ffmpeg -i rainypet.mov ^
+   -vf "format=gbrap,colorspace=bt709:iall=bt709:fast=1:rangein=pc:range=pc,format=yuva420p" ^
+   -c:v libvpx-vp9 ^
+   -pix_fmt yuva420p ^
+   -auto-alt-ref 0 ^
+   -lag-in-frames 0 ^
+   -crf 15 ^
+   -b:v 0 ^
+   -row-mt 1 ^
+   -tiles 2x2 ^
+   -an ^
+   rainypet_hq.webm
+ 

Tool use: **web_search** • Searched web `VP9 WebM rainbow artifacting chroma subsampling RGB source fix yuva420p` • **1** results
Title URL Chunk
Web Search Results I'm sorry to hear that the previous solutions didn't resolve the rainbow artifacting issue in your transparent WebM exports using Shutter Encoder. This artifacting is often due to chroma subsampling and color space conversion problems during the encoding process.

Potential Causes:

1. Chroma Subsampling: VP9, the codec used for WebM, typically employs 4:2:0 chroma subsampling, which can lead to color artifacts, especially in areas with sharp color transitions.

2. Color Space Conversion: Improper conversion from RGB to YUV color spaces can introduce artifacts if not handled correctly.

Recommended Solutions:

1. Disable GPU Processing in Shutter Encoder:

Some users have reported that disabling GPU decoding and filtering in Shutter Encoder helps preserve transparency and reduces artifacts. (community.adobe.com)

- Steps:
- Open Shutter Encoder.
- Go to the "Preferences" or "Settings" menu.
- Locate options related to GPU processing, decoding, or filtering.
- Disable these options.
- Restart Shutter Encoder and attempt the conversion again.

2. Use Alternative Encoding Tools:

If the issue persists, consider using other encoding tools that offer more control over color space and chroma subsampling settings. For instance, FFmpeg provides detailed options for handling color spaces and subsampling.

- FFmpeg Command Example:

bash<br/> ffmpeg -i input.mov -c:v libvpx-vp9 -pix_fmt yuva420p -b:v 0 -crf 30 -g 150 output.webm<br/>

- -pix_fmt yuva420p ensures the use of a pixel format that supports transparency.
- Adjust -crf (constant rate factor) for quality; lower values yield higher quality.
- -g sets the GOP (Group of Pictures) size; adjust as needed.

Additional Considerations:

- Software Updates: Ensure that you're using the latest version of Shutter Encoder, as updates may address known issues.

- Community Support: Engage with the Shutter Encoder community or forums for insights and potential solutions from other users who might have faced similar issues.

If these steps don't resolve the artifacting, providing more details about your source file's specifications and the exact settings used during encoding can help in diagnosing the problem more accurately.


The colorspace filter isn't detecting the input range. Try these with explicit input range settings:

Method 1: Explicit input range (pc/full range):

ffmpeg -i rainypet.mov -vf "format=gbrap,colorspace=bt709:iall=bt709:fast=1:rangein=pc:range=pc,format=yuva420p" -c:v libvpx-vp9 -pix_fmt yuva420p -auto-alt-ref 0 -lag-in-frames 0 -crf 18 -b:v 0 -an rainypet_explicit_range.webm

Method 2: Using swscale with accurate rounding:

ffmpeg -i rainypet.mov -vf "format=gbrap,scale=flags=accurate_rnd+full_chroma_int:in_color_matrix=bt709:out_color_matrix=bt709:in_range=full:out_range=full,format=yuva420p" -c:v libvpx-vp9 -pix_fmt yuva420p -auto-alt-ref 0 -lag-in-frames 0 -crf 18 -b:v 0 -an rainypet_swscale.webm

Method 3: Try AV1 codec (may handle RGB→YUV better):

ffmpeg -i rainypet.mov -vf "format=gbrap,colorspace=bt709:iall=bt709:fast=1:rangein=pc:range=pc,format=yuva420p" -c:v libaom-av1 -pix_fmt yuva420p -crf 30 -b:v 0 -cpu-used 4 -an rainypet_av1.webm

If these still show artifacts, VP9's 4:2:0 chroma subsampling may be the limitation. Options:

  1. Use a different format (e.g., QuickTime with ProRes 4444 or PNG codec)
  2. Accept some artifacts with VP9
  3. Try a higher bitrate/quality setting

Try Method 1 first (explicit rangein=pc). If artifacts persist, VP9's 4:2:0 may be the cause.


User (2025-12-26 23:26Z)

@pwsh (751-798)


Agent (model default, mode Agent)


The colorspace filter doesn't support rangein. Trying a different approach with correct syntax:


Tool use: **write** • Edit file: \\hydra\Hydra\Creative\artsy\shoppers\2020\2020-08-13 rainynew\rainypet\encode_webm_corrected.bat

Chunk 1 Lines added: 56, lines removed: 1

@@ -1,1 +1,56 @@
- 
+ @echo off
+ REM Corrected commands - colorspace filter doesn't support rangein
+ REM Need to use scale filter or format chain for range conversion
+ 
+ echo Method 1: Using scale filter for RGB to YUV with explicit range...
+ ffmpeg -i rainypet.mov ^
+   -vf "format=gbrap,scale=in_color_matrix=bt709:out_color_matrix=bt709:in_range=full:out_range=full:flags=accurate_rnd+full_chroma_int,format=yuva420p" ^
+   -c:v libvpx-vp9 ^
+   -pix_fmt yuva420p ^
+   -auto-alt-ref 0 ^
+   -lag-in-frames 0 ^
+   -crf 18 ^
+   -b:v 0 ^
+   -an ^
+   rainypet_scale_range.webm
+ 
+ echo.
+ echo Method 2: Convert RGB to YUV444 first, then subsample (may preserve quality better)...
+ ffmpeg -i rainypet.mov ^
+   -vf "format=gbrap,scale=in_color_matrix=bt709:out_color_matrix=bt709:in_range=full:out_range=full:flags=accurate_rnd+full_chroma_int,format=yuva444p,format=yuva420p" ^
+   -c:v libvpx-vp9 ^
+   -pix_fmt yuva420p ^
+   -auto-alt-ref 0 ^
+   -lag-in-frames 0 ^
+   -crf 18 ^
+   -b:v 0 ^
+   -an ^
+   rainypet_444_420.webm
+ 
+ echo.
+ echo Method 3: Try AV1 which may handle RGB sources better...
+ ffmpeg -i rainypet.mov ^
+   -vf "format=gbrap,scale=in_color_matrix=bt709:out_color_matrix=bt709:in_range=full:out_range=full:flags=accurate_rnd+full_chroma_int,format=yuva420p" ^
+   -c:v libaom-av1 ^
+   -pix_fmt yuva420p ^
+   -crf 30 ^
+   -b:v 0 ^
+   -cpu-used 4 ^
+   -an ^
+   rainypet_av1.webm
+ 
+ echo.
+ echo Method 4: Very high quality VP9 (may reduce artifacts)...
+ ffmpeg -i rainypet.mov ^
+   -vf "format=gbrap,scale=in_color_matrix=bt709:out_color_matrix=bt709:in_range=full:out_range=full:flags=accurate_rnd+full_chroma_int,format=yuva420p" ^
+   -c:v libvpx-vp9 ^
+   -pix_fmt yuva420p ^
+   -auto-alt-ref 0 ^
+   -lag-in-frames 0 ^
+   -crf 10 ^
+   -b:v 0 ^
+   -row-mt 1 ^
+   -tiles 2x2 ^
+   -an ^
+   rainypet_vhq.webm
+ 


The colorspace filter doesn't support rangein. Use these corrected commands:

Method 1: Scale filter with explicit range conversion (recommended):

ffmpeg -i rainypet.mov -vf "format=gbrap,scale=in_color_matrix=bt709:out_color_matrix=bt709:in_range=full:out_range=full:flags=accurate_rnd+full_chroma_int,format=yuva420p" -c:v libvpx-vp9 -pix_fmt yuva420p -auto-alt-ref 0 -lag-in-frames 0 -crf 18 -b:v 0 -an rainypet_scale_range.webm

Method 2: RGB→YUV444→YUV420 (may preserve quality better):

ffmpeg -i rainypet.mov -vf "format=gbrap,scale=in_color_matrix=bt709:out_color_matrix=bt709:in_range=full:out_range=full:flags=accurate_rnd+full_chroma_int,format=yuva444p,format=yuva420p" -c:v libvpx-vp9 -pix_fmt yuva420p -auto-alt-ref 0 -lag-in-frames 0 -crf 18 -b:v 0 -an rainypet_444_420.webm

Method 3: Try AV1 codec:

ffmpeg -i rainypet.mov -vf "format=gbrap,scale=in_color_matrix=bt709:out_color_matrix=bt709:in_range=full:out_range=full:flags=accurate_rnd+full_chroma_int,format=yuva420p" -c:v libaom-av1 -pix_fmt yuva420p -crf 30 -b:v 0 -cpu-used 4 -an rainypet_av1.webm

The key changes:

  • Using scale filter with explicit in_range=full:out_range=full parameters
  • Adding flags=accurate_rnd+full_chroma_int for better chroma handling
  • Method 2 converts to 444 first, then subsamples to 420 (may reduce artifacts)

Try Method 1 first. If artifacts persist, it may be a limitation of VP9's 4:2:0 chroma subsampling with RGB sources. In that case, consider AV1 (Method 3) or a different format.


User (2025-12-26 23:26Z)

oh, they've been fine all along, it's just VLC can't read the codec properly.


Agent (model default, mode Agent)


The rainbow artifacting was from VLCs VP9 alpha decoding, not the encodes. This is a known VLC issue with VP9 alpha in WebM.

To verify the files are correct, try:

  • Chrome/Edge (good VP9 alpha support)
  • Firefox (good VP9 alpha support)
  • MPV (better VP9 alpha support than VLC)
  • PotPlayer (Windows)

Your WebM files are likely fine. The encodes with proper color space conversion should work in browsers and other players that handle VP9 alpha correctly.

If you need to test in VLC, you could try updating VLC, but browsers are the most reliable for WebM with alpha.