I created the raw resources directory and inserted the video test.mp4 into it.
I am try to run the following code but it is giving me an unresolved reference on test
val uri = Uri.parse("android.resource://" + packageName + "/" + R.raw.test)
videoview.setVideoURI(uri)
videoview.setOnPreparedListener { videoview.start() }
When I playing video in activity, other apps are stoping playing audio/video.
Uri video = Uri.parse("android.resource://" + getActivity().getPackageName() + "/"
+ splash_vid);
splashvideo.setVisibility(View.VISIBLE);
splashvideo.setZOrderOnTop(false);
splashvideo.setZOrderMediaOverlay(true);
splashvideo.setVideoURI(video);
splashvideo.setOnCompletionListener(mp -> jumpBack());
splashvideo.requestFocus();
splashvideo.setDrawingCacheEnabled(true);
splashvideo.setOnErrorListener(this);
splashvideo.start();
splashvideo.setOnCompletionListener(this);
splashvideo.setOnPreparedListener(this);
final VideoView videoView = (VideoView) findViewById(R.id.surface_view);
videoView.setVideoPath("/edited_For Render - 1280x720.mp4");
videoView.start();
i'm trying to play a video in my app, but when i run it on my nexus 4 it says that the video can not be played. the video is placed in the res folder of the project in android-studio and it's an mp4 with H.264 codec.
i solved it.
the problem was the video path. it has to be
videoView.setVideoPath("android.resource://" + getPackageName() + "/" + R.raw.trailer);
(i also had to rename the file to trailer.mp4 because android can't handle spaces in filenames and i moved it to the raw folder)
VideoView videoView = (VideoView) findViewById(R.id.video1);
videoView.setVideoPath("android.resource://" + getPackageName() + "/" + R.raw.m);// check your path
MediaController mediaController = new MediaController(this);
mediaController.setAnchorView(videoView);
videoView.setMediaController(mediaController);
videoView.start();
Please help,
How to play videos in android device from raw folder for offline mode?
Successful example1: I can play the video from SDcard used the below code.
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);
Failed example2:
Question: May I put the test.mp4 to res/raw folder?
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);
Have anyone can help me? Please.
Copy the video into your project's res/raw folder. Create raw folder under res folder. It must be in a supported format (3gp, wmv, mp4 ) and named with lower case, numerics, underscores and dots in its filename likewise: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();
Create videoView in your xml file.
// 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));
Check this solution How to play videos in android from assets folder or raw folder?
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
in my code "applicationdemo" is the the name of my video file.
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();
I struggled with this for dynamic video names. The solution that worked for me was:
//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();
}
}
});
And in XML
<VideoView android:layout_width="300dp"
android:id="#+id/video"
android:layout_height="300dp"
android:orientation="horizontal"
android:layout_gravity="center"
android:keepScreenOn="true"
/>
i think , everyone gave an answer, but doesn't explain the scenario. The main problem here is, If im not mistaken , Android assume that the video coming from your SD Card is dynamic, where in it could be possible , that the format is not supported or supported, thus it enables / ask you to select or open for other third party media software.
While anything you play UNDER RAW folder, requires a handler such as videoview or built in media player which leads to conclusion that anything you put in your RAW folder should be supported / readable by the Android OS.
However , the thread starter here wants that his RAW files , to be played using a third party media player.
This Solution will exactly helps you that what you want.
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();
}
player = ExoPlayerFactory.newSimpleInstance(requireActivity(), new DefaultTrackSelector(), new DefaultLoadControl());
Uri uri = RawResourceDataSource.buildRawResourceUri(getOfflineVideo(offlinePosition));
MediaSource mediaSource = new ExtractorMediaSource(uri, new DefaultDataSourceFactory(requireActivity(),
"MyExoplayer"), new DefaultExtractorsFactory(), null, null);
//setup player with mediaSource
i have a strange behavior while coding a video player. I have an html5 menu that targets mp4 videos. When you click on a video, the path will be treated and a native video player intent will start to play the video. My videos are placed in "raw" folder.
When I use a static path, the video plays very well:
String uriPath = "android.resource://" + getPackageName() + "/" + R.raw.video1;
When I use the following path, I can't play it:
video_title = getIntent().getExtras().getString("video_title");
String uriPath = "android.resource://" + getPackageName() + "/" + "R.raw."+video_title;
Note that i removed the extension of the file in the main intent so the variable "video_title" will hold the video title without extension.
I resolved this issue, by changing the uriPath variable:
String uriPath = "android.resource://" + getPackageName() + "/" + "R.raw."+video_title; // BAD
String uriPath = "android.resource://" + getPackageName() + "/" + "raw/"+video_title; // GOOD