我目前有一个Red5应用程序,它使用类似于上面显示的示例的自定义流路径 Red5's wiki
使用以下rtmp流时效果很好:
rtmp://localhost:1935/streaming/videos/myVid.mp4
我需要能够使用http流做同样的事情。 例如:
http://localhost:8080/streaming/videos/myVid.mp4
当我将流url从rtmp更改为http时,不再调用CustomFilenameGenerator类。
使用http时是否可以拥有自定义流路径?如果是,是否需要添加/更改配置或某些内容才能使其正常工作?
编辑:
为了清楚起见,目前我只能将视频流式传输到位于我的服务器计算机上/ red5Root / webApps / myApp / videos /目录中的网页。
我目前可以在视频代码中使用http://my.server.ip.address/myApp/videos/videoName.mp4
来播放位于我服务器上视频目录中的名为“videoName.mp4”的视频。
我希望能够使用http://my.server.ip.address/myApp/someUniqeIdOrName
并让我的Red5 CustomFilenameGenerator类返回与“someUniqeIdOrName”关联的视频的实际路径(我服务器上文件系统中的其他位置)并播放视频从那个位置。
答案 0 :(得分:0)
要通过普通HTTP播放视频,您只需要一个普通的Web服务器并将其嵌入到VIDEO标记中。
如果您想通过HLS(HTTP直播流)或MPEG Dash播放,则需要对其进行分段(分组)。 实时数据包由Wowza Streaming Engine完成,非常适合提供实时流。
对于现有视频,您还可以使用可以使用FFMPEG进行的预分割。您可以使用免费的Video Share VOD交钥匙网站解决方案轻松管理视频并在您的网站上生成细分(如果您与FFMPEG和必要的编解码器兼容托管)。
答案 1 :(得分:0)
我无法找到一种方法来使用我的CustomFilenameGenerator类,但我找到了一个不同的解决方案,它给了我相同的结果。
我添加了一个重定向servlet。在我的web.xml中添加以下内容:
<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>
然后我根据示例here创建了一个FileServlet类。
从请求中获取文件名后,您可以根据要设置的文件名执行任何逻辑,并返回响应中所需视频/文件的实际位置和名称。
示例:
...
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类的简单示例为here。