[英]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.