Java - 从网址

时间:2016-12-25 17:35:07

标签: java html5 video httprequest

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

我应该如何在java中执行此操作?而且我不想下载整个视频然后剪切它。

我已经查看了chrome的网络选项卡,并阅读了请求和响应标题但是对它没有多大意义,除了:

  • 请求标头中的“范围:字节= 0-”
  • 响应标题中的“Content-Length:5510872”

但我不能只选择任何范围,因为它会使视频无法正常播放?

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

1 个答案:

答案 0 :(得分:1)

假设您正在使用.mp4容器, mp4文件格式包含'框的分层结构。 (又名"原子')。快速寻找的魔力在于moov原子,这就是为什么在为网络编码视频时,最好优化文件结构并将其重新定位到前端,以便浏览器可以访问元数据是它下载的第一件事。

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

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

HereMP4Parser这样的项目可以帮助您自己开始处理MP4容器(在阅读基础MP4结构时有样本),但这不是一项微不足道的工作 - 遗憾的是那里似乎不是一个全面的Java MP4 API工具包