问题标签 [ogg-theora]

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 投票
1 回答
5172 浏览

directshow - 用于自定义解码器的 DirectShow 中的自动 YUV -> RGB

在网上搜索了几个小时后,我非常渴望找到解决方案。我已经在 DirectShow 中启动并运行 OGG Theora 解码器,它输出 YV12 和 YUY2 颜色模型。

现在,我想为此输出制作一个 RGB 像素操作过滤器并将其处理到视频渲染器中。根据thisthis,它应该非常简单和透明,但事实并非如此。

例如,我在CheckInputType()这个检查中实现了:

我希望它在 Theora 和我的解码器之间插入 MSYUV 并为我完成这项工作(即将其转换为 RGB)。问题是我每次都出错(在 GraphEdit 应用程序中)。而且我 100% 确定它是 YV12 作为输入(在调试器中检查)。我能想到的唯一解释是提到了 AVI 解压缩器,但没有关于它的更多信息。

  • 这是否意味着如果我想获得这个自动功能,我必须使用 AVI 容器?
  • 奇怪的是它适用于例如 WMV 视频(在他们的输出上带有 YUV),只有这个 OGG 解码器有问题。所以这可能是一个问题,这个OGG解码器错过了什么?

太糟糕了,MSYUV 过滤器不能用作颜色空间转换器,即在 GraphEdit 中可见且可直接使用...

我很欣赏这方面的任何提示,编程自己的 YV12 -> RGB 转换器我作为最后的手段。

0 投票
2 回答
4103 浏览

c++ - 如何在 C\C++ 中将位图作为帧写入 Ogg Theora?

如何在 C\C++ 中将位图作为帧写入 Ogg Theora?

一些带有源代码的例子会很有趣!)

0 投票
1 回答
1115 浏览

ffmpeg - ffmpeg 是否支持将原始视频序列编码为原始 Theora Packets/Elementary bits tream

我有一个关于使用 ffmpeg 将原始视频(yuv 序列)编码为原始 Theora 数据包的查询,即某种没有 Ogg 容器的“基本比特流”。

我可以使用 ffmpeg 将原始视频编码为 Ogg theora 比特流,但我需要获取带有原始 Theora 数据包且没有 Ogg 容器标头的 Theora 比特流/

1)我怎样才能做到这一点?

2)如果不使用ffmpeg,那么还有其他方法/解决方案/工具来获得我需要得到的东西吗?

谢谢你。

-广告。

0 投票
2 回答
636 浏览

ffmpeg - linux 上配置的 ffmpeg 0.5 版是否支持使用 Theora 编解码器进行编码?

我已经配置、编译了 FFmpeg 源代码版本 0.5,版本如下:

在 linux 主机上。

当我尝试使用 theora 编解码器使用此版本对原始 yuv 视频进行编码时,提供以下选项:

它给出了一个错误:Unknown encoder 'libtheora'

但是当我在 FFmpeg windows 可执行文件(其版本是 FFmpeg 版本 SVN-r12665)中使用相同的命令时,它会正确编码为 theora 视频。

  1. linux上的ffmpeg 0.5版不支持theora编码器吗?
  2. 哪个版本的 linux 设置支持 theora 编码?
0 投票
3 回答
323 浏览

linux - Linux-gcc 编译 C 代码输出和 MS-VS2008 编译输出之间输出 1 位差异的原因?

我有一个 Theora 视频解码器库和应用程序在 windows(英特尔 x86 架构)上使用 VS-2008 编译。我使用这个设置来解码 theora 比特流(*.ogg 文件)。此解码器库的源代码来自 FFMPEG v0.5 源包,经过一些修改,使其可以在 windows-VS-2008 组合上编译。

现在,当我使用我使用 gcc 构建的 linux(Intel x86 架构)上的 ffmpeg(V0.5)应用程序解码相同的 theora 比特流并获得一些解码的输出 yuv 文件时,该输出文件与从获得的输出有 1 位差异windows-VS2008 设置,以及输出文件的几个字节,不是全部。我希望 2 个输出是位匹配的。

我怀疑以下因素:

a.) 两个编译器 gcc 和 MS-VS2008 之间的某些数据类型不匹配?

b.)我已经验证代码没有使用任何运行时数学库函数,如 log、pow、exp、cos 等......但我的代码仍然有一些操作,如 (a+b+c)/3.Could这是一个问题吗?

这个“除以三”或任何其他数字的实现在两种设置中可能不同。

c.)某种舍入/截断效果发生不同?

d.) 我是否会遗漏 Linux 中作为 makefile/configure 选项存在的任何宏,而 Windows 设置中没有该宏?

但我无法缩小问题范围并解决它。

1.)我的怀疑是否有效,或者是否存在任何其他问题可能导致这两种不同设置产生的输出出现这些 1 位差异。

