2010-05-10 81 views
2

我正在尝试创建一个PHP脚本,它将根据查找位置(作为参数传输给脚本)传递给定的.ogx文件。目的是制作具有服务器端搜索功能的HTML5视频播放器。如何分割OGX(视频)文件?

我已经研究了一下容器格式,并且让.php脚本开始从查找位置(以字节给出)之前出现的“OggS”字符串的第一个实例传递数据。

的问题是,即使我的新.ogx文件与“OggS”字符串开始,它是在HTML5,VLC或者只要任何其他球员完全无法播放为寻求位置比其他0

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

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

回答

0

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

从他们的网站

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

0

首先我应该指出,Ogg容器中视频的公共扩展名是.ogv。您正在使用的那个.ogx是为Ogg容器中的可执行代码保留的,但目前没有可以携带此类代码的流(试图创建Flash的替代品,但它没有起作用)。其次,theora的第一帧包含关于该流的所有元数据。玩家不能玩的原因是由于这个事实。如果你打算允许这样一个搜索选项,你需要重新发送第一帧(你可能甚至不需要解码它,只是重新发送它)。

那么你正在寻找的是:

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

由于您的文件可能包含Vorbis流以及Theora,因此您可能还需要发送其第一个数据包。