问题标签 [vp9]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
535 浏览

ffmpeg - FFMPEG 将 HEVC 转换为 VP9 大文件大小

我正在尝试将 HEVC 视频转换为 VP9,以便它们可以在网络浏览器中播放,同时保持文件大小大致相同。

我正在努力创建具有相似质量/文件大小的视频。

这是视频为 22:49 和 168.7mb 的 HEVC 视频之一的流信息:

比特率为 900K,所以我认为以下命令将使用相同的比特率并提供大致相似的图像质量:

使用它,质量明显要差得多,而且繁忙的场景看起来令人难以置信的块状,尽管文件大小大致相当于 HEVC 源。

如果我忽略比特率并让 VP9 解决

质量在视觉上无法区分,但 VP9 转换视频的文件大小达到 401mb,高于 HEVC 文件的 168mb,并且在编码期间,大多数视频的比特率超过 3m。

我尝试提高到 120 万(比源视频高 33%),VP9 仍然给出了一个非常块状的视频。

VP9 真的比 HEVC 差那么多,还是我缺少一个选项?还是因为我正在从 HEVC 转换?

0 投票
1 回答
727 浏览

ffmpeg - ffmpeg DASH 编码:vp9 编解码器的比特率始终为 200k

我正在使用以下命令,之前放在这里:生成 DASH 文件:

问题是,在输出中,对于 vp9 编解码器,我总是获得 200k 的带宽(请参见下面的输出),而对于 h264 编解码器的相同视频带宽随着标准分辨率的不同而变化,而且相当少,我希望 vp9 压缩更多,甚至更少. 我已经使用多个不同的选项进行了测试,例如:、、、-b:v等,但使用这些不同的值无法正常工作,我错过了什么?-deadline-cpu-used -crf

示例输出mpd文件:

我正在使用这个视频,但我尝试过的所有约 30 秒的视频都是一样的。

0 投票
1 回答
1386 浏览

compression - 如何使用 VP9 编解码器和无损压缩设置 WebRTC

我一直在试图弄清楚是否可以使用 VP9 编解码器和无损压缩来设置 WebRTC。

到目前为止,我已经能够弄清楚如何在 SDP 中设置 VP9 以及如何设置编码配置文件(0-3)。但是,我的理解是,将编码器配置文件设置为索引 3,不会对压缩产生影响。

我还查看了VP9 的 RTP 有效负载规范。但是,SDP 参数的规范仅显示如何设置编解码器和编码配置文件。

所以我的问题是,是否有可能使用 VP9 无损压缩设置 WebRTC?如果是这样,我可以在哪里设置它,是否必须在 SDP 中设置它?

0 投票
0 回答
103 浏览

ffmpeg - 使用 FFmpeg 将 GIF 转换为 WEBM 时视频文件不完整

以低 CRF 值为目标时,在 Q 模式下从 Gif 转换为 WebM 会输出不完整的视频。例如,运行以下命令会生成持续时间为 1.15 秒的 WebM 视频,而输入 Gif 为 2.16 秒。

以较低质量为目标(例如 CRF=~30),将产生正确且完整的视频输出。

测试图像 in.gif

0 投票
1 回答
306 浏览

c++ - 如何从 Hololens 2 上的 C++ 程序中获取 VP9 解码器?

我正在实现将在 PC 和 Hololens 2 上运行的 VP9 硬件解码器。
当我尝试加载“MSVP9DEC.dll”时,它在 PC 上运行良好,但在 Hololens 上找不到 DLL。
我已经在设备上安装了 VP9 视频扩展。

这里是截断的代码。Hololens 上的“assert(DecoderDll)”失败:

谢谢!

0 投票
1 回答
1348 浏览

audio - 在 ffmpeg 中为实时提要的音频流添加延迟

我目前正在通过 macOS 上的 Blackmagic decklink 卡捕捉视频。我的音频和视频不同步。音频提前了大约一秒钟。由于编码延迟,我怀疑视频速度较慢。我的解决方案是使用 ffmpeg adelay 过滤器来延迟音频。我最初在命令中添加了一个 -af "adelay=1000|1000" 以将音频延迟 1000 毫秒,但我发现这个音频过滤器什么也没做。因此,我尝试构建一个 complex_filter,但失败了。我的命令产生了太多流,ffmpeg 无法将它们路由到正确的 rtp 端点。那么延迟音频的最佳方法是什么,我可以选择哪些流映射到 rtp 端点?

