2

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

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

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

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

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

4

2 回答 2

0

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

从他们的网站

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

于 2010-05-10T18:52:09.660 回答
0

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

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

所以你要找的是:

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

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

于 2014-11-11T13:04:56.260 回答