Как воспроизводить видео из необработанной папки с Android-устройством?
Пожалуйста, помогите,
Как воспроизводить видео в Android-устройстве из необработанной папки для автономного режима?
Успешный пример1: я могу воспроизвести видео с SD-карты, используя приведенный ниже код.
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);
Не удалось выполнить пример2:
Вопрос: Можно ли поставить test.mp4 в папку 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);
Кто-нибудь может мне помочь? Пожалуйста.
Ответы
Ответ 1
Скопируйте видео в папку проекта res/raw. Создайте папку raw в папке res. Он должен находиться в поддерживаемом формате (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();
Создайте видео в вашем XML файле.
Ответ 2
Проверьте это решение Как воспроизводить видео в android из папки с ресурсами или в исходной папке?
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
// 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));
Ответ 4
Думаю, каждый дал ответ, но не объясняет сценарий. Основная проблема заключается в том, что если IM не ошибается, Android предполагает, что видео, поступающее с вашей SD-карты, является динамическим, где возможно, что формат не поддерживается или поддерживается, поэтому он позволяет/просит вас выбрать или открыть для других сторонних медиа-программ.
В то время как все, что вы играете в папку RAW RAW, требуется обработчик, такой как видеовизор или встроенный медиаплеер, который приводит к выводу, что все, что вы помещаете в вашу папку RAW, должно поддерживаться/читаться ОС Android.
Однако, стартер потока здесь хочет, чтобы его RAW файлы воспроизводились с использованием стороннего медиа-плеера.
Ответ 5
Я боролся с этим для динамических имен видео. Решение, которое сработало для меня, было:
//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();
}
}
});
И в XML
<VideoView android:layout_width="300dp"
android:id="@+id/video"
android:layout_height="300dp"
android:orientation="horizontal"
android:layout_gravity="center"
android:keepScreenOn="true"
/>
Ответ 6
Это решение точно поможет вам в том, что вы хотите.
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();
}