2.) 我该如何调试和解决这个问题?

我想,这种 linux-gcc 设置和 Windows MS 编译器之间输出差异的场景对于任何通用代码来说都是正确的(不一定特定于我的视频解码器应用程序)

任何指示都会对此有所帮助。

谢谢,

-广告

0 投票
2 回答
3706 浏览

firefox - Firefox 3.6 中的 Ogg (theora / vorbis) 播放

我有这个 html5 代码,有一个用于 Chrome 的 MP4(工作),一个用于 Firefox 的 OGG(失败),以及通过一个用于 Internet Explorer 的 Java 小程序的相同 ogg(工作):

p>

Firefox 显示一个灰色框,里面有一个 X。文件“vernissage_cpal_2009.ogv”在普通媒体播放器(如 VLC)中也能正常播放。

0 投票
6 回答
161364 浏览

firefox - Safari 和 Firefox 中的 HTML5 视频(mp4 和 ogv)问题 - 但 Chrome 都很好

我有以下代码:

  • 我正在使用 Rails(开发中的 Mongrel 和生产中的 Mongrel+Apache)。
  • Chrome(Mac 和 Win)可以在本地或从我的生产服务器播放任一文件(由一个然后另一个源标签测试)。
  • Safari(Mac 和 Win)可以在本地正常播放 mp4 文件,但不能在生产环境中播放。
  • Firefox 3.6 不会在任一操作系统中播放视频。我只是在视频播放器区域的中间看到一个灰色的十字。
  • 我确保 Mongrel 和 Apache 在每种情况下都设置了正确的 MIME 类型。
  • 从 Chrome 的结果来看,我知道我的视频文件或文件被请求或交付的方式本质上没有任何问题。

对于 Firefox,我查看了https://developer.mozilla.org/En/Using_audio_and_video_in_Firefox,它指的是“错误”事件和“错误”属性。似乎“错误”事件被直接抛出,并且当时没有错误属性。有谁知道如何诊断问题?

0 投票
2 回答
362 浏览

php - 如何拆分 OGX(视频)文件?

我正在尝试制作一个 PHP 脚本,该脚本将根据搜索位置(作为脚本的参数传输)提供给定的 .ogx 文件。目的是制作一个具有服务器端搜索功能的 HTML5 视频播放器。

我对容器格式进行了一些研究,并制作了 .php 脚本,以开始从在查找位置之前出现的“OggS”字符串的第一个实例(以字节为单位)传送数据。

问题是,即使我的新 .ogx 文件以“OggS”字符串开头,只要搜索位置不是 0,它在 HTML5、VLC 或任何其他播放器中都完全无法播放。

如果我将搜索位置设置为 0,脚本会给我整个文件并且可以播放。

那么如何在生成有效比特流的同时修剪 .ogx 文件的开头?

0 投票
1 回答
174 浏览

video - 合并两个没有声音的 Theora 视频文件时的 Theora granulepos

我需要将两个文件与由 theora 编解码器压缩的视频(不重新压缩视频)合并,没有声音,为此我解析每个文件,在里面找到数据包,将数据包头中的标志 5 位更改为 0(继续标志)并为所有数据包设置相等的序列。这个方法工作得很好,但有一些与颗粒剂有关的问题。请帮助我使用颗粒位置,我尝试了很多方法来设置它(例如设置为毫秒),但这无济于事。请告诉我什么是 granulepos 参数和 showind 以及我需要如何设置 granulepos 比每帧之间的时间为 300 毫秒?谢谢!

0 投票
1 回答
782 浏览

c - 如何使用 libogg 复用 Vorbis 和 Theora 流

我目前正在编写一个简单的 Theora 视频编码器,它使用 libogg、libvorbis 和 libtheora。目前,我可以将帧提交给 Theora 编码器,将 PCM 样本提交给 Vorbis 编码器,将生成的数据包传递给 Ogg 流(一个用于 Theora,一个用于 Vorbis)并输出页面。

当程序启动时,它首先从 Theora 编码器刷新标头,然后从 Vorbis 编码器刷新到输出文件(显然,两个流都有唯一的序列号)。然后,我将两个流中的交错页面写入文件。

当只写视频或只写音频时,我可以很好地在 mplayer 中播放输出,但是当我尝试同时写两者时,我得到以下信息:

Ogg demuxer 错误:我们遇到了未知的流

我猜我做错了多路复用。我已经阅读了 Xiph.org 上多路复用流的文档,但我看不出我的不同之处。我似乎找不到任何示例代码来执行此操作,除非通过开源编码器的源代码(我很难理解)。谁能解释如何使用 libogg 正确地多路复用流?我正在尝试使用 Ubuntu 存储库中的库在 Ubuntu 10.04 上的 C 中执行此操作。

提前谢谢了!

汤姆