问题标签 [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.
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/ 后,我得到以下线索:
呼,好长的描述!!!我希望你能做到这一点。现在,真正的问题:
- 为什么只播放一帧后视频就卡住了?
- 是因为websocket“sendMessage”方法,因为我将webm块视为不同的消息,而这应该需要作为“sendMessageFrameData”处理?
- 我需要对到达的 frame_data 进行一些排序,以便按照发送顺序接收它们吗?
- 还是我的整个方法不正确?
请帮忙!
android - 在 android mediarecorder 设置或 camprofile 调整中录制 Webm 格式?
这似乎是一个愚蠢的问题,我整晚都在研究这个问题,但无法从我的手机上录制 webm 视频。
我已经评论了摄像机配置文件行,因为我想只有一个必须使用。我还看到一条注释说它需要 API 级别 21,所以我在我的 moto G 上使用棒棒糖 5.0.2。
我得到的错误是Camera dead Error 100。有时会发生媒体recorder.prepare(),但随后媒体recorder.start()会引发错误。我对应该做什么感到困惑。一旦我没有错误。但我只有一个 6.19KB 的文件,无法播放。
c++ - vp9 编码器返回一个空包
我使用此代码使用 vp8 对视频流进行编码,我决定尝试使用 vp9,因此我将所有以 vp_* 开头的内容从 8 更改为 9。
但是 vp9 编码器总是返回一个空包,尽管编码器没有返回任何错误。
这是我用于配置的代码。
和编码的代码
如果我使用的是 vp8 而不是 9,则代码可以正常工作,欢迎提供任何帮助
webrtc - 解析 VP8/OPUS 帧
我正在使用 C 语言在 Linux 环境中开发 webrtc 模拟器。在这里,我需要将媒体从一个 webrtc 模拟器发送到另一个 webrtc 模拟器。我需要使用 VP8 和 Opus 编解码器。现在我开始使用 VP8 编解码器。由于我是 VP8 的新手,请帮助我了解更多。
由于它是模拟器,我不想实时捕获/播放媒体。我需要从文件中读取音频/视频数据并将其发送到远程。在远程获取提取的媒体数据,将其保存到文件中。
哪种文件格式包含编码的 VP8 数据?是 webm 文件格式还是别的什么?
假设 webm 文件包含 VP8 和 OPUS 编解码器数据(我不确定),我该如何逐帧解析。例如,如果我阅读从 AMR-NB 文件中提取音频帧,我可以从文件中解析 amr 帧。同样,是否有任何帮助页面,我在其中学习 VP 框架的解析逻辑。
或者是否有任何开源使用我可以从 webm 文件中解析 VP8/OPUS 帧。
webrtc - Webm (VP8 / Opus) 文件读写
我正在尝试用 C/C++ 开发一个 webrtc 模拟器。对于媒体处理,我计划使用libav。我正在考虑以下步骤来实现两个 webrtc 模拟器之间的媒体交换。假设我有两个 webrtc 模拟器A和B。
- 使用av_read_frame api从输入 webm 文件中读取 A 处的媒体。
- 我假设我将获得编码的媒体(音频/视频)数据,我在这里正确吗?
- 通过 UDP 套接字将编码的媒体数据发送到模拟器B。
- 模拟器B在 UDP 套接字中接收媒体数据作为 RTP 数据包。
- 模拟器B从刚收到的 RTP 数据包中提取音频/视频数据。
- 我假设在模拟器B处提取的媒体数据只是编码数据(我在这里正确吗)。我不想解码它。我想把它写到一个文件中。稍后我将播放该文件以检查我是否已正确完成所有操作。
为了简化这个问题,让我们去掉 UDP 套接字部分。然后我的问题减少到从 webm 输入文件读取数据,获取编码媒体,准备数据包并使用av_interleaved_write_frame或任何其他适当的 api写入输出文件。所有这些我想用 libav 做的事情。
有没有我可以参考的示例代码。
或者有人可以指导我开发它。
我正在尝试一个测试程序。作为第一步,我的目标是读取文件并写入输出文件。我有下面的代码,但它不能正常工作。
当我执行这个程序时,它输出“找不到编解码器”。现在确定出了什么问题,有人可以帮忙吗?
通过单独构建 libvpx1.4 版本解决了 Codec not found 问题。仍在努力从源文件中读取,并写入目标文件。
编辑 1:代码修改后,我只能将视频内容写入文件,尽管仍然存在更多错误。
编辑 2:使用修改后的代码(第二轮),我看到视频帧编写正确。对于音频帧,我在宏_AUDIO_WRITE_ENABLED_下添加了代码 ,但如果我启用此宏程序崩溃。有人可以指导音频写入部分有什么问题(宏_AUDIO_WRITE_ENABLED_下的代码)。
javascript - 连接两个或多个 webm 视频 blob 的部分
是否可以仅使用客户端 javascript 连接以 webm 格式编码的两个或多个视频 blob 的部分?
android - 如何在 Windows 上为 armv6 构建 vp8
我正在尝试为 android armv6 构建 vp8 但没有运气
我尝试设置 --target=armv6-android-gcc 但我得到 Unrecognized toolchain 'armv6-android-gcc' 错误
但 --target=armv7-android-gcc工作得很好。
我该怎么做?
google-chrome - 你如何让 Chromium 使用 VP9 编解码器和 WebRTC?
当使用 Chromium(48) 或 Chrome(45) 进行视频聊天时,浏览器似乎使用 VP8 编解码器而不是 VP9。搜索 Chromium WebRTC 源代码显示了许多对 VP9 编解码器的引用,因此我相信它是受支持的。
根据 Internet 搜索,当使用“--enable-webrtc-vp9-support”标志时,Chrome 应该使用带有 WebRTC 的 VP9 编解码器,但我发现这个标志似乎对 Chrome或Chromium没有任何影响SDP 仍然指示正在使用 VP8。
搜索 Chromium 源代码也不会在“enable-webrtc-vp9-support”上返回任何匹配项。
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 数据包?
在此链接中,似乎没有更多信息发送到解码器,它是否能够在不知道分辨率且没有任何标头的情况下进行解码?
android - 使用 WebRTC 从 Google Glass 流式传输灰度视频
我正在尝试将音频和视频从谷歌眼镜流式传输到浏览器。浏览器只需要接收视频和音频。
我按照http://www.webrtc.org/native-code/android的说明编译了谷歌源代码。
到目前为止,它有效。但是我的视频有问题。它以灰度显示,我不确定我应该对源代码进行哪些更改才能解决此问题。
这是问题的屏幕截图:
我在 stackoverflow.com 中发现了两个相关的问题,但我没有得到解决方案:
非常感谢您提供的任何帮助!