问题是当我在任何设备(物理和模拟器)上运行应用程序时出现错误“无法播放此视频”。我尝试了几乎所有可用的堆栈溢出和其他几个网站然后我认为问题可能是我的android API(24),但我尝试了其他几个具有更低或更高API的设备,但它不起作用。我将视频放在我的资源目录中,但它无法使用网址和设备存储。以下代码与资源目录完美配合,但我想从我的设备存储(内部或SD卡)访问视频。如果有人解决此问题,将会非常有帮助。 Click to see the error
这是我的java代码
public void start(View v1)
{
mc = new MediaController(this);
dm = new DisplayMetrics();
this.getWindowManager().getDefaultDisplay().getMetrics(dm);
int height = dm.heightPixels;
int width = dm.widthPixels;
v.setMinimumHeight(height);
v.setMinimumWidth(width);
mc.setAnchorView(v);
v.setMediaController(mc);
v.setVideoURI(Uri.parse("https://www.youtube.com/watch?v=a9eF2Lu742Q"));
//v.setVideoURI(Uri.parse("android.resource://jal.amar.com.myvideoplayexample/" + R.raw.movie));
//v.setVideoURI(Uri.parse(Environment.getRootDirectory()+"/movie.mp4"));
v.requestFocus();
v.start();
Toast.makeText(this, "Video has started", Toast.LENGTH_SHORT).show();
}
这是我的xml
<VideoView
android:id="@+id/videoview"
android:layout_width="362dp"
android:layout_height="433dp">
</VideoView>
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button"
android:onClick="start"/>
这是我的清单文件
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="jal.amar.com.myvideoplayexample">
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.MEDIA_CONTENT_CONTROL"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-sdk android:minSdkVersion="19"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="Video Lectures"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<!--android:screenOrientation="landscape"-->
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
答案 0 :(得分:0)
网址使用https://www.youtube.com/embed/a9eF2Lu742Q时出错 代替。
- 原因:https://www.youtube.com/watch?v=a9eF2Lu742Q是一个html页面而非视频文件
- 解决方案右键单击视频并从嵌入代码中复制链接。
另一种解决方案是使用Youtube SDK