代码之家  ›  专栏  ›  技术社区  ›  Andrei

如何拆分ogx(视频)文件?

  •  2
  • Andrei  · 技术社区  · 16 年前

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

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

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

    如果我将搜寻位置设置为0,脚本将提供整个文件,这是可播放的。

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

    2 回复  |  直到 11 年前
        1
  •  0
  •   falomir    16 年前

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

    从他们的网站

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

        2
  •  0
  •   v010dya    11 年前

    首先,我应该指出ogg容器中视频的常见扩展名是 .ogv . 你用的那个 .ogx 是为ogg容器中的可执行代码保留的,但当前没有可携带此类代码的流(曾尝试创建Flash的替代,但没有起飞)。

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

    所以你要找的是:

    1. 找到第一个Theora Oggs包,记录下来。
    2. 找到你需要的地方。
    3. 发送记录的数据包。
    4. 跳过数据,直到下一个“oggs”。
    5. 像往常一样开始传输数据。

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

    推荐文章