web-dev-qa-db-fra.com

Comment lire une vidéo à partir d'un dossier brut avec un appareil Android?

S'il vous plaît aider, Comment lire des vidéos dans Android à partir du dossier brut pour le mode hors ligne?

Exemple réussi1: je peux lire la vidéo de la carte SD en utilisant le code ci-dessous.

 Intent intent = new Intent(Intent.ACTION_VIEW);
 String type = "video/mp4";
 Uri uri = Uri.parse("file:///sdcard/test.mp4");
 intent.setDataAndType(uri, type);
 startActivity(intent); 

Exemple2 échoué: Question: Puis-je mettre le test.mp4 dans le dossier res/raw?

 Intent intent = new Intent(Intent.ACTION_VIEW);
 String type = "video/mp4";
 Uri uri = Uri.parse("Android.resource://" + getPackageName() + "/" + R.raw.taipei);
 intent.setDataAndType(uri, type);
 startActivity(intent); 

Quelqu'un peut-il m'aider? S'il vous plaît.

17
Potato Hwang

Copiez la vidéo dans le dossier res/raw de votre projet. Créez un dossier brut sous le dossier res. Il doit être dans un format pris en charge (3gp, wmv, mp4) et nommé avec des minuscules, des chiffres, des traits de soulignement et des points dans son nom de fichier également: video_file.mp4.

VideoView view = (VideoView)findViewById(R.id.videoView);
String path = "Android.resource://" + getPackageName() + "/" + R.raw.video_file;
view.setVideoURI(Uri.parse(path));
view.start();

Créez videoView dans votre fichier xml.

47
AkashG
// To get files from any resource folder (eg: raw, drawable, etc.)
// Use the resource id
int rawId = getResources().getIdentifier(file_name_without_extension,  "raw", getPackageName());

// URI formation
String path = "Android.resource://" + getPackageName() + "/" + rawId;

// Set the URI to play video file
videoView.setVideoURI(Uri.parse(path));
5
Shrinithi

Vérifiez cette solution Comment lire des vidéos dans Android à partir du dossier d'actifs ou du dossier brut?

VideoView videoHolder = new VideoView(this);
//if you want the controls to appear
videoHolder.setMediaController(new MediaController(this));
Uri video = Uri.parse("Android.resource://" + getPackageName() + "/" 
+ R.raw.your_raw_file); //do not add any extension
//if your file is named sherif.mp4 and placed in /raw
//use R.raw.sherif
3
duggu

dans mon code "applicationdemo" est le nom de mon fichier vidéo.

    String video_url = "Android.resource://" + context.getPackageName() + "/" + R.raw.applicationdemo;
    final VideoView videoView = findViewById(R.id.dialog_video);
    Uri videoUri = Uri.parse(video_url);
    MediaController mediaController= new MediaController(context);
    mediaController.setAnchorView(videoView);
    videoView.setMediaController(mediaController);
    videoView.setVideoURI(videoUri);
    videoView.requestFocus();
    videoView.start();
1
Bhaumik Belani

je pense que tout le monde a donné une réponse, mais n'explique pas le scénario. Le problème principal ici est, si je ne me trompe pas, Android supposons que la vidéo provenant de votre carte SD est dynamique, où cela pourrait être possible, que le format n'est pas pris en charge ou pris en charge, donc il vous permet/vous demande de sélectionner ou d'ouvrir un autre logiciel multimédia tiers.

Bien que tout ce que vous jouez sous le dossier RAW, nécessite un gestionnaire tel que la vue vidéo ou un lecteur multimédia intégré, ce qui conduit à la conclusion que tout ce que vous mettez dans votre dossier RAW doit être pris en charge/lisible par le système d'exploitation Android Android.

Cependant, le démarreur de fil souhaite que ses fichiers RAW soient lus à l'aide d'un lecteur multimédia tiers.

1
jhaypee

J'ai eu du mal avec cela pour les noms de vidéos dynamiques. La solution qui a fonctionné pour moi a été:

//Somewhere set the video name variable
String video+name="myvideo";
//setup up and play video

VideoView videoView=(VideoView)findViewById(R.id.video);
videoView.setVisibility(View.VISIBLE);
String uriPath = "Android.resource://"+getPackageName()+"/raw/"+ video_name;
Uri UrlPath=Uri.parse(uriPath);
MediaController mediaController = new MediaController(this);
mediaController.setAnchorView(videoView);
videoView.setMediaController(mediaController);
videoView.setVideoURI(UrlPath);

videoView.setOnPreparedListener(new OnPreparedListener() {
        public void onPrepared(MediaPlayer mediaPlayer) {
            if (position == 0) {
                try{
                    videoView.requestFocus(); 
                    videoView.start();
                }catch (Exception e){
                    System.out.printf("Error playing video %s\n", e);
                }
            }else{
                videoView.pause();
            }

        }
});

Et en XML

<VideoView Android:layout_width="300dp"
    Android:id="@+id/video"
    Android:layout_height="300dp"
    Android:orientation="horizontal"
    Android:layout_gravity="center" 
    Android:keepScreenOn="true"
    />
0
JanB

Cette solution vous aidera exactement à ce que vous voulez.

VideoView myVideo;
private MediaController media_control;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    myVideo = (VideoView) findViewById(R.id.playVideo);

    Uri uri = Uri.parse("Android.resource://" + getPackageName() + "/" + R.raw.bootanimation_nexus);

    media_control = new MediaController(this);

    myVideo.setMediaController(media_control);

    myVideo.setVideoURI(uri);

    myVideo.start();

}