【发布时间】:2017-12-17 01:34:32
【问题描述】:
在我的台式计算机上的 Google Chrome 浏览器中,我可以使用以下链接流式传输驻留在我的服务器上的 mp4 视频文件:
file://192.168.0.1/Videos/video.mp4
我想在 Android 应用中做同样的事情,但是当我尝试将这个相同的链接放入 VideoView 或 WebView 时会遇到错误。
在 VideoView 中它会给出一个错误,说它无法播放这个文件,而在 WebView 中它会给出一个文件权限错误。
我正在使用的 VideoView 代码是:
// Declare variables
ProgressDialog pDialog;
VideoView videoview;
// Insert your Video URL
String VideoURL = "file://192.168.0.1/Videos/video.mp4";
@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
// Create a progressbar
pDialog = new ProgressDialog(VideoViewActivity.this);
// Set progressbar title
pDialog.setTitle("Android Video Streaming Tutorial");
// Set progressbar message
pDialog.setMessage("Buffering...");
pDialog.setIndeterminate(false);
pDialog.setCancelable(false);
// Show progressbar
pDialog.show();
try {
// Start the MediaController
MediaController mediacontroller = new MediaController(
VideoViewActivity.this);
mediacontroller.setAnchorView(videoview);
// Get the URL from String VideoURL
Uri video = Uri.parse(VideoURL);
videoview.setMediaController(mediacontroller);
videoview.setVideoURI(video);
} catch (Exception e) {
Log.e("Error", e.getMessage());
e.printStackTrace();
}
videoview.requestFocus();
videoview.setOnPreparedListener(new OnPreparedListener() {
// Close the progress bar and play the video
public void onPrepared(MediaPlayer mp) {
pDialog.dismiss();
videoview.start();
}
});
}
WebView 代码是:
WebView webview = (WebView) findViewById(R.id.webView1);
webview.setWebViewClient(new WebViewClient());
webview.getSettings().setJavaScriptEnabled(true);
webview.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
webview.getSettings().setPluginState(WebSettings.PluginState.ON);
webview.getSettings().setMediaPlaybackRequiresUserGesture(false);
webview.setWebChromeClient(new WebChromeClient());
webview.loadUrl("file://192.168.0.1/Videos/video.mp4");
VideoView 或 WebView 中文件协议的链接格式是否不同,导致此功能无法正常工作,还是其他问题?
【问题讨论】:
标签: android webview video-streaming android-videoview