首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不能用alpha到ivf容器编码vp9视频

不能用alpha到ivf容器编码vp9视频
EN

Stack Overflow用户
提问于 2022-07-27 18:31:24
回答 1查看 108关注 0票数 0

我正在尝试将一个vp8/webm视频透明地转换成vp9和ivf容器。我可以使用以下命令将视频编码为vp9到webm容器中,该命令正确地生成具有透明度的vp9视频:

代码语言:javascript
复制
ffmpeg -c:v libvpx -i dancer1.webm -c:v libvpx-vp9 dancer_vp9.webm

因此,从根本上说,迫使libvpx编码器而不是ffmpeg本地编码器支持alpha。

然而,如果我尝试使用ivf容器而不是webm,则生成的视频不具有透明度:

代码语言:javascript
复制
ffmpeg -c:v libvpx -i dancer1.webm -c:v libvpx-vp9 dancer_vp9.ivf

当使用VLC时,当使用ffmpeg (ffmpeg -c:v libvpx-vp9 -i dancer_vp9.ivf -vf "select=eq(n\,0)" frame.png)将帧转换为PNG时,以及在Chrome中播放时(使用webcodecs ),都没有透明度。试管婴儿不支持α通道还是我做错了什么?

我还尝试将使用alpha的流从webm容器复制到ivf (ffmpeg -i dancer1_vp9.webm -c copy dancer1_vp9_copy.ivf),这会产生相同的结果,没有透明度。

奇怪的是,如果我强制或不强制libvpx解码器(这是支持透明度所必需的,ffmpeg原生解码器似乎只是丢弃alpha通道)在读取vp9 8/vp9 9 webm视频时,它在输出到ivf容器时会产生相同的结果,而当输出到webm容器时,生成的视频在使用libvpx解码器时具有alpha值,而在使用本机ffmepg解码器时则不会产生相同的结果。

创建的ivf文件的of探测输出:

代码语言:javascript
复制
ffprobe version 5.0.1 Copyright (c) 2007-2022 the FFmpeg developers
  built with Apple clang version 13.1.6 (clang-1316.0.21.2.5)
  configuration: --prefix=/opt/homebrew/Cellar/ffmpeg/5.0.1_3 --enable-shared --enable-pthreads --enable-version3 --cc=clang --host-cflags= --host-ldflags= --enable-ffplay --enable-gnutls --enable-gpl --enable-libaom --enable-libbluray --enable-libdav1d --enable-libmp3lame --enable-libopus --enable-librav1e --enable-librist --enable-librubberband --enable-libsnappy --enable-libsrt --enable-libtesseract --enable-libtheora --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libxvid --enable-lzma --enable-libfontconfig --enable-libfreetype --enable-frei0r --enable-libass --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libspeex --enable-libsoxr --enable-libzmq --enable-libzimg --disable-libjack --disable-indev=jack --enable-videotoolbox --enable-neon
  libavutil      57. 17.100 / 57. 17.100
  libavcodec     59. 18.100 / 59. 18.100
  libavformat    59. 16.100 / 59. 16.100
  libavdevice    59.  4.100 / 59.  4.100
  libavfilter     8. 24.100 /  8. 24.100
  libswscale      6.  4.100 /  6.  4.100
  libswresample   4.  3.100 /  4.  3.100
  libpostproc    56.  3.100 / 56.  3.100
Input #0, ivf, from 'dancer_vp9.ivf':
  Duration: 00:01:02.87, start: 0.000000, bitrate: 249 kb/s
  Stream #0:0: Video: vp9 (Profile 0) (VP90 / 0x30395056), yuv420p(tv), 640x360, 30 tbr, 30 tbn
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-28 04:06:37

alpha组件由vpx编码器单独发出,并存储在容器中的主数据包旁边。只有Matroska / WebM支持编写这方面的数据。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73142990

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档