【问题标题】:How do I split an OGX (video) file?如何拆分 OGX(视频)文件?
【发布时间】:2010-05-10 18:38:21
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: php ogg ogg-theora


    【解决方案1】:

    您应该看看 FFMpeg,它是一个库,可让您以不同的方式处理视频和音频文件。 http://www.ffmpeg.org/

    来自他们的网站

    FFmpeg 是一个完整的、跨平台的 记录、转换和流式传输的解决方案 音频和视频。这包括 libavcodec - 领先的音频/视频 编解码器库。

    【讨论】:

      【解决方案2】:

      首先我应该指出,Ogg 容器中视频的通用扩展名是.ogv。您使用的.ogx 是为Ogg 容器中的可执行代码保留的,但目前没有可以携带此类代码的流(曾尝试创建Flash 的替代品,但没有成功)。

      其次,theora 的第一帧包含有关流的所有元数据。玩家无法玩它的原因是由于这个事实。如果您打算允许这样的搜索选项,则需要重新发送第一帧(您可能甚至不需要对其进行解码,只需重新发送即可)。

      所以你要找的是:

      1. 找到第一个 theora OggS 数据包,记录它。
      2. 寻找您需要的点。
      3. 发送记录的数据包。
      4. 跳过数据直到下一个“OggS”。
      5. 开始像往常一样流式传输数据。

      由于您的文件可能包含 Vorbis 流以及 Theora,您可能还想发送它的第一个数据包。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-10-17
        • 1970-01-01
        • 2014-05-21
        • 1970-01-01
        • 1970-01-01
        • 2017-07-14
        • 2014-12-21
        • 2023-04-10
        相关资源
        最近更新 更多