在运行命令时添加完整的日志,没有任何延迟:

0 投票
1 回答
562 浏览

video - ffmpeg : 转换在 Google 上合法购买的视频

我在 Google Play 商店购买了一个视频。我需要把它放在我的电脑上,以便为视频蒙太奇编辑它。但谷歌表示“重要提示:您不能将电影和电视节目下载到 PC、Mac 和其他笔记本电脑或计算机上。”

该视频有一个 YouTube 链接。当我付钱时,我可以观看它。由于一些网络工具,我设法获得了视频部分和音频。视频是 .webm 文件,音频是 .m4a 文件。

我可以使用 VLC 听到音频,但我无法观看视频。即使 VLC 显示“21:42”的时间码。

以下是 webm 文件的信息(来自 MediaInfo):

这似乎是一个很好的视频文件。

我想用一些视频转换器来转换它,但它们都不起作用。所以我尝试下载ffmpeg,我将视频重命名为“video.webm”并尝试了很多命令。但他们都没有工作。

以下是来自 ffprobe 命令的信息:

结果 :

如果我发起转换,我会得到:

等等然后:

我已经检查了所提出问题的 Internet 解决方案:

  • 帧标记无效
  • 未指定的像素格式
  • 考虑增加“analyzeduration”和“probesize”选项的值

但它在我的情况下不起作用。

显然,当我登录到我的购买帐户时,我可以在 YouTube 上观看视频。我想他们有一个高级别的安全算法,这就是为什么我什么都做不了。Mayve 在元数据中有一些带有“enc_key_id”的东西,他们得到了它,视频只能用它来阅读。我不知道。

我觉得不能免费使用我购买的视频是不可接受的。

有人会有想法吗?

0 投票
1 回答
248 浏览

c++ - vpx_codec_decode 返回 true 但 vpx_codec_get_frame 不返回任何帧

我想做一个可以运行 webm(vp8/vp9) 文件的播放器。

我制作播放器,以便每次找到集群时都将集群发送到解码器并将所有帧放入内存。

发生了一些奇怪的事情,如果我多次调用同一个集群,解码器“vpx_codec_get_frame()”会停止查找一些帧,如果我多次重复此过程,则不会从集群中解码任何帧,但每次在我尝试解码我​​调用的帧之前“vpx_codec_decode()”,即使 vpx_codec_get_frame() 返回空指针,它也会返回 true;

此外,解码过程受我使用的线程数的影响,例如,如果我使用一个线程与 8 个线程,我会从集群中获得不同数量的帧。

我怀疑线程可能没有在新的缓冲区帧到来的同时完成,这可能会导致问题。

另外,我在通过使用 mkvmerge 工具合并三个视频获得的 Mkv 视频上测试我的播放器,我的播放器应该打开一个包含多个轨道的 mkv 文件并同时显示所有轨道。

这是代码:初始化解码器:

这是调用 vpx_codec_decode() 的代码:

最后应该在哪里解码图像:

在我的项目中,我使用以下代码:

https://github.com/zaps166/libsimplewebm

有人可以推荐另一种方法来解码 vp8/9 帧或对我的代码进行罚款吗?

0 投票
1 回答
401 浏览

opencv - 用 VP9 编码 mp4 视频时应该使用什么fourcc?

我的目标是使用cv2Python 库编写一个 mp4 视频,该库本身依赖于ffmpeg. 我应该使用什么代码作为fourcc参数,即:

0 投票
0 回答
228 浏览

video-streaming - WebRTC 如何根据自适应比特率确定何时调整视频大小?

有人可以帮助我了解 WebRTC 如何确定何时根据比特率调整视频流的大小吗?

我正在寻找比我在基本 Google 搜索中找到的略低级别的描述。理想情况下,如果 WebRTC Git 存储库中有任何关键文件,我想查看它们。

谢谢