Воспроизвести видео из папки Raw

1

Вечерние,

Я только что начал программировать с помощью андроида и сделал несколько программ и все, поэтому я все еще новичок, но я пытаюсь понять все это.

Итак, вот моя проблема, я пытаюсь воспроизвести видео, дело в том, что я начал работать, когда я передаю его с 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).

Теги:

3 ответа

7
Лучший ответ

У меня была такая же проблема, и я все равно не мог загрузить видео (только звук). Однако я сделал это так:

    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);
  • 0
    У меня это отлично сработало, но почему вы установили полупрозрачный формат пикселей?
  • 0
    Опять же, этот ответ не работает для меня. Я нашел сообщение, как видео не может играть
0
mp.setDisplay(surfaceView.getHolder());

Кроме того, ваш код не показывает, что вы назначаете ссылку на SurfaceView, как в:

surfaceView = (SurfaceView) findViewById(R.id.surfaceView);

и для полноты использования, если вы используете VideoView, затем измените тип и тип класса в своем коде, а также имя идентификатора в XML.

0

Попробуйте использовать VideoView в XML файле вместо SurfaceView. VideoView расширяет SurfaceView специально для обработки видео - SurfaceView не знает, как это сделать.

См. иерархию классов для VideoView

Затем вы можете получить владельца как...

mp.setDisplay(surfaceView.getHolder());

Кроме того, ваш код не показывает, что вы назначаете ссылку на surfaceView как в...

surfaceView = (SurfaceView) findViewById(R.id.surfaceView);

... и для полноты использования, если вы используете VideoView, затем измените тип класса и имя переменной в своем коде, а также имя идентификатора в XML.

  • 0
    Сделали следующее и добавили: public SurfaceView surfaceView; публичный SurfaceHolder SurfaceHolder; surfaceView = (SurfaceView) findViewById (R.id.VideoView); surfaceHolder = surfaceView.getHolder (); публичный SurfaceView SurfaceView; публичный SurfaceHolder SurfaceHolder; Но я все еще получаю только аудио.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню