从HTTPS网址流式传输视频时出错

时间:2015-03-10 14:21:25

标签: android video https streaming

我在正常的http中流式传输视频没有问题。 (例如:http://www.mywebsite.com/myvideo.mp4

但是当我把它改成HTTPS时。我遇到了一个错误 (例如:https://www.mywebsite.com/myvideo.mp4

有没有人试过这个?使用HTTPS链接将视频流式传输到第三方APP。 (通过将url / uri传递给android中的应用程序,询问用户将使用哪个应用来播放视频)

目前的情况是:

1。)我有一个https链接

2。)我已经启动了一个意图,并检查安装在android手机中的所有可用视频播放器(我目前已经安装了vlc,mx     播放器,视频播放器,内置OS播放器等。)

3。)我尝试选择上述任何一种,但它们都不起作用。 (它只是提示一条消息,说“玩家遇到错误”这是一个     一般错误。我只是试图将URL / URI传递给播放器。)

4。)请注意,如果我尝试在网络浏览器中播放它,一切正常。

5.请注意,我再次使用相同的代码

来传输http视频
String videoURL = "https://www.mywebsite.com/myvideo.mp4";
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(videoURL));
intent.setDataAndType(Uri.parse(videoURL), "video/*");
startActivity(intent);

在我的清单文件中,我使用默认设置,但我允许上网。

我不确定这是否相关或者这可以帮助但是:我能够缓冲来自同一个SERVER的HTTPS音频文件。因为android有一个内置的媒体播放器支持wav& mp3,我不是要求用户选择媒体播放器,因为它可以支持上述格式。当我在同一服务器中缓冲音频时,我只发出以下代码。所以一切都很好。

public HttpClient getNewHttpClient() {
    try {
        KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());
        trustStore.load(null, null);

        SSLSocketFactory sf = new MySSLSocketFactory(trustStore);
        sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);

        HttpParams params = new BasicHttpParams();
        HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
        HttpProtocolParams.setContentCharset(params, HTTP.UTF_8);

        SchemeRegistry registry = new SchemeRegistry();
        registry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
        registry.register(new Scheme("https", sf, 443));

        ClientConnectionManager ccm = new ThreadSafeClientConnManager(params, registry);

        return new DefaultHttpClient(ccm, params);
    } catch (Exception e) {
        return new DefaultHttpClient();
    }
}

`

但是当谈到播放视频时,我会询问用户他想要播放哪个APP,导致该文件可能不受支持。

FIX

看起来,android在断链证书中有一些问题,为了解决这个问题,你必须修复破损的链证书。要查看您的证书,只需访问ssllabs.com/ssltest/analyze.html?d=yourwebsite.com

1 个答案:

答案 0 :(得分:2)

经过长时间的努力,我找到了解决方案,

  

覆盖您的videoview类及以下代码。

library('corrplot')

#options(error=recover) # http://stackoverflow.com/a/15031603/54964
#debugger()
# load("last.dump.rda"); debugger(last.dump) # run if fail
options(error=function() dump.frames(to.file=TRUE))

# http://www.sthda.com/english/wiki/visualize-correlation-matrix-using-correlogram
cor.mtest <- function(mat, ...) {
    mat <- as.matrix(mat)
    n <- ncol(mat)
    p.mat<- matrix(NA, n, n)
    diag(p.mat) <- 0
    for (i in 1:(n - 1)) {
        for (j in (i + 1):n) {
            tmp <- cor.test(mat[, i], mat[, j], ...)
            p.mat[i, j] <- p.mat[j, i] <- tmp$p.value
        }
    }
  colnames(p.mat) <- rownames(p.mat) <- colnames(mat) 
  p.mat
}

M <- cor(mtcars)

p.mat <- cor.mtest(M)

title <- "ECG p-value significance"
col <- colorRampPalette(c("#BB4444", "#EE9988", "#FFFFFF", "#77AADD", "#4477AA"))
corrplot(M, method="color", col=col(200),  
     diag=FALSE, # tl.pos="d", 
         type="upper", order="hclust", 
     title=title, 
         addCoef.col = "black", # Add coefficient of correlation
         # Combine with significance
         p.mat = p.mat, sig.level = 0.05, insig = "blank" 
         # hide correlation coefficient on the principal diagonal
         )