问题标签 [vp8]

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 投票
2 回答
1934 浏览

ffmpeg - ffmpeg 更喜欢在 VP9 中编码,但我正在尝试在 VP8 中编码

我正在尝试专门在 VP8 中编码 webm 视频文件,但 ffmpeg 正在强制使用 VP9。我正在使用-c:v libvpx,据我所知应该是 VP8,但是当它编码时,我看到它在 VP9 中编码:

我拥有的构建确实有--enable-libvpx--enable-libvpx-vp9标志。它也是最新的默认静态构建,我没有做任何更改,只是提取它:ffmpeg-20160828-a37e6dd-win32-static.zip

我使用过时的版本很长时间了,今天更新了。我在网上找不到任何文档来帮助我解决这个问题。

0 投票
1 回答
309 浏览

video - 如何将不同帧分辨率的VP8轨道转换为h264

我有一个带有 VP8 轨道的 .webm 文件,由外部服务(TokBox 归档)从 WebRTC 流中记录。流是自适应的,因此轨道中的每一帧都可以有不同的分辨率。大多数播放器(在 webkit 浏览器中)使用轨道描述中的视频分辨率(始终为 640x480)并将帧缩放到此分辨率。Firefox 和 VLC 播放器使用真实帧分辨率,分别改变视频分辨率。

我想实现两个目标:

  1. 在 Internet Explorer 9+ 中播放此视频,无需安装额外的插件。
  2. 将帧分辨率更改为一种固定分辨率,因此视频在不同浏览器中的外观相同。

所以,我的计划是:

  • 从源 webm 文件中提取帧到具有真实帧分辨率的图像(例如 PNG 或 BMP)(我该怎么做?)
  • 查找图像的最大宽度和最大高度
  • 为图像添加黑色填充,因此较小的帧将位于新帧的中心(大小为 MAX_WIDHTxMAX_HEIGHT)
  • 使用 ffmpeg 将图像组合到 h264 轨道

一切都正确吗?我怎样才能做到这一点?这个算法可以以某种方式优化吗?

我尝试使用 ffmpeg 提取图像,但它不使用轨道头中的分辨率解析真实的帧分辨率。我认为一些 libwebm 函数可以帮助我(解析帧头和提取图像)。也许有人有一些代码片段可以做到这一点?

示例.webm(下载源,不要播放google转换的版本):https ://drive.google.com/file/d/0BwFZRvYNn9CKcndhMzlVa0psX00/view?usp=sharing

TokBox 支持的自适应流官方说明:https: //support.tokbox.com/hc/en-us/community/posts/206241666-Archived-video-resolution-is-supposed-to-be-720x1280-but-reports -as-640x480

0 投票
1 回答
208 浏览

webrtc - 哪种编解码器用于在线视频流?

我正在将 WebRTC 与 kurento 媒体服务器一起使用,据我所知,WebRTC 支持 VP8 进行视频流式传输并使用 opus 进行音频流式传输,所以我的问题是我是否要压缩包含音频和视频的流,我也是需要同时使用(VP8 和 opus)?

0 投票
1 回答
1359 浏览

gstreamer - gstreamer中vp8enc的实时视频可以使用哪些设置?

我正在研究使用此元素对实时视频进行编码,并且在大多数情况下,输入视频相对简单,它可以正常工作。然而,对于我们的某些场景,编码器落后了。(特别是我们有一个测试场景,其中有一群鸟,编码器适合。)

查看输出,我相信这是因为该元素似乎没有针对复杂场景调整 QP。不过,我没有看到针对“实时”视频的特定调整。有没有人有什么建议?

0 投票
1 回答
3821 浏览

ffmpeg - 将 RTP 数据包流式传输到 FFMPEG

我使用 node.js 从 WebRTC 服务器(我使用 mediasoup)获取 RTP 流,并从流中获取解密的 RTP 数据包原始数据。我想将此 RTP 数据转发到 ffmpeg。我创建了描述音频和视频流的 SDP 文件,并通过 UDP 发送数据包。社会民主党:

命令:ffmpeg -loglevel debug -analyzeduration 2147483647 -probesize 2147483647 -protocol_whitelist file,crypto,udp,rtp -re -vcodec vp8 -acodec opus -i test.sdp -vcodec h264 -acodec aac -y output.mp4

日志:

如您所见,在日志的开头,SDP 在没有识别编解码器的情况下进行了解析:

然后它试图从套接字读取数据包。只有当我关闭套接字时,ffmpeg 才会继续解析 SDP,这一次找到了正确的编解码器:

我怀疑“不增加 DTS”和“标头大小大于提供的数据”错误是由于使用了错误的编解码器而导致的数据包解析错误引起的。

我检查了 SDP 顺序,它似乎与我的其他示例相同。

有人可以提出解释吗?

顺便说一句,音频只能正常工作,但我想这是因为 OPUS 的简单性。

谢谢。

0 投票
1 回答
1720 浏览

