Java-从URL视频中获取片段



,假设我有此视频URL:http://www.quirksmode.org/html5/videos/videos/big_buck_bunny.mp4而且我只需要从该视频中下载一个小的可播放片段(例如00:24-00:30)。

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

我已经查看了Chrome的网络选项卡并阅读了请求和响应标题,但对此没有太多了解,除了:

  • "范围:bytes = 0-"请求标题
  • "内容长度:5510872"中的响应标题

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

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

假设您正在使用.mp4容器,MP4文件格式包含"盒子"(又称"原子")的层次结构。快速寻求的魔法在于moov原子中,这就是为什么在为Web编码视频时,始终最好优化文件的结构并重新排列在正面,以便浏览器可以访问元数据作为下载的第一件事。

moov电影框是所有元数据的容器每个MOOV都有MVHD(电影标题盒)它可以包含N trak框(ES)。每个trak框通常包含媒体特定的元数据信息,它将有2个曲目(视频和音频)更重要的是,它包含示例信息,例如STSD,STTS,STSZ STSC,STCO等...

stts-样本时间(STTS)框。这个盒子包含每个框架的时间(以紧凑的方式)。从这里,您可以找到使用样品到厨房(STSC)原子的框架的"块"。最后,块偏移原子(STCO)使您将字节偏移到文件中。

像MP4Parser或Xuggler这样的项目可以使您自己开始处理MP4容器(有阅读基础MP4结构的样本),但这不是一项琐碎的事业 - 可悲的是,似乎没有一个全面的MP4 API工具包用于Java

最新更新