私はAndroid開発の初心者で、リンクからビデオを再生しようとします。しかし、エラー"sorry,we can't play this video"
。多くのリンクを試しましたが、すべてのリンクで同じエラーが表示されます。
私のコードは次のとおりです
public class VideoDemo extends Activity {
private static final String path ="http://demo.digi-corp.com/S2LWebservice/Resources/SampleVideo.mp4";
private VideoView video;
private MediaController ctlr;
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
getWindow().setFormat(PixelFormat.TRANSLUCENT);
setContentView(R.layout.videoview);
video = (VideoView) findViewById(R.id.video);
video.setVideoPath(path);
ctlr = new MediaController(this);
ctlr.setMediaPlayer(video);
video.setMediaController(ctlr);
video.requestFocus();
}
}
Logcatは次のエラーメッセージを表示します。
04-12 15:04:54.245: ERROR/PlayerDriver(554): HandleErrorEvent: PVMFErrTimeout
リンクとコンテンツに関係しています。次の2つのリンクを試してください。
String path="http://www.ted.com/talks/download/video/8584/talk/761";
String path1="http://commonsware.com/misc/test2.3gp";
Uri uri=Uri.parse(path1);
VideoView video=(VideoView)findViewById(R.id.VideoView01);
video.setVideoURI(uri);
video.start();
「path1」で始まり、小さな軽量のビデオストリームで、次に「path」を試します。これは、携帯電話に最適な高解像度である「path1」よりも高い解像度です。
これを試して:
String LINK = "type_here_the_link";
setContentView(R.layout.mediaplayer);
VideoView videoView = (VideoView) findViewById(R.id.video);
MediaController mc = new MediaController(this);
mc.setAnchorView(videoView);
mc.setMediaPlayer(videoView);
Uri video = Uri.parse(LINK);
videoView.setMediaController(mc);
videoView.setVideoURI(video);
videoView.start();
pDialog = new ProgressDialog(this);
// Set progressbar message
pDialog.setMessage("Buffering...");
pDialog.setIndeterminate(false);
pDialog.setCancelable(false);
// Show progressbar
pDialog.show();
try {
// Start the MediaController
MediaController mediacontroller = new MediaController(this);
mediacontroller.setAnchorView(mVideoView);
Uri videoUri = Uri.parse(videoUrl);
mVideoView.setMediaController(mediacontroller);
mVideoView.setVideoURI(videoUri);
} catch (Exception e) {
e.printStackTrace();
}
mVideoView.requestFocus();
mVideoView.setOnPreparedListener(new OnPreparedListener() {
// Close the progress bar and play the video
public void onPrepared(MediaPlayer mp) {
pDialog.dismiss();
mVideoView.start();
}
});
mVideoView.setOnCompletionListener(new OnCompletionListener() {
public void onCompletion(MediaPlayer mp) {
if (pDialog.isShowing()) {
pDialog.dismiss();
}
finish();
}
});
FullscreenVideoView
クラスを使用して実行できます。その小さな図書館プロジェクト。ビデオ進行ダイアログが組み込まれています。グラドルは次のとおりです。
compile 'com.github.rtoshiro.fullscreenvideoview:fullscreenvideoview:1.1.0'
あなたのVideoView xmlはこのようなものです
<com.github.rtoshiro.view.video.FullscreenVideoLayout
Android:id="@+id/videoview"
Android:layout_width="match_parent"
Android:layout_height="match_parent" />
アクティビティで、次の方法で初期化します:
FullscreenVideoLayout videoLayout;
videoLayout = (FullscreenVideoLayout) findViewById(R.id.videoview);
videoLayout.setActivity(this);
Uri videoUri = Uri.parse("YOUR_VIDEO_URL");
try {
videoLayout.setVideoURI(videoUri);
} catch (IOException e) {
e.printStackTrace();
}
それでおしまい。ハッピーコーディング:)
詳細を知りたい場合は、 こちら にアクセスしてください
Edit:gradle pathが更新されました。今すぐコンパイルする
compile 'com.github.rtoshiro.fullscreenvideoview:fullscreenvideoview:1.1.2'
Exoplayer2をお試しください
https://github.com/google/ExoPlayer
高度にカスタマイズ可能です
private void initializePlayer() {
player = ExoPlayerFactory.newSimpleInstance(
new DefaultRenderersFactory(this),
new DefaultTrackSelector(), new DefaultLoadControl());
playerView.setPlayer(player);
player.setPlayWhenReady(playWhenReady);
player.seekTo(currentWindow, playbackPosition);
Uri uri = Uri.parse(getString(R.string.media_url_mp3));
MediaSource mediaSource = buildMediaSource(uri);
player.prepare(mediaSource, true, false);
}
private MediaSource buildMediaSource(Uri uri) {
return new ExtractorMediaSource.Factory(
new DefaultHttpDataSourceFactory("exoplayer-codelab")).
createMediaSource(uri);
}
@Override
public void onStart() {
super.onStart();
if (Util.SDK_INT > 23) {
initializePlayer();
}
}
詳細については、このURLを確認してください
https://codelabs.developers.google.com/codelabs/exoplayer-intro/#2
私もこの問題に巻き込まれました。サーバーから正しい応答を受け取りましたが、ビデオを再生できませんでした。久しぶりに解決策を見つけました here 。たぶん、将来このリンクは無効になるでしょう。だから、ここに私の正しいコードがあります
Uri video = Uri.parse("Your link should be in this place ");
mVideoView.setVideoURI(video);
mVideoView.setZOrderOnTop(true); //Very important line, add it to Your code
mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mediaPlayer) {
// here write another part of code, which provides starting the video
}}
このリンクを確認してください: http://developer.Android.com/guide/appendix/media-formats.html
videoviewは一部のcodecをサポートできません。
私は、「申し訳ありませんが、ビデオを再生できません」を取得する場合、mediaplayerを使用することを提案しました