android播放實時視頻播放
1. Android實現視頻播放的幾種方式
Android提供了常見的視頻編碼,解碼機制,使用Android自帶的MediaPlayer,MediaController等類可以很方便的實現視頻播放的功能。支持的視頻格式有MP4和3GP等。這些多媒體數據可以來自於Android應用的資源文件,也可以來自於外部存儲器上的文件,甚至可以是來自於網路上的文件流。
1、MediaController+VideoView實現方式
這種方式是最簡單的實現方式。VideoView繼承了SurfaceView同時實現了MediaPlayerControl介面,MediaController則是安卓封裝的輔助控制器,帶有暫停,播放,停止,進度條等控制項。通過VideoView+MediaController可以很輕松的實現視頻播放、停止、快進、快退等功能。
布局文件如下:
使用此實現方式的步驟:
1.載入指定的視頻文件
2.建立VideoView和MediaController之間的關聯,這樣就不需要自己去控制視頻的播放、暫停等。讓MediaController控制即可。
3.VideoView獲取焦點。
2、MediaPlayer+SurfaceView+自定義控制器
雖然VideoView的實現方式很簡單,但是由於是自帶的封裝好的類,所以無論是播放器的大小、位置以及控制都不受我們控制。
這種實現方式步驟如下:
1.創建MediaPlayer對象,並讓它載入指定的視頻文件。可以是應用的資源文件、本地文件路徑、或者URL。
2.在界面布局文件中定義SurfaceView組件,並為SurfaceView的SurfaceHolder添加Callback監聽器。
3.調用MediaPlayer對象的setDisplay(SurfaceHolder sh)將所播放的視頻圖像輸出到指定的SurfaceView組件。
4.調用MediaPlayer對象的prepareAsync()或prepare()方法裝載流媒體文件
5.調用MediaPlayer對象的start()、stop()和pause()方法來控制視頻的播放。
在實現第二步之前需要先給surfaceHolder設置一個callback,callback的3個回調函數如下:
3、MediaPlayer+SurfaceView+MediaController
第二種實現方式使用的是自定義控制項,MediaPlayer+SurfaceView也可以使用系統自帶的MediaController控制器。
使用這個方式實現,布局文件只需一個SurfaceView即可,其他的控制項都交給MediaController控制器,布局文件如下:
實際過程中推薦大家使用B站的播放器ijkplayer非常好用!
2. Android 使用VideoView實現簡單視頻播放
最近項目里要寫一個簡單的視頻播放頁面,先上一下效果圖吧
因為考慮我們的需求比較簡單,就沒有使用三方的框架,採用了原生的VideoView。
因為很長時間沒用過原生的VideoView了,大部分採用的都是餃子播放器或者別的三方框架,所以本篇文章主要用於自己復習,技術含量不高(嘿嘿)!
3. 請教大神,android video view播放rtsp格式實時視頻,有10秒的延遲,怎麼能設
android播放rtsp實時網路串流核心代碼如下:
import android.app.Activity;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.VideoView;
public class rtspActivity extends Activity {
/** Called when the activity is first created. */
Button playButton ;
VideoView videoView ;
EditText rtspUrl ;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
rtspUrl = (EditText)this.findViewById(R.id.url);
playButton = (Button)this.findViewById(R.id.start_play); playButton.setOnClickListener(new Button.OnClickListener(){
public void onClick(View v) {
PlayRtspStream(rtspUrl.getEditableText().toString()); } });
videoView = (VideoView)this.findViewById(R.id.rtsp_player); }
//play rtsp stream
private void PlayRtspStream(String rtspUrl){
videoView.setVideoURI(Uri.parse(rtspUrl));
videoView.requestFocus();
videoView.start();
}
}
4. 如何實現android播放視頻的功能
在Android中,有三種方式來實現視頻的播放:
1、使用其自帶的播放器。指定Action為ACTION_VIEW,Data為Uri,Type為其MIME類型。
2、使用VideoView來播放。在布局文件中使用VideoView結合MediaController來實現對其控制。
3、使用MediaPlayer類和SurfaceView來實現,這種方式很靈活。
5. Android使用FFmpeg播放視頻(二):音頻播放
Android使用FFmpeg播放視頻(一):視頻播放
Android NDK開發:利用OpenSL ES實現聲音播放
這里我創建了兩個JNI函數,一個是播放的,一個是釋放的如下:
這里我在用於播放的JNI函數中依次初始化了FFmpeg和OpenSLES
其中初始化FFmpeg的函數中的邏輯其實和使用FFmpeg播放視頻畫面中的邏輯差不多,主要區別就是要找到音頻的索引以及後面對於解析音頻的一些配置;而初始化OpenSLES基本就和之前使用OpenSLES播放PCM數據是一樣的,具體如下:
最後再加入釋放資源的邏輯即可
這里的案例源碼是和之前播放視頻畫面的分開了
https://gitee.com/itfitness/ffmpeg-audio-demo
6. android如何實現視頻的在線播放
vitamio
能播放絕大部分格式的視頻,但是這個有點大,裡面的so文件比較多,官方文檔上說有瘦身的方法,我試過但是沒成功,就一個用了vitamio
的小demo,打完包都10m了。在線視頻的話如果在電腦瀏覽器上能直接播放的話,用這個都可以播的,也有緩沖。我們項目也有在線視頻播放,原本也是准備用vitamio
的,但是太大了,打完包apk增加了10m,然後我就換成了universalvideoview
了,這個也可以在線播放,有緩沖效果,主要是打包後apk不大。如果你播放在線視頻功能要求高,而且不在乎apk大小的話可以使用vitamio
,如果僅想實現在線播放的話建議universalvideoview
就夠了!
7. Android 視頻播放VideoView
VideoView是Android用來實現視頻播放的主要控制項,VideoView內部是使用MediaPlayer來對視頻文件進行控制的。但是他支持的格式比較單一,只支持mp4,avi,3gp等格式的視頻。