来自PHP重定向的Android MediaPlayer Streaming无法正常运行!

Gui*_*rme 5 php video redirect android media-player

我工作的公司正在开发一个Android应用程序,它可以从网络上的URL播放视频文件.视频URL是PHP脚本的参数,可以正确编码并重定向到编码视频,如下所示:

header('Content-Type: video/'.$format);
header('Location:'.$output_video);
Run Code Online (Sandbox Code Playgroud)

$output_video编码视频的URL 在哪里(如果我们在浏览器中使用此URL,则它可以工作)并且$format是视频格式.

但是当我尝试使用流模式从API演示中执行MediaPlayerDemo_Video时,我收到如下错误:

MediaPlayer Command PLAYER INIT completed with an error or info PVMFErrCorrupt
MediaPlayer error (1. -10)
MediaPlayer Error (1.-10)
Run Code Online (Sandbox Code Playgroud)

如果我们在PHP脚本中对URL和格式进行硬编码,它也无法解决,但会出现不同的错误:

MediaPlayer info/warning (1. 28)
MediaPlayer Info (1 .28)
Run Code Online (Sandbox Code Playgroud)

有没有人知道如何解决这个问题?

提前致谢!

Mar*_* G. 8

我遇到了同样的问题.事实证明,Android MediaPlayer不会处理重定向,所以你必须找到php脚本重定向你的位置并将其作为Jeorgesys解释的rtsp URL.

我能够通过执行HttpGet并且不遵循任何重定向来解决,然后从'Location'Http标头中拉出rtsp url.如果你有多个重定向,你会遇到一些麻烦,但幸运的是,在我的情况下,我只需要担心一次重定向.

public static String resolveRedirect(String url) throws ClientProtocolException, IOException {
    HttpParams httpParameters = new BasicHttpParams();
    HttpClientParams.setRedirecting(httpParameters, false);

    HttpClient httpClient = new DefaultHttpClient(httpParameters);      
    HttpGet httpget = new HttpGet(url);
    HttpContext context = new BasicHttpContext();

    HttpResponse response = httpClient.execute(httpget, context);

    // If we didn't get a '302 Found' we aren't being redirected.
    if (response.getStatusLine().getStatusCode() != HttpStatus.SC_MOVED_TEMPORARILY)
        throw new IOException(response.getStatusLine().toString());

    Header loc[] = response.getHeaders("Location");
    return loc.length > 0 ? loc[0].getValue() : null;
}
Run Code Online (Sandbox Code Playgroud)


Jor*_*sys 2

响应是您尝试在 MediaPlayer 中流式传输什么文件,您的 URL 必须类似于 ::

rtsp://v1.cache5.c.youtube.com/CjYLENy73wIaLQkUvSkxA_7UKxMYESARFEIJbXYtZ29vZ2xlSARSBXdhdGNoYIPXxZHky7m5Rgw=/0/0/0/video.3gp

(尝试使用此网址)

使用rtsp协议和.3gp视频文件以及android 支持的正确编解码器。