我使用以下代码从网址播放视频。它工作正常,除了它首先下载视频,然后播放该视频
Uri uri = Uri.parse(URL);
video.setVideoURI(uri);
video.start();
但我想要直播视频,而不是下载然后播放
答案 0 :(得分:3)
流式传输有一些要求。
该文件可能无法“正确”编码
http://developer.android.com/guide/appendix/media-formats.html
对于通过HTTP或RTSP流式传输的视频内容,还有其他要求:
- 对于3GPP和MPEG-4容器,
moov
原子必须位于任何mdat
个原子之前,但必须接替ftyp
原子。- 对于3GPP,MPEG-4和WebM容器,对应于相同时间偏移的音频和视频样本可以相隔不超过500KB。为了最大限度地减少音频/视频漂移,请考虑以较小的块大小交错音频和视频。
您可能使用不支持它的旧版Android
HTTP渐进式流式传输仅在2.2中添加,HTTPS仅支持3.0+,实时流式传输仅支持更高版本。
答案 1 :(得分:3)
我在YouTube视频流方面工作,没有下载视频。 这仅适用于您播放YouTube视频的情况。
您必须使用YouTube API并使用它,您可以轻松管理您的任务。
您必须启用YouTube服务,并使用Developer Key
即可访问YouTube API。
How to use YouTube API ?您可以Find Here示例代码。
在该示例示例中,我使用了
PlayerViewDemoActivity.java
& YouTubeFailureRecoveryActivity.java
和XMl根据需要查看。
播放视频
public class PlayerViewDemoActivity extends YouTubeFailureRecoveryActivity
{
String youtube_id = "_UWXqFBF86U";
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.playerview_demo);
YouTubePlayerView youTubeView = (YouTubePlayerView) findViewById(R.id.youtube_view); // Replace your developer key
youTubeView.initialize(DeveloperKey.DEVELOPER_KEY, this);
}
@Override
public void onInitializationSuccess(YouTubePlayer.Provider provider,
YouTubePlayer player, boolean wasRestored)
{
if (!wasRestored)
{
player.cueVideo(youtube_id);
}
}
@Override
protected YouTubePlayer.Provider getYouTubePlayerProvider()
{
return (YouTubePlayerView) findViewById(R.id.youtube_view);
}
}
希望这会对您有所帮助,如果您有任何疑问,请告诉我。
答案 2 :(得分:0)
使用像这样:
Uri uri = Uri.parse(URL); //Declare your url here.
VideoView mVideoView = (VideoView)findViewById(R.id.videoview)
mVideoView.setMediaController(new MediaController(this));
mVideoView.setVideoURI(uri);
mVideoView.requestFocus();
mVideoView.start();
另一种方法:
String LINK = "type_here_the_link";
VideoView mVideoView = (VideoView) findViewById(R.id.videoview);
MediaController mc = new MediaController(this);
mc.setAnchorView(videoView);
mc.setMediaPlayer(videoView);
Uri video = Uri.parse(LINK);
mVideoView.setMediaController(mc);
mVideoView.setVideoURI(video);
mVideoView.start();
如果您收到此错误Couldn't open file on client side, trying server side Error in Android。还有Refer this。 希望这会给你一些解决方案。
答案 3 :(得分:0)
For showing buffering you have to put progressbar of ProgressDialog ,... here i post progressDialog for buffering ...
pDialog = new ProgressDialog(this);
// Set progressbar message
pDialog.setMessage("Buffering...");
pDialog.setIndeterminate(false);
pDialog.setCancelable(false);
// Show progressbar
pDialog.show();
try {
// Start the MediaController
MediaController mediacontroller = new MediaController(this);
mediacontroller.setAnchorView(mVideoView);
Uri videoUri = Uri.parse(videoUrl);
mVideoView.setMediaController(mediacontroller);
mVideoView.setVideoURI(videoUri);
} catch (Exception e) {
e.printStackTrace();
}
mVideoView.requestFocus();
mVideoView.setOnPreparedListener(new OnPreparedListener() {
// Close the progress bar and play the video
public void onPrepared(MediaPlayer mp) {
pDialog.dismiss();
mVideoView.start();
}
});
mVideoView.setOnCompletionListener(new OnCompletionListener() {
public void onCompletion(MediaPlayer mp) {
if (pDialog.isShowing()) {
pDialog.dismiss();
}
finish();
}
});