[英]Android VideoView stop streaming after specific time
我正在从Android中的此URL播放实时流
到目前为止,我已经设法在videoView中播放视频,问题是视频在23秒后恰好停止了,因此我使用videoview方法setOnCompletionListener
(...)来重新启动视频,但是,这提供了糟糕的体验对于观看者来说,因为它每23秒停止一次并重新开始,所以也会错过几帧。
所以我的问题是“在播放当前缓冲的视频时如何使videoView缓冲视频的下一部分。
这是我的代码
public class TvActivity extends Activity {
// Declare variables
ProgressDialog pDialog;
VideoView videoview;
// Insert your Video URL
String VideoURL = "";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Get the layout from video_main.xml
setContentView(R.layout.videoview_main);
// Find your VideoView in your video_main.xml layout
videoview = (VideoView) findViewById(R.id.VideoView);
// Execute StreamVideo AsyncTask
VideoURL = "http://ns3622101.ip-149-202-201.eu:8000/live/fr443500/75019pa/286.ts";
// Create a progressbar
pDialog = new ProgressDialog(TvActivity.this);
// Set progressbar title
pDialog.setTitle("Video Streaming ");
// Set progressbar message
pDialog.setMessage("buffering ...");
pDialog.setIndeterminate(true);
pDialog.setCancelable(true);
// Show progressbar
pDialog.show();
try {
// Start the MediaController
final MediaController mediacontroller = new MediaController(
TvActivity.this);
mediacontroller.setAnchorView(videoview);
// Get the URL from String VideoURL
final Uri video = Uri.parse(VideoURL);
videoview.setMediaController(mediacontroller);
videoview.setVideoURI(video);
videoview.requestFocus();
videoview.setOnPreparedListener(new OnPreparedListener() {
// Close the progress bar and play the video
public void onPrepared(MediaPlayer mp) {
pDialog.dismiss();
videoview.start();
}
});
videoview.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
videoview.stopPlayback();
videoview.setVideoURI(video);
videoview.requestFocus();
videoview.start();
}
});
} catch (Exception e) {
Log.e("Error", e.getMessage());
e.printStackTrace();
}
}
}
当您从Live Stream URL播放视频时,建议您使用第三方播放器流式传输视频并缓冲视频的下一部分,建议您使用Android GirrafePlayer,这是很好的播放器,请从此处获取
as you are Streaming
.ts file
我认为android videoview不会流式传输该视频文件,因此请尝试使用.ts文件流式支持的播放器来流式传输该视频文件。
对于实时流媒体以及离线音频或视频播放,我建议使用ExoPlayer
这是用于播放Google开发的音频和视频的很好的库。 简短的介绍如下:
“ ExoPlayer是适用于Android的应用程序级媒体播放器。它提供了Android MediaPlayer API的替代方案,可以在本地和Internet上播放音频和视频。ExoPlayer支持Android MediaPlayer API当前不支持的功能,包括DASH和SmoothStreaming自适应播放。 Mediaolayer API,ExoPlayer易于定制和扩展,可以通过Play商店应用程序更新进行更新。”
有关更多信息,请在Github上搜索ExoPlayer。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.