来自HttpResponse对象的Android视频流

来自HttpResponse对象的Android视频流,android,video-streaming,android-video-player,Android,Video Streaming,Android Video Player,我想播放来自HttpResponse对象的视频内容。内容正在从流媒体服务器下载 我的要求是创建一个到服务器的HTTP POST请求。请求包含用于身份验证的视频URL、用户的用户名和密码 我想知道如何创建HTTP POST请求并播放/下载视频 请提供一些提示、步骤/代码以继续 谢谢,查看以下链接 对于流媒体,我认为您必须下载完整的文件,然后在视频播放器中显示。检查以下代码,以在视频视图中显示url http或rtsp 现在在调用videoview之前。。就这样 public class Vid

我想播放来自HttpResponse对象的视频内容。内容正在从流媒体服务器下载

我的要求是创建一个到服务器的HTTP POST请求。请求包含用于身份验证的视频URL、用户的用户名和密码

我想知道如何创建HTTP POST请求并播放/下载视频

请提供一些提示、步骤/代码以继续


谢谢,

查看以下链接


对于流媒体,我认为您必须下载完整的文件,然后在视频播放器中显示。

检查以下代码,以在视频视图中显示url http或rtsp

现在在调用videoview之前。。就这样

public class VideoViewDemo extends Activity {

    /**
     * TODO: Set the path variable to a streaming video URL or a local media
     * file path.
     */
    private String path = "";
    private VideoView mVideoView;

    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        setContentView(R.layout.videoview);
        mVideoView = (VideoView) findViewById(R.id.surface_view);

        if (path == "") {
            // Tell the user to provide a media file URL/path.
            Toast.makeText(
                    VideoViewDemo.this,
                    "Please edit VideoViewDemo Activity, and set path"
                            + " variable to your media file URL/path",
                    Toast.LENGTH_LONG).show();

        } else {

            /*
             * Alternatively,for streaming media you can use
             * mVideoView.setVideoURI(Uri.parse(URLstring));
             */
            mVideoView.setVideoPath(path);
            mVideoView.setMediaController(new MediaController(this));
            mVideoView.requestFocus();

        }
    }
}
现在,由于您的要求不同,请首先向您的服务器发出http post请求。。。获取所需的输入流。。将该流作为mp4写入本地文件系统。然后您可以使用下面的代码播放内容

// this can be path on file system
 String path="/adf.mp4"  ; 
    public void playVideo() { 

        MediaController mediaController = new MediaController(this);
        mediaController.setMediaPlayer(videoView);
        videoView.setVideoPath(path);   
        videoView.setMediaController(mediaController);
        videoView.requestFocus();
        videoView.start();
        mediaController.show();

我不是100%确定,但我认为,由于格式存储视频元数据的方式,您无法流式传输大部分视频。这就是为什么你必须转换你的视频文件,而不是仅仅以任何格式显示它们。 有一些协议封装了这些元数据,并允许您流式传输任何视频(youtube mobile就是这么做的)。您应该看看RTSP:

如果在videoView中使用rtsp链接,则应完美地传输视频。关键是您的问题与服务器无关,而与客户端无关

作为练习,您可以从m.youtube.com获取一个rtsp链接,然后使用setVideoPath传递到一个videoView,它应该可以工作

如果无法更改服务器实现,则您可能需要他们我猜您的解决方案是:

1) 自己下载并解码视频,您必须处理所有元数据并确保视频正常工作。理论上,你可以为android编译ffmpeg来帮助你实现这一点,但我不能在打开网络选项的情况下将其编译为android。这是一个很大的工作

2) 编写自己的RTSP或其他流协议的实现。在线程中下载视频,然后他们在设备中创建一个本地服务器,将该视频文件流式传输到videoView实例。事实上,我在一个应用程序中使用了这个。Android不支持客户端服务器使用的特定协议,我必须让它工作。我花了整整一个月的时间做这件事。我不能发布任何示例代码,因为这都是客户的,但如果您感兴趣,我可以给您一些关于这方面的进一步信息


无论哪种方式,如果你不能更改视频的服务器/格式,那么你应该准备大量的工作。

我尝试了这个方法,它对我起了作用:没有rtsp什么都没有,只有一个带有mp4视频的url,它就播放了

public class VideoActivity extends Activity {
    public static final String KEY = "video_id";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.fotogaleria_video);
    Intent i = getIntent();
    if(i.hasExtra(KEY)){
        String url = "https://sites.google.com/site/tempmp4download/bnm.mp4";
        VideoView vv = (VideoView)findViewById(R.id.fotogaleria_video);
        // vv.setVideoPath(url);
        vv.setVideoURI(Uri.parse(url));
        vv.setMediaController(new MediaController(this));
        vv.requestFocus();
        vv.start();

        }

    }
}

谢谢你,阿什瓦尼。我想知道从响应中获取实时流媒体内容并在Mediaplayer或VideoView中播放的步骤/代码:(“对于流媒体,我认为您必须下载完整的文件,然后在视频播放器中显示它”我想没有必要将视频下载到流媒体,如果是这样的话,那么直播流媒体是如何工作的?嗨,阿尼尔,上面的代码是用于下载视频并保存在文件系统中并播放它。但我的要求是直接从服务器播放(视频流媒体).hi adarsh…您可以使用video view setVideoPath方法直接流式传输rtsp视频…然后,在这种情况下,它将发出get请求。但就您的问题而言,您需要在post请求中发送用户名和密码。因此,如果您尚未尝试,有一种解决方法…分别发出一个http post请求并获得授权身份验证令牌..将此身份验证令牌与url一起传递以下载视频并使用视频视图进行流式传输谢谢,rename.antunes。当前服务器使用Http流式传输,检索到的视频文件为.mp4格式。其他支持流式传输的链接(如)在Android客户端应用程序中运行良好。能否提供更多详细信息支持流媒体的服务器需要ils服务器配置?此处:。Android 3.0应该与HTTP实时流媒体一起工作,从2.2版开始,您将拥有flash 10.1,因此我猜您可以编写基于flash的应用程序并使用RTMP/flash HTTP流媒体。不过,我不知道具体如何使用。