J'ai recherché des solutions potentielles existantes avec d'autres formats
et celles-ci répondent toujours avec l'erreur mentionnée.
Enfin, vous avez enregistré la vidéo avec le même appareil et vous l'avez utilisée comme ressource pour cette application. Elle ne fonctionne toujours pas.
Appareils: SGS2
, lenovo a820
Type de vidéo: MPEG-4 video (video/mp4)
videoView = (VideoView)findViewById(R.id.videoView);
videoView.setVideoPath("Android.resource://raw/sample.mp4");
videoView.start();
il suffit de voir mon code ci-dessous cela fonctionne ... problème dans la déclaration pathe ..
String uriPath = "Android.resource://"+getPackageName()+"/"+R.raw.aha_hands_only_cpr_english;
Uri uri = Uri.parse(uriPath);
mVideoView.setVideoURI(uri);
C'est tout...
J'ai essayé tout ce qui a été mentionné auparavant, mais il s'avère qu'une autorisation Internet est nécessaire pour lire un fichier MP4.
<uses-permission Android:name="Android.permission.INTERNET" />
Pour Lenovo A820, voici le besoin:
- MP4/WMV/H.264/H.263 player
- MP3/WAV/WMA/eAAC+ player
assurez-vous que votre vidéo est compatible avec le format de codec ci-dessus.
essayez de suivre le code ..
videoView = (VideoView)this.findViewById(R.id.videoView);
String path = "Android.resource://" + getPackageName() + "/" + R.raw.video_file;
MediaController mc = new MediaController(this);
videoView.setMediaController(mc);
videoView.start();
Assurez-vous que le décodeur (sdk cible) prend en charge le format vidéo que vous utilisez. Vous pouvez utiliser le lecteur VLC pour convertir le format vidéo au format souhaité. Dans mon cas, j'ai converti le fichier MP4 en fichier WebM et je l'ai chargé dans VideoView.
Voici comment vous obtenez le chemin du fichier et lisez votre vidéo.
String path = "Android.resource://" + getPackageName() + "/" + R.raw.sample;
VideoView videoView = (VideoView)findViewById(R.id.videoView);
videoView.setVideoURI(Uri.parse(path));
videoView.start()
Source: Prise en charge du format vidéo et des codecshttps://developer.Android.com/guide/topics/media/media-formats.html
public class videoplayer extends Activity {
private static final String Videos_URL = "*your URI*";
private VideoView myVideoView;
private int position = 0;
private ProgressDialog progressDialog;
private MediaController mediaControls;
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Get the layout from video_main.xml
setContentView(R.layout.activity_main);
if (mediaControls == null) {
mediaControls = new MediaController(this);
}
// Find your VideoView in your video_main.xml layout
myVideoView = (VideoView) findViewById(R.id.videoView);
// Create a progressbar
progressDialog = new ProgressDialog(this);
// Set progressbar title
progressDialog.setTitle("ABCDEFGH");
// Set progressbar message
progressDialog.setMessage("Loading...");
progressDialog.setCancelable(false);
// Show progressbar
progressDialog.show();
try {
Uri video = Uri.parse(Videos_URL);
myVideoView.setVideoURI(video);
myVideoView.setMediaController(mediaControls);
} catch (Exception e) {
Log.e("Error", e.getMessage());
e.printStackTrace();
}
myVideoView.requestFocus();
myVideoView.setOnPreparedListener(new OnPreparedListener() {
// Close the progress bar and play the video
public void onPrepared(MediaPlayer mp) {
progressDialog.dismiss();
myVideoView.seekTo(position);
if (position == 0) {
myVideoView.start();
} else {
myVideoView.pause();
}
}
});
}
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
super.onSaveInstanceState(savedInstanceState);
savedInstanceState.putInt("Position", myVideoView.getCurrentPosition());
myVideoView.pause();
}
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
position = savedInstanceState.getInt("Position");
myVideoView.seekTo(position);
}
}