2013-07-01 22 views
32

私はビデオプレーヤーアプリケーションで作業しています。.mp4ビデオをネイティブvideoviewで再生したいです。私はできません~遊びビデオURLを使用しています。私はエラーが発生していますこのビデオは再生できませんと私はです to 再生ビデオ in native videoview。アンドロイドで.mp4ビデオをvideoviewで再生するには?

videoviewでビデオを再生するための私のコードは:

String mUrl = "http://www.servername.com/projects/projectname/videos/1361439400.mp4"; 

VideoView mVideoView = (VideoView)findViewById(R.id.videoview) 
videoMediaController = new MediaController(this); 
mVideoView.setVideoPath(mUrl); 
videoMediaController.setMediaPlayer(mVideoView); 
mVideoView.setMediaController(videoMediaController); 
mVideoView.requestFocus(); 
mVideoView.start(); 

親切に同じのためにあなたのアイデアを共有しています。

ありがとうございました。

+1

私は多くの試みがあったが、私は解決策を得ることができない同じ問題に直面しています.thanks –

+0

その特定のmp4エンコードはサポートされていない可能性があります。私は別々の答えで答えました。テストするには別のmp4を試すことができます。たとえば、これは私にとってはうまくいきます:http://archive.org/download/Pbtestfilemp4videotestmp4/video_test.mp4 –

+0

私は同じことをやっていますが、私はまだプレイできません。mp4ビデオ 08-12 14:37:30.599:D/MediaPlayer(23633):サーバー側で試して、クライアント側でファイルを開くことができませんでした 08-12 14:37:33.095:E/MediaPlayer(23633):エラー(1、-2147483648) 08-12 14:37:33.096:E/MediaPlayer(23633):エラー(1、-2147483648) 08-12 14:37:33.096:D/VideoView(23633):エラー:1 、-2147483648 このエラーが発生しました –

答えて

12

最後に、それは私のために動作します。

private VideoView videoView; 

videoView = (VideoView) findViewById(R.id.videoView); 

Uri video = Uri.parse("http://www.servername.com/projects/projectname/videos/1361439400.mp4"); 
videoView.setVideoURI(video); 
videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { 
    @Override  
    public void onPrepared(MediaPlayer mp) { 
     mp.setLooping(true); 
     videoView.start(); 
    } 
}); 

これは他の人にとって役に立ちます。

+0

上記のスニペットでmpは何ですか? –

+0

メディアプレーヤーのオブジェクトです。 –

+0

私は同じコードを試みましたが、いくつかのmp4は動作しません。 –

26

MP4は単なるコンテナです。その内部のビデオとオーディオストリームは、どちらも異なるフォーマットでエンコードされます。

Androidはネイティブで特定のタイプのフォーマットのみをサポートしています。 This is the list here.

ビデオとオーディオのエンコードタイプがサポートされていることを確認してください。 「mp4」とは自動的に再生可能であるとは限りません。

+1

ビデオキャプチャのテクニックを知る/設定する方法 –

16

このように使用:

Uri uri = Uri.parse(URL); //Declare your url here. 

VideoView mVideoView = (VideoView)findViewById(R.id.videoview) 
mVideoView.setMediaController(new MediaController(this));  
mVideoView.setVideoURI(uri); 
mVideoView.requestFocus(); 
mVideoView.start(); 

別の方法:

String LINK = "type_here_the_link"; 
    VideoView mVideoView = (VideoView) findViewById(R.id.videoview); 
    MediaController mc = new MediaController(this); 
    mc.setAnchorView(videoView); 
    mc.setMediaPlayer(videoView); 
    Uri video = Uri.parse(LINK); 
    mVideoView.setMediaController(mc); 
    mVideoView.setVideoURI(video); 
    mVideoView.start(); 

このエラーCouldn't open file on client side, trying server side Error in Androidを得ている場合。また、Refer this。 これはあなたにいくつかの解決策を与えることを願っています。

+1

私は同じことをしますが、それでも私は再生できません.mp4ビデオ08-12 14:37:30.599:D/MediaPlayer(23633):Couldn ' (23633):エラー(1、-2147483648)08-12 14:37:33.096:E/MediaPlayer(23633):エラーが発生しました。 (1、-2147483648)08-12 14:37:33.096:D/VideoView(23633):エラー:1、-2147483648にこのエラーがあります –

+10

エラーメッセージ "再生できません" – Prasad

+0

ありがとうございました... –

4

レンダリングしているビデオのフォーマットを確認してください。私は同じ問題に遭遇したMP4形式の レンダリングは、APIレベル11 から開始し、フォーマットはMP4(H.264)

でなければならない、私はフォーマットを打つ前に、多くのフォーマットに私のビデオを変換する必要がありました:使用合計ビデオコンバータを使用してビデオをmp4に変換します。それは魅力のように働く。

+0

これがなぜ機能するのか説明してください –

+0

同じ問題が発生しました。フォーマットをヒットする前に動画を多くの形式に変換する必要があります:使用合計ビデオコンバータを使用してビデオをmp4に変換します。それは魔法のように動作しますか? – Michael

+0

アンドロイドのドキュメンタリーmp4はAPIレベル11(ジンジャーブレッド)からのみサポートされます – Michael

1

私はそれが問題であるかどうかはわかりませんが、私にとってはmVideoView.start();mVideoView.setOnPreparedListenerイベントコールバックを呼び出しています。例えば

Uri uriVideo = Uri.parse(<your link here>); 

MediaController mediaController = new MediaController(mContext); 
mediaController.setAnchorView(mVideoView); 
mVideoView.setMediaController(mediaController); 
mVideoView.setVideoURI(uriVideo); 
mVideoView.requestFocus(); 

mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() 
{ 
    @Override 
    public void onPrepared(MediaPlayer mp) 
    { 
      mVideoViewPeekItem.start(); 
    } 
}); 
関連する問題