首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用http而不是rtmp自定义流路径

使用http而不是rtmp自定义流路径
EN

Stack Overflow用户
提问于 2017-04-04 16:54:54
回答 2查看 814关注 0票数 1

我目前有一个Red5应用程序,它使用与Red5的wiki上显示的示例类似的自定义流路径。

当使用以下rtmp流时,它工作得很好:

代码语言:javascript
运行
复制
rtmp://localhost:1935/streaming/videos/myVid.mp4

我需要能够用http流做同样的事情。例如:

代码语言:javascript
运行
复制
http://localhost:8080/streaming/videos/myVid.mp4

当我将流url从rtmp更改为http时,不再调用CustomFilenameGenerator类。

是否可以在使用http时使用自定义流路径?如果是这样的话,是否有需要添加/更改才能使其工作的配置或东西?

编辑:

为了明确起见,目前我只能将视频流到我的服务器机器上/red5root/webApps/myApp/视频/目录中的网页上。

目前,我可以在视频标记中使用http://my.server.ip.address/myApp/videos/videoName.mp4来播放位于服务器上的视频目录中的一个名为"videoName.mp4“的视频。

我希望能够使用http://my.server.ip.address/myApp/someUniqeIdOrName并拥有我的Red5 CustomFilenameGenerator类,然后返回与"someUniqeIdOrName“相关联的视频的实际路径(在服务器上的其他文件系统中的某个位置),并从该位置播放视频。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-04-20 20:37:38

我无法找到一种方法让它与我的CustomFilenameGenerator类一起工作,但我找到了一个不同的解决方案,给了我相同的结果。

我添加了一个重定向servlet。在我的web.xml中添加以下内容:

代码语言:javascript
运行
复制
    <servlet>
        <servlet-name>fileServlet</servlet-name>
        <servlet-class>com.my.package.stream.app.FileServlet</servlet-class>
    </servlet>   
    <servlet-mapping>
        <servlet-name>fileServlet</servlet-name>
        <url-pattern>/files/*</url-pattern>
    </servlet-mapping>

然后,我根据示例FileServlet创建了一个这里类。

一旦从请求中获得文件名,就可以根据文件名执行任何逻辑来设置和返回响应中所需视频/文件的实际位置和名称。

示例:

代码语言:javascript
运行
复制
 ...
private void processRequest(HttpServletRequest request, HttpServletResponse response, boolean content) throws IOException {

        // Get requested file by path info.
        String requestedFile = request.getPathInfo();

        // Check if file is actually supplied to the request URL.
        if (requestedFile == null) {
            // Do your thing if the file is not supplied to the request URL.
            // Throw an exception, or send 404, or show default/warning page, or just ignore it.
            response.sendError(HttpServletResponse.SC_NOT_FOUND);
            return;
        }


       ****** Insert logic here to set basePath and requestedFile to what you need **** 


        // URL-decode the file name (might contain spaces and on) and prepare file object.
        File file = new File(basePath, URLDecoder.decode(requestedFile, "UTF-8"));  
   ...

使用上面的servlet和类似的FileServlet类,我可以通过在网页上的视频标记中设置src="http://[myip]:8080/[myApp]/files/[uniqeFileNameOrId]"来在服务器上的任何地方播放视频。

注意:如果您想从服务器返回的文件不是视频,FileServlet类的一个简单示例是这里

票数 0
EN

Stack Overflow用户

发布于 2017-04-06 20:07:52

要通过普通HTTP播放视频,您只需要一个普通的web服务器并将其嵌入到视频标记中。

如果您想通过HLS ()或MPEG Dash播放它,则需要分段(打包)。现场打包是由Wowza流媒体引擎完成,是伟大的交付现场流。

对于现有的视频,您也可以使用预先分割,可以完成FFMPEG。您可以使用免费的视频共享VOD交钥匙网站解决方案,以方便地管理视频,并在您的网站上生成段(如果您有兼容托管与FFMPEG和必要的编解码)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43213289

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档