Php 如何分割OGX(视频)文件?

Php 如何分割OGX(视频)文件?,php,ogg,ogg-theora,Php,Ogg,Ogg Theora,我正在尝试创建一个PHP脚本,该脚本将基于seek位置(作为参数传输到脚本)交付给定的.ogx文件。目的是制作一个具有服务器端搜索功能的HTML5视频播放器 我稍微研究了一下容器格式,并编写了.php脚本,开始从seek位置之前出现的“OggS”字符串的第一个实例(以字节为单位)传递数据 问题是,即使我的新.ogx文件以“OggS”字符串开头,但在HTML5、VLC或任何其他播放器中,只要搜索位置不是0,它就完全无法播放 如果我将搜索位置设置为0,脚本将提供整个文件,并且可以播放 那么,如何在生

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

我稍微研究了一下容器格式,并编写了.php脚本,开始从seek位置之前出现的“OggS”字符串的第一个实例(以字节为单位)传递数据

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

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


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

您应该看看FFMpeg,它是一个库,可以让您以不同的方式处理视频和音频文件

从他们的网站

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


您应该看看FFMpeg,它是一个库,可以让您以不同的方式处理视频和音频文件

从他们的网站

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


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

其次,theora的第一个框架保存了关于流的所有元数据。玩家不能玩它的原因就是因为这个事实。如果您打算允许这样的搜索选项,您将需要重新发送第一帧(您甚至可能不需要解码它,只需重新发送它)

因此,您需要的是:

  • 找到第一个theora OggS数据包,记录它
  • 找到你需要的地方
  • 发送录制的数据包
  • 跳过数据直到下一个“OggS”
  • 像往常一样开始流式传输数据

  • 由于您的文件可能包含Vorbis stream和Theora,因此您可能也希望发送其第一个数据包。

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

    其次,theora的第一个框架保存了关于流的所有元数据。玩家不能玩它的原因就是因为这个事实。如果您打算允许这样的搜索选项,您将需要重新发送第一帧(您甚至可能不需要解码它,只需重新发送它)

    因此,您需要的是:

  • 找到第一个theora OggS数据包,记录它
  • 找到你需要的地方
  • 发送录制的数据包
  • 跳过数据直到下一个“OggS”
  • 像往常一样开始流式传输数据
  • 由于您的文件可能包含Vorbis stream和Theora,所以您可能也希望发送它的第一个数据包