- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个带有一个用 VP9 (libvpx-vp9) 编码的视频流的 WebM 文件。
我编写了一个 C++ 程序来从视频流中提取帧并将它们保存为 PNG。除了生成的 PNG 缺少 alpha 之外,这工作正常。
如果我使用 FFMPEG 从同一个 WebM 文件中提取帧,则生成的 PNG 确实包含 alpha。这是 FFMPEG 的输出:
$ ffmpeg -c:v libvpx-vp9 -i temp/anim.webm temp/output-%3d.png
[libvpx-vp9 @ 0000024732b106c0] v1.10.0-rc1-11-gcb0d8ce31
Last message repeated 1 times
Input #0, matroska,webm, from 'temp/anim.webm':
Metadata:
ENCODER : Lavf58.45.100
Duration: 00:00:04.04, start: 0.000000, bitrate: 112 kb/s
Stream #0:0: Video: vp9 (Profile 0), yuva420p(tv), 640x480, SAR 1:1 DAR 4:3, 25 fps, 25 tbr, 1k tbn, 1k tbc (default)
Metadata:
alpha_mode : 1
ENCODER : Lavc58.91.100 libvpx-vp9
DURATION : 00:00:04.040000000
FFMPEG 将流格式标识为 yuva420p。
Input #0, matroska,webm, from 'temp/anim.webm':
Metadata:
ENCODER : Lavf58.45.100
Duration: 00:00:04.04, start: 0.000000, bitrate: 112 kb/s
Stream #0:0: Video: vp9 (Profile 0), yuv420p(tv), 640x480, SAR 1:1 DAR 4:3, 25 fps, 25 tbr, 1k tbn, 1k tbc (default)
Metadata:
alpha_mode : 1
ENCODER : Lavc58.91.100 libvpx-vp9
DURATION : 00:00:04.040000000
请注意,检测到的流格式是 yuv420p(缺少 alpha)。
auto result = avformat_open_input(&formatContext, fileName.c_str(), nullptr, nullptr);
auto result = avformat_find_stream_info(formatContext, nullptr);
streamIndex = av_find_best_stream(formatContext, mediaType, -1, -1, nullptr, 0);
auto stream = formatContext->streams[streamIndex];
const auto codecIdentifier{ AV_CODEC_ID_VP9 };
auto decoder = avcodec_find_decoder(codecIdentifier);
pCodecContext = avcodec_alloc_context3(decoder);
auto result = avcodec_open2(pCodecContext, decoder, &options);
// AV_PIX_FMT_YUV420P - missing alpha
auto pixelFormat = pCodecContext->pix_fmt;
Gyan 指出了问题所在。这是更正后的代码:
In case anybody else runs into this issue in the future here is the code (error handling omitted):
auto formatContext = avformat_alloc_context();
formatContext->video_codec_id = AV_CODEC_ID_VP9;
const auto decoder = avcodec_find_decoder_by_name("libvpx-vp9");
formatContext->video_codec = decoder;
avformat_open_input(&formatContext, fileName.c_str(), nullptr, nullptr);
avformat_find_stream_info(formatContext.get(), nullptr);
for (unsigned int streamIndex = 0; streamIndex < formatContext->nb_streams; ++streamIndex) {
// Displayed the stream format as yuva420p (contains alpha)
av_dump_format(formatContext, static_cast<int>(streamIndex), fileName.toStdString().c_str(), 0);
}
```
Thanks,
最佳答案
就像您的 ffmpeg 命令一样,您必须强制使用 vpx 解码器。
利用
auto decoder = avcodec_find_decoder_by_name("libvpx-vp9");
关于ffmpeg - 有没有办法强制 FFMPEG 从使用 libvpx-vp9 编码的 WebM 视频中解码带有 alpha 的视频流?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66702932/
当我运行时 ffmpeg -y -i test.mov -threads 8 -f webm -aspect 16:9 -vcodec libvpx -deinterlace -g 120 -leve
我有以下 ffserver.conf 配置: Port 8090 # Port to bind the server to BindAddress 0.0.0
在我的 jni 目录中,我运行以下命令: $ ./libvpx/configure --target=armv7-android-gcc --disable-examples --sdk-path=/
我正尝试按照此处提到的步骤为 Android 构建 CSipSimple https://sourceforge.net/p/csipsimple/wiki/HowToBuild/?version=1
我已经使用 MSYS(对于 MinGW)构建了 libvpx.a 和 header 。当我尝试编译 example 时出现大量对 vpx 成员的 undefined reference : g++ -
我正在尝试将 libvpx 构建为静态库,以便稍后在 FFmpeg 构建中使用,但我遇到了麻烦。我使用的libvpx版本是1.6.0。 这是我的配置: ./configure --prefix=/ho
FFMpeg 本周更新,导致构建中断。 我的选择是: 将 ffmpeg 固定到以前的版本?如果是这样,我如何固定到当前版本之前的版本? 更新python dockerfile版本 输出: Step 8
我使用以下命令安装 libvorbis 和 libvpx。 yum install libvpx yum install libvorbis 请帮我启用这些模块。我正在使用centos 7服务器。 最
我尝试使用 ./configure --target=x86-win32-gcc --enable-static-msvcrt --prefix=/MinGW 在 MinGW 上编译 libvpx 并
我正在我的 64 位 Ubuntu 14 机器上编译 FFMPEG。一切都编译得很好,除了 libvpx 库,它不断抛出错误: [AS] vp9/common/x86/vp9_subpixel_8t_
已关闭。这个问题是 off-topic 。目前不接受答案。 想要改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 已关闭10 年前。 Improve th
我正在尝试使用 ./configure --target=x86-win32-gcc --enable-static-msvcrt --prefix=/MinGW 在 MinGW 上编译 libvpx
需要一些关于在 Windows 上启用 libvpx 编译 ffmpeg 的信息。这是我遵循的步骤和我得到的错误 在 windows 上安装 msys2 并安装所需的包(git、pkg-config、
我使用的命令是: C:\cmd\ffmpeg\bin\ffmpeg.exe -i "C:\Users\user\Dropbox\Workspace - C#\SnowflakeGenerator\ou
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题? Update the question所以它是on-topic对于堆栈溢出。 9年前关闭。 Improve this que
我需要添加到 android 项目原子处理器支持。使用参数在 x86 下配置和构建 libvpx 库: ./configure --disable-examples --sdk-path = '/ A
(注意:我知道标题与 this question 几乎相同,但它的解决方案仅适用于我在自己的系统上构建的情况。我正在为嵌入式 ARM 设备构建。) 我正在尝试构建一个针对 arm 设备的交叉编译 FF
我有一个带有一个用 VP9 (libvpx-vp9) 编码的视频流的 WebM 文件。 我编写了一个 C++ 程序来从视频流中提取帧并将它们保存为 PNG。除了生成的 PNG 缺少 alpha 之外,
这是我目前正在关注的过程: 安装依赖 sudo apt-get remove ffmpeg x264 libx264-dev sudo apt-get update sudo apt-get inst
我正在开发一个使用 Linphone 的 SIP 应用程序。我从以下位置获得了 git 存储库: git clone git://git.linphone.org/linphone-android.g
我是一名优秀的程序员,十分优秀!