问题描述
我想使用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
。