我目前有一个Red5应用程序,它使用与Red5的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/视频/目录中的网页上。
目前,我可以在视频标记中使用http://my.server.ip.address/myApp/videos/videoName.mp4
来播放位于服务器上的视频目录中的一个名为"videoName.mp4“的视频。
我希望能够使用http://my.server.ip.address/myApp/someUniqeIdOrName
并拥有我的Red5 CustomFilenameGenerator类,然后返回与"someUniqeIdOrName“相关联的视频的实际路径(在服务器上的其他文件系统中的某个位置),并从该位置播放视频。
发布于 2017-04-20 20:37:38
我无法找到一种方法让它与我的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>
然后,我根据示例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类的一个简单示例是这里。
发布于 2017-04-06 20:07:52
要通过普通HTTP播放视频,您只需要一个普通的web服务器并将其嵌入到视频标记中。
如果您想通过HLS ()或MPEG Dash播放它,则需要分段(打包)。现场打包是由Wowza流媒体引擎完成,是伟大的交付现场流。
对于现有的视频,您也可以使用预先分割,可以完成FFMPEG。您可以使用免费的视频共享VOD交钥匙网站解决方案,以方便地管理视频,并在您的网站上生成段(如果您有兼容托管与FFMPEG和必要的编解码)。
https://stackoverflow.com/questions/43213289
复制相似问题