Видео не воспроизводится в Android
видео не работает должным образом в приведенном ниже коде. В чем может быть проблема?
MediaController mediaController = new MediaController(getBaseContext());
mediaController.setAnchorView(videoweb);
Uri video = Uri.parse("http://www.youtube.com/v/wwI2w2YHkCQ?fs=1");
videoweb.setMediaController(mediaController);
videoweb.setVideoURI(video);
videoweb.start();
ошибка:
Не удается воспроизвести видео
Извините, это видео нельзя воспроизвести.
5 ответов
ссылка, которую вы предоставили, http://www.youtube.com/v/wwI2w2YHkCQ?fs=1
для HTML-страницы. Этот URI для setVideoURI()
должен быть медиа-файлов, таких как МР4 или AVI.
VideoView не может анализировать HTML-страницу. Он может только декодировать и воспроизводить видеофайл или передавать видеоконтент (в этом случае URI должен указывать на медиафайл, например http://people.sc.fsu.edu/~jburkardt/data/mp4/cavity_flow_movie.mp4
). См. вопрос переполнения стека использование VideoView для потоковой передачи или прогрессивной загрузки видео.
вы должны использовать Webview для открытия ссылки YouTube.
VideoView
и Mediaplayer
может воспроизводить только форматы, указанные в документе Android Поддерживаемые Форматы Мультимедиа.
ссылка на видео YouTube, которое вы дали, предназначена для HTML-страницы. Если вы играете на HTML-странице, Как упоминалось в Karthik, лучше использовать Webview
.
String url = "your_youtube_link";
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
если вы хотите просмотреть только видео по этой ссылке, оставьте все остальные детали на странице. Предположим, это ссылка YouTube http://www.youtube.com/watch?v=ZC7ZOGpM2cU&feature=g-logo&context=G233b464FOAAAAAAABAA
если вы проанализируете источник HTML-страницы YouTube, вы можете увидеть эту часть:
<link rel="alternate" type="application/json+oembed" href="http://www.youtube.com/oembed?url=http%3A//www.youtube.com/watch?v%3DZC7ZOGpM2cU&format=json" title="Bigg Boss 5: Juhi Parmar wins Big Boss season 5">
<link rel="alternate" type="text/xml+oembed" href="http://www.youtube.com/oembed?url=http%3A//www.youtube.com/watch?v%3DZC7ZOGpM2cU&format=xml" title="Bigg Boss 5: Juhi Parmar wins Big Boss season 5">
<meta property="fb:app_id" content="87741124305">
<meta property="og:url" content="http://www.youtube.com/watch?v=ZC7ZOGpM2cU">
<meta property="og:title" content="Bigg Boss 5: Juhi Parmar wins Big Boss season 5">
<meta property="og:description" content="Ntv News: Juhi Parmar wins Bigg Boss 5 - Juhi Parmar wins 'Bigg Boss 5', takes home Rs.1 crore - No kid for now, keen for good work: Juhi Parmar">
<meta property="og:type" content="video">
<meta property="og:image" content="http://i3.ytimg.com/vi/ZC7ZOGpM2cU/hqdefault.jpg">
<meta property="og:video" content="http://www.youtube.com/v/ZC7ZOGpM2cU?version=3&autohide=1">
<meta property="og:video:type" content="application/x-shockwave-flash">
<meta property="og:video:width" content="396">
<meta property="og:video:height" content="297">
<meta property="og:site_name" content="YouTube">
в этом, извлечь следующее
<meta property="og:video" content="http://www.youtube.com/v/ZC7ZOGpM2cU?version=3&autohide=1">
в этом <http://www.youtube.com/v/ZC7ZOGpM2cU?version=3&autohide=1>
ссылка будет отображаться в полноэкранном режиме.
На самом деле, для воспроизведения любого потокового видео я использую
startActivity(new Intent(Intent.ACTION_VIEW,Uri.parse("http://www.youtube.com/v/wwI2w2YHkCQ?fs=1")));
но я не думаю, что это сработает для вашей ссылки. Лучше попробовать
mediaplayer.setdataSource("your link").
OK, попробуйте следующий код. Это сработает.
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse("http://www.youtube.com/v/wwI2w2YHkCQ?fs=1"));
startActivity(i);
private VideoView mVideoView;
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);
mVideoView = (VideoView) findViewById(R.id.surface_view);
}
private void playVideo() {
try {
final String path = "http://www.youtube.com/v/wwI2w2YHkCQ?fs=1"
System.out.println("path "+path);
Log.v(TAG, "path: " + path);
if (path == null || path.length() == 0) {
Toast.makeText(VideoViewDemo.this, "File URL/path is empty",
Toast.LENGTH_LONG).show();
}
else {
System.out.println("else ");
// If the path has not changed, just start the media player
if (path.equals(current) && mVideoView != null) {
System.out.println("mVideoView.start() ");
mVideoView.start();
mVideoView.requestFocus();
return;
}
current = path;
//mVideoView.setVideoPath(getDataSource(path));
mVideoView.setVideoURI(Uri.parse(path));
mVideoView.start();
mVideoView.requestFocus();
}
}
catch (Exception e) {
Log.e(TAG, "error: " + e.getMessage(), e);
if (mVideoView != null) {
mVideoView.stopPlayback();
}
}
}
main.в XML
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<EditText android:id="@+id/path"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<LinearLayout android:orientation="horizontal"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
>
<ImageButton android:id="@+id/play"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:src="@drawable/play"/>
<ImageButton android:id="@+id/pause"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:src="@drawable/pause"/>
<ImageButton android:id="@+id/reset"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:src="@drawable/reset"/>
<ImageButton android:id="@+id/stop"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:src="@drawable/stop"/>
</LinearLayout>
<VideoView android:id="@+id/surface_view"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
</VideoView>
</LinearLayout>