java + red5实现视频搜索功能

我用red5作为流媒体服务器,现在有一个比较头疼的业务,实现视频按时间搜索的功能。
我们视频文件是放在hdfs里面,red5先读取hdfs视频文件,然后发布到客户端,这个已经完成。
视频文件我们是每个小时形成一个flv文件,读取的是摄像头视频,现在我们要新加一个视频搜索功能,客户端输入一个开始和截止时间,服务端根据用户选择的时间段返回视频

3个回答

没看过red5源码,不过这个应该不是很复杂。可以参考nginx 模块 h264 streaming。
其实就是一个“拖拽“或者视频随机seek功能的应用。
主要思想还是,解析moov头,提取对应时间窗口的h264帧,重新组织”虚拟“的metatdata,并动态的输出一个”新的虚拟的“flv文件。
对flv的格式有个比较清晰的了解,就能够实现。
不过个人感觉,作为一个发展的比较成熟的流媒体服务器,red5应该支持”拖拽“吧?

baidu_24717657
baidu_24717657 视频拖拽确实可以实现,现在我们的需求是直接返回一个完整的视频,这个视频时根据搜索条件搜索出来的,有可能会是多个文件合并成的新文件,就如你所说的那样是一个虚拟视频,谢谢
接近 6 年之前 回复

可能我对“拖拽”说的有点儿歧义。
我所说的拖拽或者seek 对于播放器的实现方式是:
根据用户选择的时间点 t 发送请求: http://www.test.com/videosample.mp4?start=t
这种形式,返回的给前端感知到的是一个完整的mp4视频。
这个视频就如我上文所说的——解析moov头,提取对应时间窗口的h264帧,重新组织”虚拟“的metatdata,并动态的输出一个”新的虚拟的“flv文件。
nginx 模块 h264 streaming 就是这样的一个实现,有兴趣看一下源码,基本上一目了然。
单个文件的切分如此,多个文件的合并同样如此。

有个java的开源项目,好象是叫做mp4parser,里面同样有对mp4切分合并的实现。可以参考。

至于文件格式问题,flv和mp4基本上一奶同胞,差别不大。看看spec就差不多。

你所需要做的工作只是一个Remux而已。

baidu_24717657
baidu_24717657 帮助很大,谢谢
接近 6 年之前 回复

大神,你们red5读取hdfs视频文件,发送到客户端播放,这块怎么实现的??我也有这方面的需求。搞了好久没有搞出来,还望指点下,多谢了!!!

gingerredjade
LuckyJiang.2019 请问你现在解决了吗?求解决办法~~
大约 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