1

我有一个 java servlet api,当被请求时,它会使用 ffmpeg 启动视频文件的实时转换并将其通过管道传输到 mediastreamsegmenter 以将其分段以用于 http 实时流。我想要的是java servlet在生成索引文件后立即返回索引文件的url(在写入第4个传输流文件之后),这样用户就可以开始观看视频而无需等待它完全完成转换。

我想实现这一点的方法是将命令传递给 mediastreamsegmenter 的 -file-complete-command 参数,并让它调用某种命令,如果最后完成的文件是索引文件。

我的另一个想法是只分割视频的前 30 秒左右,然后返回响应,并将视频的其余部分添加到 servlet 中的某种后台任务中。我不确定如何做到这一点。我可以创建一个单独的线程来执行此转换,该转换将在 servlet 返回后继续运行吗?我确信必须有更好的方法来做到这一点。任何想法将不胜感激。

4

2 回答 2

1

我会说你肯定需要一个单独的线程来完成这样的任务。为什么“必须有”更好的方法?

于 2011-01-02T23:55:33.533 回答
0

我不太喜欢视频流,但你能启动一个线程(称为 PARSE_THREAD)来进行解析并告诉 servlet(位于 SERVLET_THREAD 中)等待一段合理的时间吗?我认为 ffmpeg 转换需要大约相同的时间来解析前 30 秒,因此您启动 PARSE_THREAD,然后在这段时间内休眠 SERVLET_THREAD,然后让 servlet 开始流式传输。

使用单独的线程是解决该问题的好方法。

于 2011-09-20T10:27:06.587 回答