gstreamer - Gstreamer:将 mp4 视频编码为 opus(音轨)和 vp8(视频轨)

我想使用 gstreamer 启动 opus/vp8 流。我从以下片段开始:

在当前文件夹中,我现在有一个 mp4 视频:我想通过 gstreamer 对两个轨道进行编码来重现它。

我试过了:

但 gst-launch 向我展示了这一点:

我怎么解决这个问题?

[编辑]:我试过:

但是有以下错误:

最后我试过这个:

这就是控制台显示的内容:

0 投票
1 回答
1371 浏览

video - FFMPEG 使用 VP8 创建 MPEG-DASH 流

我正在尝试使用 FFMPEG 从我的网络摄像头流式传输实时视频/dev/video0。遵循分散的教程和稀缺的文档(这是编码社区的一个已知问题吗?)我得到了以下 bash 脚本:

当我运行这个脚本时,我的网络摄像头灯亮起,stream.hdrstream_manifest.mpd文件被写入,并且开始创建块(即stream_1.chkstream_2.chk等...)。但是,FFMPEG 会引发以下错误:

无法为输出文件 #0 写入标头(编解码器参数不正确?):处理输入时发现无效数据

我将解释我认为我在用这个脚本做什么,并希望这会暴露我的想法中的任何错误。

首先,我们调用 FFMPEG 以使用 Video for Linux 2 (v4l2) 从/dev/video0分辨率为 640x480 的网络摄像头 ( ) 中读取数据。输入格式mjpeg的帧率为 24fps。

然后我声明 FFMPEG 应该将 v4l2 输出的视频流“映射”(复制)到一个文件。我指定像素格式(YUV420P)并使用 libvpx(VP8 编码)对视频流进行编码。我将大小设置为 640x480,使用 4 个线程,将比特率设置为 50kbps,使用 tile-columns 和 frame-parallel 选项做一些魔术,并将 I-frames 设置为相隔 24 帧。

然后我创建一个stream.hdr文件。起始索引为 1。此命令继续无限运行,直到我将其杀死,从我的网络摄像头中抓取新视频并将其输出为块。

然后我休眠 2 秒,给前面的命令时间来生成头文件。

就是这样。FFMPEG 的下一次调用只是根据上一步中生成的标头创建 MPEG-DASH 清单文件。

发生什么了?为什么我不能在网络浏览器中观看视频(我使用的是 Dash.js)?我在 Node.js 服务器上提供清单、标头和块,因此琐碎的问题不是问题。


编辑:这是我的完整控制台输出。

0 投票
1 回答
2233 浏览

c++ - 将 RTP vp8 有效负载数据包保存到 .webm 文件

我已经使用 Wireshark 将视频通话保存到 .pcap 文件,并且我想从 RTP 数据包中获取视频。RTP 数据包负载类型是vp8,我可以通过使用 C++ 中的 libpcap 库找到 vp8 RTP 数据包。然后我将所有 RTP vp8 数据包的内容保存到一个文件中。但我无法使用 ffmpeg 将此原始 vp8 数据转换为 .mp4。ffmpeg 在转换过程中出错。ffmpeg 转换错误:处理输入时发现无效数据

从 vp8 RTP 数据包中获取.mp4.webm视频文件的步骤是什么?

编辑:我可以获得不包括 VP8 有效负载描述符、有效负载标头和关键帧标头的原始 VP8 数据。然后我为每个vp8原始帧添加了ivf头和帧头,根据ivf文档 IVF文档

但是当我想使用 ffmpeg 将我的 ivf 文件(output1)转换为 output1.mp4 时

ffmpeg -i output1 -c:v vp8 output1.mp4

我收到错误

转换错误

0 投票
1 回答
381 浏览

ios - 为 iOS 构建 VP8 编解码器

我想为 iOS 平台构建可以支持 PJSIP 库的 VP8 视频编解码器。我正在使用 PJSIP 库版本 2.6。是否有任何可用的补丁可用于构建 VP8 编解码器或 iOS PJSIP 中需要任何其他代码。

0 投票
1 回答
115 浏览

visual-c++ - 来自 libWebP 编码器的失真图像

我一直在使用 GDI+ 和 CxImage 库来保存从桌面捕获的图像,并考虑转移到谷歌的 LibWebp,因为它承诺具有比 JPEG 或 PNG 更好的压缩质量的图像。

我在 Windows 上使用 directX 或 GDI 捕获桌面,编码并保存它们或通过网络传输并在另一端解码它们。除了使用文本捕获的图像失真之外,每件事看起来都不错,但对于具有大量文本内容的网页而言,情况并非如此。

只要背景颜色发生变化(被选中或突出显示),文本就会被正确编码。我不明白问题是什么。

这是我使用 libWebp 编码的命令提示符图像示例,您可以清楚地看到所选区域已正确编码,其余区域随机失真。

在此处输入图像描述

在此处输入图像描述

我没有找到任何讨论这些奇怪问题的资源或论坛。任何帮助,将不胜感激。

提前致谢。