Closed6

webmをffmpegで再変換する時にalphaが消えてしまう

tsururintsururin

nodeのfluent-ffmpegを使ってwebmの動画サイズを小さくするプログラムを作っていた

ffmpeg("from.webm").size("50%").save("to.webm");

できた動画を見てみるとアルファチャンネルが消えていた

tsururintsururin

上記の結果実行されるコマンドを見てみる

ffmpeg("from.webm").size("50%").on("start", (cmd) => console.log(cmd)).save("to.webm");

結果

ffmpeg -i from.webm -y -filter:v scale=w=trunc(iw*0.5/2)*2:h=trunc(ih*0.5/2)*2 to.webm
tsururintsururin

上記をターミナルで実行してログを見てみる

...
Input #0, matroska,webm, from 'from.webm':
  Metadata:
    encoder         : libwebm-0.2.1.0
    creation_time   : 2023-03-24T21:36:59.000000Z
  Duration: 00:00:02.00, start: 0.000000, bitrate: 877 kb/s
  Stream #0:0(eng): Video: vp9 (Profile 0), yuv420p(tv), 1920x1080, SAR 1:1 DAR 16:9, 30 fps, 30 tbr, 1k tbn (default)
    Metadata:
      alpha_mode      : 1
Stream mapping:
  Stream #0:0 -> #0:0 (vp9 (native) -> vp9 (libvpx-vp9))
...

どうも入力がyuv420pと認識されるようなのでyuva420pと認識させたい

tsururintsururin

やってみる

ffmpeg -c:v libvpx-vp9 -i from.webm -y -filter:v scale=w=trunc(iw*0.5/2)*2:h=trunc(ih*0.5/2)*2 to.webm
Input #0, matroska,webm, from 'from.webm':
  Metadata:
    encoder         : libwebm-0.2.1.0
    creation_time   : 2023-03-24T21:36:59.000000Z
  Duration: 00:00:02.00, start: 0.000000, bitrate: 877 kb/s
  Stream #0:0(eng): Video: vp9 (Profile 0), yuva420p(tv), 1920x1080, SAR 1:1 DAR 16:9, 30 fps, 30 tbr, 1k tbn (default)
    Metadata:
      alpha_mode      : 1
[libvpx-vp9 @ 0x124605de0] v1.12.0
Stream mapping:
  Stream #0:0 -> #0:0 (vp9 (libvpx-vp9) -> vp9 (libvpx-vp9))

yuva420pになった!

無事アルファチャンネルを維持したまま変換できました

このスクラップは2023/07/21にクローズされました