如何在 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 类?
如何在 android 中从 url 播放动画 GIF 图像?