Java - 从URL的视频获取片段

问题描述:

可以说我有这个视频的网址:http://www.quirksmode.org/html5/videos/big_buck_bunny.mp4 我只需要从该视频下载一个小的可播放片段(例如00:24 - 00:30)。Java - 从URL的视频获取片段

我应该如何在java中做到这一点?我不想下载整个视频,然后剪下。

我已经看了铬的网络标签和读取请求和响应头,但不能得到它太大意义,除非:

  • :在请求头“范围字节= 0-”
  • “内容长度:5510872”的响应头

但我不能只选择任何范围,因为它将使不是视频播放的吧?

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

假设你有.MP4集装箱工作, MP4文件格式中包含的“盒子”(又名“原子)的层次结构。快速寻求神奇在于moov原子是编码时,为什么视频网站它总是最大限度地优化文件的结构和重定位到前面,这样浏览器访问元数据,因为它下载的第一件事。

moov 电影盒子是容器的所有元数据 每个moov都有一个mvhd(Movie header box) 它可以包含N trak框(es)。每个trak框包含特定媒体元数据信息,通常情况下,这将有2个轨道(视频和音频) 更重要的是,它包含了样本信息,如STSD,STTS,STSZ科技小组,STCO等..

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

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

+0

谢谢你给我一些出发点。没有什么是不能用一些汗水和血液来完成的,但是一个工具包虽然不错,但是我不想把它限制在mp4上,而且Xuggler看起来很有前途 – MrSunshine