web-dev-qa-db-ja.com

Android:アセットからビデオを再生する方法は?

フラグメントのアセットフォルダーからビデオを表示する必要があるアプリケーションを作成しています。誰かがこれを行うのを手伝ってくれる? VideoViewをXMLで使用する必要がありますか?

31
user1025050

アセットからアクセスする代わりに、ビデオをプロジェクトのres/rawフォルダーにコピーする必要があります。 resフォルダーの下にrawフォルダーを作成します。サポートされている形式(3gp、wmv、mp4)で、小文字、数字、アンダースコア、ドットでファイル名を同様に指定する必要があります(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();
70
AkashG
VideoView view = (VideoView)findViewById(R.id.videoView);
String path = "Android.resource://" + getPackageName() + "/" + R.raw.video_file;
view.setVideoURI(Uri.parse(path));
view.start();

それはAkashGのコードですが、ここでのRはAndroidクラスからのものではないことを覚えています。それはあなた自身のプロジェクトからのものです。

1
Arman

私はすでに同じ問題に苦しんでいます、あなたはアセットの代わりにプロジェクトのres/rawフォルダーを好むはずです。 resフォルダーの下にrawフォルダーを作成します。ビデオファイルをサポートされている形式で保存します((3gp、wmv、mp4)で、ファイル名に小文字、数字、アンダースコア、ドットで名前を付けますlikewise:filename.3gpをrawフォルダーに入れます。

VideoView videoview = (VideoView) findViewById(R.id.VideoView);

String uriPath = "Android.resource://your application package name/raw/your 
wmv/mp4/3gp file in res/raw path without extension";

videoview.setVideoURI(Uri.parse(uriPath));

videoview.start();
0
Tejaswini Hadpe

最初にビデオをInputStreamに変換し、それをユーザーの内部ストレージに保存してから表示し、ビデオが終了したらそのファイルを削除する必要があります。

try{
     String path = Environment.getExternalStorageDirectory()+"/"+APP_NAME()+"/videos/"+ls+"/" ;
     InputStream input = getAssets().open("vid/dal.mp4");
     String name = System.currentTimeMillis() +".mp4";
     File f = new File(path);
     f.mkdirs();
     int size = input.available();

     FileOutputStream output = new FileOutputStream(new File(path+name));
     byte data[] = new byte[4096];
     long total = 0;
     int count;
     while ((count = input.read(data)) != -1) {
          output.write(data, 0, count);
          total += count;
          if (size <= total) {
              break;
          }
     }
     output.flush();
     output.close();
     input.close();

     //Toast.makeText(VideoPlayer.this , "file created !" , Toast.LENGTH_LONG).show();

     Uri uri = Uri.parse(path+name) ;

     videoView.setVideoURI(uri);

     videoview.start();

}cath(Exception e){
}
0
clasher

メディアコントローラーとともに、res/rawフォルダーにあるビデオ(sample.mp4)を再生する

//ステートメントをインポート

import Android.widget.VideoView;
import Android.widget.MediaController;

public class youractiviy extends Activity {

private VideoView videoView;
private MediaController mediaController;

protected void onCreate(Bundle savedInstanceState) {
 // Your Startup code
 videoView = (VideoView) findViewById(R.id.video_view);
 videoView.setVideoPath("Android.resource://" + getPackageName() + "/" + R.raw.sample); 
 mediaController = new MediaController(TestActivity.this);
 mediaController.setAnchorView(videoView);
 videoView.setMediaController(mediaController);
 videoView.start();

}
}

// XMLコード

<VideoView
        Android:id="@+id/video_view"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content" />
0
Surya Tej