如何在保留透明度的同时修剪webm视频

问题描述

我想使用ffmpeg修剪透明的webm视频。这是该视频的ffprobe结果:

Input #0,matroska,webm,from 'template.webm':
  Metadata:
    ENCODER         : Lavf58.29.100
  Duration: 00:00:05.24,start: -0.002000,bitrate: 2856 kb/s
    Stream #0:0: Video: vp8,yuv420p(progressive),1573x900,SAR 1:1 DAR 1573:900,30 fps,30 tbr,1k tbn,1k tbc (default)
    Metadata:
      ALPHA_MODE      : 1
      ENCODER         : Lavc58.54.100 libvpx
      DURATION        : 00:00:05.240000000
    Stream #0:1: Audio: opus,48000 Hz,mono,fltp
    Metadata:
      ENCODER         : Lavc58.54.100 libopus
      DURATION        : 00:00:05.241000000

我尝试过

ffmpeg -i template.webm -ss 1 -to 3 -c copy trimmed.webm

但是修整后的视频没有在命令中定义的确切时间开始(或有时结束),因此我尝试使用libvpx重新编码视频

ffmpeg -i template.webm -ss 1 -to 3 -c:v libvpx -c:a copy -crf 30 -b:v 0 trimmed.webm

解决了时序问题,但是这导致输出视频的透明度丧失。这是ffprobe:

Input #0,from 'trimmed.webm':
  Metadata:
    ENCODER         : Lavf57.83.100
  Duration: 00:00:02.00,start: -0.001000,bitrate: 1395 kb/s
    Stream #0:0: Video: vp8,1k tbc (default)
    Metadata:
      ALPHA_MODE      : 1
      ENCODER         : Lavc57.107.100 libvpx
      DURATION        : 00:00:02.000000000
    Stream #0:1: Audio: opus,fltp
    Metadata:
      ENCODER         : Lavc58.54.100 libopus
      DURATION        : 00:00:02.001000000

如何在保留透明度的同时修剪视频?而且,快速解决方案将非常有帮助。

解决方法

本机内置FFmpeg VP8解码器尚不支持alpha /透明度。使用libvpx进行解码:

ffmpeg -c:v libvpx -i template.webm -ss 1 -to 3 -c:v libvpx -c:a copy -crf 30 -b:v 0 trimmed.webm

如果出现Transparency encoding with auto_alt_ref does not work错误,则添加-auto-alt-ref 0输出选项或将-c:v libvpx输出选项更改为-c:v libvpx-vp9