私は他のformats
で既存の潜在的なソリューションを探しましたが、それらはまだ言及されたエラーで応答します。
最後に、同じデバイスでビデオを録画し、このアプリのリソースとして使用しましたが、まだ機能しません。
デバイス:_SGS2
_、lenovo _a820
_
動画タイプ:MPEG-4 video (video/mp4)
_ videoView = (VideoView)findViewById(R.id.videoView);
videoView.setVideoPath("Android.resource://raw/sample.mp4");
videoView.start();
_
以下のコードスニペットを参照してください...問題はパス宣言にありました。
String uriPath = "Android.resource://"+getPackageName()+"/"+R.raw.aha_hands_only_cpr_english;
Uri uri = Uri.parse(uriPath);
mVideoView.setVideoURI(uri);
それでおしまい...
前述のすべてを試しましたが、mp4ファイルを再生するにはインターネットの許可が必要であることがわかりました。
<uses-permission Android:name="Android.permission.INTERNET" />
デコーダー(ターゲットSDK)が使用しているビデオ形式をサポートしていることを確認してください。 VLCプレーヤーを使用して、ビデオ形式を目的の形式に変換できます。私の場合、MP4をWebMファイルに変換し、VideoViewにロードしました。
ファイルパスを取得してビデオを再生する方法は次のとおりです。
String path = "Android.resource://" + getPackageName() + "/" + R.raw.sample;
VideoView videoView = (VideoView)findViewById(R.id.videoView);
videoView.setVideoURI(Uri.parse(path));
videoView.start()
ソース:ビデオ形式とコーデックのサポートhttps://developer.Android.com/guide/topics/media/media-formats.html
Lenovo a820の場合、以下が必要です。
- MP4/WMV/H.264/H.263 player
- MP3/WAV/WMA/eAAC+ player
urビデオが上記のコーデック形式に適合することを確認してください。
次のコードを試してください..
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();
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);
}
}