【问题标题】:Java - Get snippet from video of URLJava - 从 URL 的视频中获取片段
【发布时间】:2016-12-25 17:35:06
【问题描述】:

假设我有这个视频网址:http://www.quirksmode.org/html5/videos/big_buck_bunny.mp4 我只需要从这个视频中下载一个小的可播放的 sn-p(例如 00:24 - 00:30)。

我应该如何在 Java 中做到这一点?而且我不想下载整个视频然后剪切它。

我已经查看了 chrome 的网络选项卡并阅读了请求和响应标头,但无法理解它,除了:

  • 请求标头中的“Range:bytes=0-”
  • 响应头中的“Content-Length:5510872”

但我不能只选择任何范围,因为这会使视频无法播放,对吧?

那么,如果我点击 00:24,浏览器如何知道它应该得到哪个范围?

【问题讨论】:

    标签: java html video httprequest


    【解决方案1】:

    假设您使用的是 .mp4 容器, mp4 文件格式包含“盒子”(又名“原子”)的层次结构。快速搜索的魔力在于 moov 原子,这就是为什么在为 Web 编码视频时,总是最好优化文件的结构并将其重新定位到最前面,以便浏览器首先下载元数据。

    moov 电影盒是所有元数据的容器 每个 moov 都有一个 mvhd(电影标题框) 它可以包含 N 个trak 框。每个trak 框包含媒体特定的元数据信息 通常,它将有 2 个轨道(视频和音频) 更重要的是,它包含了stsd、stts、stsz、stsc、stco等样本信息……

    stts - 采样时间 (stts) 框。 此框包含每一帧的时间(以紧凑的方式)。从这里您可以使用 Sample-to-Chunk (stsc) 原子找到包含帧的“块”。最后,块偏移原子 (stco) 为您提供文件中的字节偏移量。

    MP4ParserXuggler 这样的项目可以让你开始自己处理 MP4 容器(有阅读底层 MP4 结构的示例),但这不是一件容易的事 - 遗憾的是似乎没有一个全面的用于 Java 的 MP4 API 工具包

    【讨论】:

    • 感谢您给我一些起点。没有什么不能用一些汗水和血来完成的,但是一个工具包会很好..我不想把它限制在 mp4 上,Xuggler 看起来很有希望
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多