【问题标题】:Tell a java servlet when to return from an external command line call告诉 java servlet 何时从外部命令行调用返回
【发布时间】:2011-06-02 13:24:01
【问题描述】:

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

我想如何实现这一点是将命令传递给 mediastreamsegmenter 的 -file-complete-command 参数,并让它调用某种命令,如果最后一个文件,它可以告诉 java servlet 返回其响应完成的是索引文件。

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

【问题讨论】:

    标签: java ffmpeg video-streaming mediastreamsegmenter


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 似乎并不支持 mediastreamsegmenter 的行为。在我的所有测试中,当我分割文件的第一部分,然后用不同的命令分割第二部分时,它会覆盖第一个命令生成的索引文件。从理论上讲,我可以创建自己的支持这种行为的媒体流分段器,但如果可能的话,我宁愿不走这条路。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-04
      • 1970-01-01
      • 2019-03-17
      • 2013-07-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多