首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在保持alpha通道的同时使用ffmpeg进行AVI压缩,以便在Adobe Premiere中使用

在保持alpha通道的同时使用ffmpeg进行AVI压缩,以便在Adobe Premiere中使用
EN

Stack Overflow用户
提问于 2020-12-10 06:51:38
回答 2查看 627关注 0票数 0

当涉及到处理视频转换/编码时,我是一个新手,但我花了几天的时间试图弄清楚,如果ffmpeg或任何其他方法,能够压缩一个有rgb+a的.avi。我已经能够得到一些文件,当在VLC中播放时,似乎可以工作,但它们不会加载到Adobe Premiere中,以验证alpha是否被维护,我假设这是一个编解码器问题和/或像素格式问题,但到目前为止,我还不能确定它。

此外,我不确定用alpha压缩.avi是否明智,因为它可能会导致压缩的质量问题。一些质量损失是可以接受的,如果这意味着减少文件大小。

我的目标是将一个avi文件转换成一个较小的视频文件,这不是几GB的大小。目前,我有大约8秒的透明文件,大小约为2 2GB。简单地调整比特率并没有做到这一点,因为这似乎消除了alpha通道,我最终使用的是带有白色背景的RGB。我已经尝试使用PNG编解码器,具有各种不同的像素格式。这会生成可以在VLC中打开的文件,但不能在Adobe Premiere中打开。我怀疑这与编解码器有关,但我不知道它是什么。

现在,这似乎是不可能的。以下是我尝试过的一些示例:

ffmpeg -i "input.avi" -map 0 -c:v png -c:a copy "Compressed.avi"

--这只会创建一个在vlc中打开的文件,而不是premiere

ffmpeg.exe -i "input.avi" -vcodec png -b:v 64k -pix_fmt rgb32 "Compressed.avi"

--这和上面做的一样,我在这个list上尝试了每种像素格式,但都没有成功。

ffmpeg.exe -i "input.avi" -b:v 64k -pix_fmt bgr32 "Compressed.avi"

--这只会导致一个白色背景的avi,杀死alpha。

这是我最接近的一次。比特率的值可能是任意的,因为我也尝试过修改比特率和不修改比特率。我不知道是否有办法让Premiere识别使用PNG编解码器在VLC中打开的文件,或者我是否遗漏了什么,或者这是否完全不可能。输出也不需要是.avi,只要它在Premiere中打开即可。

--编辑:在评论中请求,从ffmpeg -i input.avi输出

代码语言:javascript
运行
复制
ffmpeg version 4.3.1-2020-11-19-essentials_build-www.gyan.dev Copyright (c) 2000-2020 the FFmpeg developers
  built with gcc 10.2.0 (Rev5, 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-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-libass --enable-libfreetype --enable-libfribidi --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-llvm --enable-cuvid --enable-ffnvcodec --enable-nvdec --enable-nvenc --enable-d3d11va --enable-dxva2 --enable-libmfx --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      56. 51.100 / 56. 51.100
  libavcodec     58. 91.100 / 58. 91.100
  libavformat    58. 45.100 / 58. 45.100
  libavdevice    58. 10.100 / 58. 10.100
  libavfilter     7. 85.100 /  7. 85.100
  libswscale      5.  7.100 /  5.  7.100
  libswresample   3.  7.100 /  3.  7.100
  libpostproc    55.  7.100 / 55.  7.100
Input #0, avi, from 'input.avi':
  Metadata:
    date            : 2020-12-09T20:27:57.080928
  Duration: 00:00:10.00, start: 0.000000, bitrate: 1990700 kb/s
    Stream #0:0: Video: rawvideo, bgra, 1920x1080, 1997313 kb/s, 30 fps, 30 tbr, 30 tbn, 30 tbc
At least one output file must be specified

--编辑2:从评论中尝试这个,结果是一个保留了alpha的.mov,但它从文本投影中提取了白色像素值,从而产生了外部发光效果:

ffmpeg -i "input.avi" -map 0 -pix_fmt rgba -c:v png -c:a copy "compressed.mov"

我也尝试了以下方法,除了投影中类似的透明度问题外,我还得到了丢弃的帧:

ffmpeg -i "input.avi" -map 0 -pix_fmt rgba -c:v qtrle -c:a copy "compressed.mov"

EN

回答 2

Stack Overflow用户

发布于 2020-12-11 12:45:44

保存到MOV。Premiere可能对AVI文件中的编解码器很挑剔。

代码语言:javascript
运行
复制
ffmpeg -i "input.avi" -map 0 -pix_fmt rgba -c:v png -c:a copy "Compressed.mov"
票数 1
EN

Stack Overflow用户

发布于 2020-12-13 01:47:39

所以,更新这个,我找到了一个不同的解决方案,使用Adobe Media Encoder,这不是很理想,但它可以完成工作。如果可能的话,我仍然想使用ffmpeg,因为对于简单的视频自动化来说,它的资源消耗会更少。

Adobe Media Encoder的解决方案是使用动画编解码器导出为quicktime mov。设置:

Quicktime w/ alpha settings

这是可行的,但不是理想的解决方案,因为它需要Adobe Media Encoder。拥有一个占用较少资源的解决方案将是非常棒的,但至少有这一点,而且它确实可以很好地压缩.avi文件,同时很好地保持透明度和半不透明效果。

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

https://stackoverflow.com/questions/65226097

复制
相关文章

相似问题

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