2013-07-01 180 views
32

我正在致力於視頻播放器應用程序,我想在原生視頻查看中播放.mp4視頻。我使用網址無法發揮視頻我。我得到錯誤對不起,這個視頻不能播放,我也不能播放下載視頻在本機視頻查看。如何在android中的videoview中播放.mp4視頻?

我在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

我面臨同樣的問題,我有很多嘗試,但我不能得到解決方案,請幫助我..謝謝 –

+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' t在服務器端打開文件08-12 14:37:33.095:E/MediaPlayer(23633):error(1,-2147483648)08-12 14:37:33.096:E/MediaPlayer(23633):Error (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

根據Android的MP4文件只從API等級11(薑餅)的支持 – Michael

1

我不確定那是什麼問題,但是對我而言,在的mVideoView.setOnPreparedListener事件回調中調用mVideoView.start();

例如:

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(); 
    } 
});