Java &引用;Can';“不要播放此视频”;在Android Studio上使用VideoView…尝试了很多东西,但仍然没有';行不通
您好,我正在尝试在Android Studio应用程序上播放432x320.mp4视频(我已手动转换为.mp4 H.264格式),使用帧布局中的相对布局。我一直收到“无法播放此视频错误” 以下是我的.xml文件(注意,我有许多按钮/imagebutton,我在这里的帖子中省略了它们,因为它们不相关,并且占用了很多空间) 而且Java &引用;Can';“不要播放此视频”;在Android Studio上使用VideoView…尝试了很多东西,但仍然没有';行不通,java,android,video,android-videoview,Java,Android,Video,Android Videoview,您好,我正在尝试在Android Studio应用程序上播放432x320.mp4视频(我已手动转换为.mp4 H.264格式),使用帧布局中的相对布局。我一直收到“无法播放此视频错误” 以下是我的.xml文件(注意,我有许多按钮/imagebutton,我在这里的帖子中省略了它们,因为它们不相关,并且占用了很多空间) 而且 String uriPath = "android.resource://" + "com.android.engineersdream.ed_video/
String uriPath = "android.resource://" +
"com.android.engineersdream.ed_video/" + R.raw.alphie_vidprompt;
Uri uri = Uri.parse(uriPath);
mVideoView.setVideoURI(uri);
mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mVideoView.start();
}
});
尽管我尝试了一些建议,但我还是没能让任何东西发挥作用,这些建议是给那些在视频浏览视频工作中遇到类似问题的人提出的。有没有其他建议我可能会错过?我的视频格式不正确吗?在Android Studio上播放视频还有其他更简单的方法吗?谢谢
编辑:
我试着按照建议将video.mp4文件复制到SD卡上,但仍然不起作用。我已将这些文件放在Android Manifest.xml文件中:
android.permission.READ_外部存储和android.permission.WRITE_外部存储
这是我为OnCreate所做的
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.alphie_ii);
mVideoView = (VideoView)findViewById(R.id.videoView);
push = (ImageButton) findViewById(R.id.On);
//imgButton.setOnClickListener(imgButtonHandler);
final int[] mvids = new int[] { R.raw.alphie_vidprompt, R.raw.alphie_vidcorrect };
for (int i = 0; i < mvids.length; i++) {
try {
String path = Environment.getExternalStorageDirectory() + "/Alphie";
File dir = new File(path);
if (dir.mkdirs() || dir.isDirectory()) {
String str_song_name = i + ".mp4";
CopyRAWtoSDCard(mvids[i], path + File.separator + str_song_name);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
private void CopyRAWtoSDCard(int id, String path) throws IOException {
InputStream in = getResources().openRawResource(id);
FileOutputStream out = new FileOutputStream(path);
byte[] buff = new byte[1024];
int read = 0;
try {
while ((read = in.read(buff)) > 0) {
out.write(buff, 0, read);
}
} finally {
in.close();
out.close();
}
}
我仍然收到同样的信息“无法播放此视频”
虽然我还有很多东西要学,但我还是不明白为什么要把视频复制到SD卡上。我希望从res/raw目录运行它足够简单。您给出了错误的包名(
com.example.s3project
或com.android.engineersdream.ed\u video
)。您的布局应该是com.example.kenneth.alphieii
或com.example.kenneth
。但您应该使用上下文中的包名称,如:
getPackageName();
所以在你的情况下,你应该使用
"android.resource://".concat(getPackageName()).concat("/raw/").concat(R.raw.alphie_vidprompt);
你能试着将视频复制到你的设备并链接到该路径吗?我实际上使用的是Android Emulator,理想情况下,我希望视频成为整个Gradle(和应用程序的一部分)的一部分,而不是与应用程序分离。我的意思是将你的应用程序更改为使用SD卡作为URI,而不是资源。请确保您使用的设备支持H264格式和相同的代码,尝试播放.mp4文件。如果它有效,那么代码中就没有问题。问题可能在于您将.mp4从AT转换为H264的方式
Uri vidFile = Uri.parse(
Environment.getExternalStorageDirectory().getAbsolutePath()
+ "alphie/alphie_vidprompt");
mVideoView.setVideoURI(vidFile);
mVideoView.start();
getPackageName();
"android.resource://".concat(getPackageName()).concat("/raw/").concat(R.raw.alphie_vidprompt);