Вечерние,
Я только что начал программировать с помощью андроида и сделал несколько программ и все, поэтому я все еще новичок, но я пытаюсь понять все это.
Итак, вот моя проблема, я пытаюсь воспроизвести видео, дело в том, что я начал работать, когда я передаю его с URL-адреса с помощью VideoView через Интернет или когда я нахожусь на своей SD-карте.
Теперь я хочу воспроизвести видео, которое у меня есть в моей папке res/raw, но оно воспроизводит только аудио, и я не понимаю, почему это не дает ошибок в моем логарифме до тех пор, пока Я также вижу, также не мог найти решение с Google, так как большинство ответов касательно VideoView и просто поместите видео на SDCard.
Теперь кто-то сказал мне, что мне пришлось использовать setDisplay (SurfaceHolder), и я также пробовал это, но я все еще получаю аудио.
Я надеюсь, что кто-то может помочь мне найти решение этой проблемы.
VideoDemo.java
package nl.melvin.videodemo;
import android.app.Activity;
import android.os.Bundle;
import android.media.MediaPlayer;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
public class videodemo extends Activity {
public SurfaceHolder holder;
public SurfaceView surfaceView;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
MediaPlayer mp = MediaPlayer.create(this, R.raw.mac);
mp.setDisplay(holder);
mp.start();
}
}
XML
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/LinearLayout01"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<SurfaceView
android:id="@+id/surfaceview"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
</SurfaceView>>
</LinearLayout>
Я также пробовал Uri.parse, но он говорит, что не может воспроизводить видео (формат .mp4).
У меня была такая же проблема, и я все равно не мог загрузить видео (только звук). Однако я сделал это так:
getWindow().setFormat(PixelFormat.TRANSLUCENT);
videoView = new VideoView(this);
videoView.setMediaController(new MediaController(this));
videoView.setVideoURI(Uri.parse("android.resource://pt.beware.smdemo/" + R.raw.video));
videoView.requestFocus();
videoView.start();
setContentView(videoView);
mp.setDisplay(surfaceView.getHolder());
Кроме того, ваш код не показывает, что вы назначаете ссылку на SurfaceView
, как в:
surfaceView = (SurfaceView) findViewById(R.id.surfaceView);
и для полноты использования, если вы используете VideoView
, затем измените тип и тип класса в своем коде, а также имя идентификатора в XML.
Попробуйте использовать VideoView в XML файле вместо SurfaceView. VideoView расширяет SurfaceView специально для обработки видео - SurfaceView не знает, как это сделать.
См. иерархию классов для VideoView
Затем вы можете получить владельца как...
mp.setDisplay(surfaceView.getHolder());
Кроме того, ваш код не показывает, что вы назначаете ссылку на surfaceView как в...
surfaceView = (SurfaceView) findViewById(R.id.surfaceView);
... и для полноты использования, если вы используете VideoView, затем измените тип класса и имя переменной в своем коде, а также имя идентификатора в XML.