有没有办法播放带有视频xhtml标签的Java InputStream或包含带有视频xhtml标签的授权标头?

时间:2019-10-28 17:08:42

标签: jsf primefaces xhtml

我一直在尝试将提供图像和视频的API与另一个项目集成在一起,并且正在为播放视频的xhtml / primefaces挣扎。我应该提到的是,我们以前曾使用视频标签来提供来自本地文件系统的视频,并且我已经成功地将API与其他两个项目成功集成。

当我尝试包含视频标签或p:media标签的那一刻,我无法在该项目上播放视频。我应该指出,我没有给primfaces机会,因为没有视频播放器支持该项目,因为它们没有预先安装,我们不希望它成为播放简单视频的麻烦,因为它不是以前没有麻烦。如果可以得到帮助,我不想使用素数符号。

无论如何,这是我下载视频的代码段。我也尝试了所有被注释掉的方法,但是都没有用(Base64视频的性能太差了。)

    @SneakyThrows
public InputStream downloadVideoFromBlob() {
    String authorizationHeader = "XXXXXX-XXXXXX-XXXXXX-XXXXXX-XXXXXX";
    String videoUrl = getUrlVideo(); //returns an https url
    try {
        URL url = new URL (videoUrl);
        HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
        connection.setRequestMethod("GET");
        connection.setRequestProperty  ("Authorization", authorizationHeader);
        connection.setDoInput(true);
        connection.setDoOutput(true);
        int responseCode = connection.getResponseCode();
        InputStream in = (InputStream)connection.getInputStream();
        return in;
        //return new DefaultStreamedContent(in, "video/mp4");
        //ByteArrayOutputStream out = new ByteArrayOutputStream();
        //byte[] buf = new byte[1024];
        //int n = 0;
        //while (-1!=(n=in.read(buf)))
        //{
        //  out.write(buf, 0, n);
        //}
        //out.close();
        //in.close();
        //return out.toByteArray();
        //return new String(Base64.encodeBase64(out.toByteArray()));
    } catch(Exception e) {
        e.printStackTrace();
    }
    return null;
}

这是视频代码:

<video width="640" height="480" controls="controls"  autoplay="autoplay" oncontextmenu="javascript:return false;">
    <source src="#{bean.downloadVideoFromBlob()}" type="video/mp4" />
</video>

编辑: TLDR: 我不想安装第三方视频播放器,该视频播放器比xhtml视频标签更不适合使用素颜。如果可能的话,我只是想向xhtml视频标签的url添加一个auth标头。

0 个答案:

没有答案