我有一个java servlet api,当被请求时,它使用ffmpeg启动视频文件的实时转换,并通过管道将其传输到mediastreamsegmenter,以将其分割为http实时流。我想要的是java servlet一生成索引文件就返回它的url (在第四个传输流文件被写入之后),这样用户就可以开始观看视频,而不需要等待它完全完成转换。
我的想法是将一个命令传递给mediastreamsegmenter的- file -complete-command参数,并让它调用某种命令,该命令可以告诉java servlet,如果最后完成的文件是索引文件,则返回其响应。
我的另一个想法是只分割视频的前30秒左右,然后返回响应,并将视频的其余部分添加到servlet中的某种后台任务中。不过,我不确定如何做到这一点。我是否可以创建一个单独的线程来执行此转换,该线程将在servlet返回后继续运行?我相信一定有更好的方法来做这件事。任何想法都将不胜感激。
发布于 2011-09-20 18:27:07
我对视频流不是很感兴趣,但是您可以启动一个线程(名为PARSE_THREAD)来执行解析,并告诉servlet (位于SERVLET_THREAD中)等待一段合理的时间吗?我认为SERVLET_THREAD转换需要大约同样的时间来解析前30秒,因此您可以启动PARSE_THREAD,然后让servlet在这段时间内休眠,然后让servlet开始流式传输。
使用单独的线程是解决这个问题的一个很好的方法。
发布于 2011-01-03 07:55:34
我想说的是,你肯定需要一个单独的线程来完成这样的任务。为什么“一定要有”更好的方法?
https://stackoverflow.com/questions/4579732
复制相似问题