- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我目前正在编写一个简单的 Theora 视频编码器,它使用 libogg、libvorbis 和 libtheora。目前,我可以将帧提交给 Theora 编码器,将 PCM 样本提交给 Vorbis 编码器,将生成的数据包传递给 Ogg 流(一个用于 Theora,一个用于 Vorbis)并获取页面。
当程序启动时,它首先从 Theora 编码器刷新 header ,然后从 Vorbis 编码器刷新到输出文件(显然,两个流都有唯一的序列号)。然后,我将两个流中的交错页面写入文件。
当只写视频或只写音频时,我可以在 mplayer 中很好地播放输出,但是当我尝试同时写这两者时,我得到以下信息:
Ogg 分离器错误:我们遇到了一个未知流
我猜我做错了多路复用。我已经通读了 Xiph.org 上关于多路复用流的文档,但看不出有什么不同。我似乎无法找到任何示例代码来执行此操作,除非通过开源编码器的源代码(我在理解时遇到了一些麻烦)。谁能解释如何使用 libogg 正确地多路复用流?我正在尝试在 Ubuntu 10.04 上使用 Ubuntu 存储库中的库在 C 中执行此操作。
非常感谢!
汤姆
最佳答案
好的,对于正在阅读本文的任何人,我已经在某种程度上解决了它。
您不应该清除每个流中的所有 header 数据包 - 只是第一个(设置)数据包,对于 Vorbis 和 Theora,默认情况下它有自己的页面。将其他 header 数据包放入各自的流中,但在所有流的设置页面都写入文件之前不要刷新。
完成此操作后,尽量保持流同步(mplayer 在它们离得太远时为我提供了一些错误)。在 24fps 视频和 44.1 KHz 音频下,1 帧应跨越 1837.5 个音频样本(对于 PCM 音频,这是 7,350 字节)。
如果其他人有任何提示/信息,很高兴听到 - 我以前从未对音频/视频做过任何事情!
谢谢!汤姆
关于c - 如何使用 libogg 多路复用 Vorbis 和 Theora 流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3602101/
我里面有 VC 和一个 collectionView。所有管理 Collection View 的代码我都放在那个 VC 的扩展中。但现在我需要在另一个不同的 VC 中使用这个 Collection
我很难重新使用子机图。 我需要重新使用我已链接到一个状态的状态机作为子机,在另一个状态中作为子机。但是当我给出对它的引用时,我得到一个空指针异常。 引用图片 我已经添加了对 GeneralTopup
我想尝试 lambda 的一些功能,并想编写一个 ArrayList 过滤器,并使用 IntStream 的方法来计算 ArrayList 中数字的平均值和最大值 我的第一个想法是过滤 ArrayLi
我正在开发一个 NodeJS 应用程序并使用 Mocha 进行单元测试。 假设我有两个非常相似的测试服。事实上,这些是针对两个类的测试实现相同的接口(interface)。 例如: suit_a.js
我正在使用 Glade 编写带有对话框的 python GUI。 如果我不使用 Glade,我会使用一个类来创建一个对话窗口 (dialag),运行它 (dialog.run),执行它所做的任何事情,
我在使用自定义单元格创建 UICollectionView 以显示项目时遇到问题。但是在 UICollectionView 刷新后,可重用的单元格填充了错误的索引 刷新前的 UICollectionV
我从 Sencha 学习 ExtJS 并有下一个简单的任务: 我的页面上有 2 个 div 在第一个 div 中我渲染 Ext.Button 在按钮上单击我想将其移动到另一个 div 仅此而已 我写了
我想在不同的 Node 模块中重用 RabbitMQ channel 。由于 channel 是异步创建的,我不确定将此 channel 对象“注入(inject)”到其他模块的最佳方法是什么。 如果
所以我的问题是我收到一个 SIGABRT 错误,其定义如下: *** Terminating app due to uncaught exception 'NSInvalidArgumentExcep
我正在编写一个 PHP 脚本来将主题从旧论坛站点迁移到新站点。 旧论坛站点使用数据库“old_forums” 新论坛站点使用数据库“new_forums” MySQL 用户“forums”拥有两个数据
我有一个使用 jcodec 生成的 MP4 文件。 然后我就有了一个使用 Android 的 MediaCodec 生成的 AAC 文件。 我想将它们混合到一个文件中,并且由于我不想将我的 Andro
我正在使用 ffmpeg 开发一个 c++ 项目。我必须生成一个带有 h264 编码的 mp4 文件。 我的问题是文件生成但是当用 VLC 读取文件时我没有图像,并用 ffprobe 分析它给我(下面
我将尝试重新提出这个问题。 我想要做的是创建一个新的 mp4 文件,其中将包括一个视频文件、两个音频文件和一个字幕文件。我想创建一个可以在我的 iOS 设备和计算机上播放的 mp4 文件。 文件如下:
虽然我的问题可能看起来很抽象,但我希望不是。假设我开发了一个应用程序,一个 ASP.NET MVC 站点,然后我的任务是为这个应用程序构建一个 Winforms 客户端,我可以从现有应用程序中重用多少
我是一名优秀的程序员,十分优秀!