如何在 android 中播放来自 URL 的流媒体视频?

Posted

技术标签:

【中文标题】如何在 android 中播放来自 URL 的流媒体视频?【英文标题】:How to play a streaming video from URL in android? 【发布时间】:2014-02-07 06:10:53 【问题描述】:

我想在 android 中播放来自网站的流媒体视频。

例如,我想从这个 url 播放流媒体视频:http://florotv.com/canal2.html

使用 URL Helper,我已经能够捕获它的 rtmp URL

rtmp://198.144.153.139:443/kuyo<playpath>ver44?id=acf6f5271f8ce567ed6c8737ce85a044&pid=32342e3136362e37332e323139 <swfUrl>http://yukons.net/yplay2.swf <pageUrl>http://yukons.net/embed/37363635373233343334/eeff74c57593ca38defc902fa6d88005/600/400

现在我有了这个网址,我想知道是否可以在 android 中播放视频。

这个我试过了但是不行,因为我不知道怎么设置swfUrl,pageUrl.....

private static final String MOVIE_URL="rtmp://198.144.153.139:443/kuyo";
Intent intent = new Intent(android.content.Intent.ACTION_VIEW);
Uri data = Uri.parse(MOVIE_URL);
intent.setData(data);
startActivity(intent);

提前谢谢....

【问题讨论】:

【参考方案1】:

将以下代码添加到您的 Activity.java 文件中。

protected void onCreate(Bundle savedInstanceState)
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.videoPlayer);
try         
    String link="http://videocloud/video.mp4";
    VideoView videoView = (VideoView) findViewById(R.id.myVideoView);
    final ProgressBar pbLoading = (ProgressBar) findViewById(R.id.pbVideoLoading);
    pbLoading.setVisibility(View.VISIBLE);
    MediaController mediaController = new MediaController(this);
    mediaController.setAnchorView(videoView);
    Uri video = Uri.parse(link);
    videoView.setMediaController(mediaController);
    videoView.setVideoURI(video);
    videoView.start();
    videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() 
                        @Override
                        public void onPrepared(MediaPlayer mp) 
                            pbLoading.setVisibility(View.GONE);
                        
    );
 catch (Exception e) 
    // TODO: handle exception
    Toast.makeText(this, "Error connecting", Toast.LENGTH_SHORT).show();

如果您不需要 MediaController,请将其设置为 null videoView.setMediaController(null)

【讨论】:

【参考方案2】:

我认为仅仅创建一个意图是不够的,您还必须为要播放的视频创建一个上下文:就像一个 VideoView 对象。

下面的链接对此模式有建议: http://androidcodeexamples.blogspot.sg/2011/08/how-to-play-mp4-video-in-android-using.html

本质上,MediaController 对象是使用 VideoView 对象创建的。然后在设置 URI 后使用 VideoView 启动操作。

编辑: 可能主要问题是您的 URL 包含 POST 参数,并且不完全是资源的唯一标识符(在本例中为视频文件)。

“swfUrl”和“pageUrl”参数很可能是为您提供页面的服务器所独有的。

【讨论】:

感谢您的回答。但是,我已经用这个变量 MOVIE_URL="rtmp://musicbox.cdnvideo.ru/musicbox-live/musicbox.sdp" 尝试了我的代码,它运行良好。 在这种情况下,您是否尝试将捕获的整个 rtmp URL 分配给 MOVIE_URL 变量?【参考方案3】:

您可以使用Vitamio android 库,您可以在其中设置swfUrl 和pageUrl。

这是一个tutorial。

【讨论】:

以上是关于如何在 android 中播放来自 URL 的流媒体视频?的主要内容,如果未能解决你的问题,请参考以下文章

如何播放来自服务器的流式 PCM 数据,如 Android AudioTrack 类?

在 iOS 6 应用程序中播放广播链接

如何在 android 中从 url 播放动画 GIF 图像?

如何使用 QMediaPlayer 播放流媒体音频?

无法在videoview android中播放来自url的视频

如何在android的webview上播放音频?