Ich habe nach vorhandenen möglichen Lösungen mit anderen formats
gesucht und diese antworten immer noch mit dem erwähnten Fehler.
Schließlich das Video mit demselben Gerät aufgenommen und als Ressource für diese App verwendet, und es funktioniert immer noch nicht.
Geräte: SGS2
, lenovo a820
Videotyp: MPEG-4 video (video/mp4)
videoView = (VideoView)findViewById(R.id.videoView);
videoView.setVideoPath("Android.resource://raw/sample.mp4");
videoView.start();
sehe einfach meinen Code unten, es funktioniert ... Problem in der Pathe-Deklaration ..
String uriPath = "Android.resource://"+getPackageName()+"/"+R.raw.aha_hands_only_cpr_english;
Uri uri = Uri.parse(uriPath);
mVideoView.setVideoURI(uri);
Das ist es...
Ich habe alles schon einmal ausprobiert, aber es stellt sich heraus, dass eine Internet-Genehmigung zum Abspielen einer mp4-Datei erforderlich ist.
<uses-permission Android:name="Android.permission.INTERNET" />
Für Lenovo a820 ist unten Bedarf:
- MP4/WMV/H.264/H.263 player
- MP3/WAV/WMA/eAAC+ player
stellen Sie sicher, dass Ihr Video in das Codec-Format passt.
versuchen Sie den folgenden 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();
Stellen Sie sicher, dass der Decoder (Ziel-SDK) das von Ihnen verwendete Videoformat unterstützt. Sie können den VLC-Player verwenden, um das Videoformat in das gewünschte Format zu konvertieren. In meinem Fall habe ich die MP4-Datei in eine WebM-Datei konvertiert und in das VideoView geladen.
So erhalten Sie den Dateipfad und geben Ihr Video wieder.
String path = "Android.resource://" + getPackageName() + "/" + R.raw.sample;
VideoView videoView = (VideoView)findViewById(R.id.videoView);
videoView.setVideoURI(Uri.parse(path));
videoView.start()
Quelle: Unterstützung für Videoformat und Codechttps://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);
}
}