问题标签 [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 投票
0 回答
952 浏览

websocket - 结合高速公路 websockets、gstreamers 和 html5 mediaSource API 的实现

我正在使用高速公路|python 运行 websocket 服务器。在服务器端,我还运行了一个 gstreamer 管道,我使用它来使用“appsink”捕获 webm 帧。实现的 gstreamer 管道是:

每次,我在应用程序接收器中收到一个缓冲区,我使用 sendMessage 通过 websocket 将其作为二进制“消息”发送。

在客户端,我收到了一个复杂的 frame_data blob 流。有一个 FileReader、MediaSource 和源缓冲区。每当接收到 frame_data 时,都会使用 filereader 将其作为缓冲区读取。如果文件读取器正忙于读取前一个 frame_data,它会将其附加到“buffer_pool”。一旦 frame_data 被读取为缓冲区,它就会被附加到“sourceBuffer”。如果“sourceBuffer”仍在更新前一个块,它将被附加到“sourceBufferpool”。

现在,最终结果是,我在浏览器窗口中只看到一帧,然后视频冻结。检查 chrome://media-internals/ 后,我得到以下线索:

呼,好长的描述!!!我希望你能做到这一点。现在,真正的问题:

  1. 为什么只播放一帧后视频就卡住了?
  2. 是因为websocket“sendMessage”方法,因为我将webm块视为不同的消息,而这应该需要作为“sendMessageFrameData”处理?
  3. 我需要对到达的 frame_data 进行一些排序,以便按照发送顺序接收它们吗?
  4. 还是我的整个方法不正确?

请帮忙!

0 投票
1 回答
1861 浏览

android - 在 android mediarecorder 设置或 camprofile 调整中录制 Webm 格式?

这似乎是一个愚蠢的问题,我整晚都在研究这个问题,但无法从我的手机上录制 webm 视频。

我已经评论了摄像机配置文件行,因为我想只有一个必须使用。我还看到一条注释说它需要 API 级别 21,所以我在我的 moto G 上使用棒棒糖 5.0.2。

我得到的错误是Camera dead Error 100。有时会发生媒体recorder.prepare(),但随后媒体recorder.start()会引发错误。我对应该做什么感到困惑。一旦我没有错误。但我只有一个 6.19KB 的文件,无法播放。

0 投票
1 回答
911 浏览

c++ - vp9 编码器返回一个空包

我使用此代码使用 vp8 对视频流进行编码,我决定尝试使用 vp9,因此我将所有以 vp_* 开头的内容从 8 更改为 9。

但是 vp9 编码器总是返回一个空包,尽管编码器没有返回任何错误。
这是我用于配置的代码。

和编码的代码

如果我使用的是 vp8 而不是 9,则代码可以正常工作,欢迎提供任何帮助

0 投票
1 回答
2285 浏览

webrtc - 解析 VP8/OPUS 帧

我正在使用 C 语言在 Linux 环境中开发 webrtc 模拟器。在这里,我需要将媒体从一个 webrtc 模拟器发送到另一个 webrtc 模拟器。我需要使用 VP8 和 Opus 编解码器。现在我开始使用 VP8 编解码器。由于我是 VP8 的新手,请帮助我了解更多。

  1. 由于它是模拟器,我不想实时捕获/播放媒体。我需要从文件中读取音频/视频数据并将其发送到远程。在远程获取提取的媒体数据,将其保存到文件中。

  2. 哪种文件格式包含编码的 VP8 数据?是 webm 文件格式还是别的什么?

  3. 假设 webm 文件包含 VP8 和 OPUS 编解码器数据(我不确定),我该如何逐帧解析。例如,如果我阅读从 AMR-NB 文件中提取音频帧,我可以从文件中解析 amr 帧。同样,是否有任何帮助页面,我在其中学习 VP 框架的解析逻辑。

  4. 或者是否有任何开源使用我可以从 webm 文件中解析 VP8/OPUS 帧。

0 投票
1 回答
882 浏览

webrtc - Webm (VP8 / Opus) 文件读写

我正在尝试用 C/C++ 开发一个 webrtc 模拟器。对于媒体处理,我计划使用libav。我正在考虑以下步骤来实现两个 webrtc 模拟器之间的媒体交换。假设我有两个 webrtc 模拟器AB

  1. 使用av_read_frame api从输入 webm 文件中读取 A 处的媒体。
  2. 我假设我将获得编码的媒体(音频/视频)数据,我在这里正确吗?
  3. 通过 UDP 套接字将编码的媒体数据发送到模拟器B。
  4. 模拟器B在 UDP 套接字中接收媒体数据作为 RTP 数据包。
  5. 模拟器B从刚收到的 RTP 数据包中提取音频/视频数据。
  6. 我假设在模拟器B处提取的媒体数据只是编码数据(我在这里正确吗)。我不想解码它。我想把它写到一个文件中。稍后我将播放该文件以检查我是否已正确完成所有操作。

为了简化这个问题,让我们去掉 UDP 套接字部分。然后我的问题减少到从 webm 输入文件读取数据,获取编码媒体,准备数据包并使用av_interleaved_write_frame或任何其他适当的 api写入输出文件。所有这些我想用 libav 做的事情。

有没有我可以参考的示例代码。
或者有人可以指导我开发它。

我正在尝试一个测试程序。作为第一步,我的目标是读取文件并写入输出文件。我有下面的代码,但它不能正常工作。

当我执行这个程序时,它输出“找不到编解码器”。现在确定出了什么问题,有人可以帮忙吗?

通过单独构建 libvpx1.4 版本解决了 Codec not found 问题。仍在努力从源文件中读取,并写入目标文件。

编辑 1:代码修改后,我只能将视频内容写入文件,尽管仍然存在更多错误。

编辑 2:使用修改后的代码(第二轮),我看到视频帧编写正确。对于音频帧,我在宏_AUDIO_WRITE_ENABLED_下添加了代码 ,但如果我启用此宏程序崩溃。有人可以指导音频写入部分有什么问题(宏_AUDIO_WRITE_ENABLED_下的代码)。

0 投票
1 回答
1456 浏览

javascript - 连接两个或多个 webm 视频 blob 的部分

是否可以仅使用客户端 javascript 连接以 webm 格式编码的两个或多个视频 blob 的部分?

0 投票
1 回答
101 浏览

android - 如何在 Windows 上为 armv6 构建 vp8

我正在尝试为 android armv6 构建 vp8 但没有运气
我尝试设置 --target=armv6-android-gcc 但我得到 Unrecognized toolchain 'armv6-android-gcc' 错误
但 --target=armv7-android-gcc工作得很好。
我该怎么做?

0 投票
1 回答
1385 浏览

google-chrome - 你如何让 Chromium 使用 VP9 编解码器和 WebRTC?

当使用 Chromium(48) 或 Chrome(45) 进行视频聊天时,浏览器似乎使用 VP8 编解码器而不是 VP9。搜索 Chromium WebRTC 源代码显示了许多对 VP9 编解码器的引用,因此我相信它是受支持的。

根据 Internet 搜索,当使用“--enable-webrtc-vp9-support”标志时,Chrome 应该使用带有 WebRTC 的 VP9 编解码器,但我发现这个标志似乎对 ChromeChromium没有任何影响SDP 仍然指示正在使用 VP8。

搜索 Chromium 源代码也不会在“enable-webrtc-vp9-support”上返回任何匹配项。

0 投票
1 回答
788 浏览

ffmpeg - 使用 ffmpeg av_codec_video_2 解码原始缓冲区

我正在尝试用 C 为 webrtc 应用程序编写解码器。我收到一个 RTP 流,我解析每个数据包,重新排序它们,并将有效负载放入 AVPacket 中,如此处所述( FFmpeg decode raw buffer with avcodec_decode_video2)。此链接中未描述重新排序部分,但我很确定这部分没问题。

问题是,我不知道如何为解码器提供有关分辨率、pix_fmt 等的信息。我需要创建一个AVstream*并用我从 rtp 标头获取的所有信息填充它?

是否有人有一段运行代码可以在不使用 rtp_dec 等的情况下解码解包的 VP8 数据包?

在此链接中,似乎没有更多信息发送到解码器,它是否能够在不知道分辨率且没有任何标头的情况下进行解码?

0 投票
1 回答
526 浏览

android - 使用 WebRTC 从 Google Glass 流式传输灰度视频

我正在尝试将音频和视频从谷歌眼镜流式传输到浏览器。浏览器只需要接收视频和音频。

我按照http://www.webrtc.org/native-code/android的说明编译了谷歌源代码。

到目前为止,它有效。但是我的视频有问题。它以灰度显示,我不确定我应该对源代码进行哪些更改才能解决此问题。

这是问题的屏幕截图:

在此处输入图像描述 我在 stackoverflow.com 中发现了两个相关的问题,但我没有得到解决方案:

非常感谢您提供的任何帮助!