Android 三种方式播放视频和百度直播

一.Android视频播放这里做个简单介绍,视频播放主要有三种方式:

(获取本地应用assets raw文件位置"file:///android_asset/文件名"  "android.resource://" + getPackageName() + "/" +R.raw.alarm

1.使用自带播放器。

        Intent intent=new Intent(Intent.ACTION_VIEW);
        Uri uri = Uri.parse("file:///mnt/sdcard/big_buck_bunny.mp4");  
        intent.setDataAndType(uri, "video/mp4");
        startActivity(intent);

2.使用VideoView播放。

        VideoView video = (VideoView)findViewById(R.id.videoView1);  
        //VideoView与MediaController进行关联  
        MediaController media= new MediaController(this);  
        Uri uri = Uri.parse("file:///mnt/sdcard/big_buck_bunny.mp4"); 
        video.setVideoURI(uri);  
        video.setMediaController(media);

3.使用MediaPlayer播放。

public class MainActivity extends Activity implements Callback {
	private MediaPlayer mp;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		SurfaceView surface = (SurfaceView) findViewById(R.id.surfaceView1);
		SurfaceHolder myHolder = surface.getHolder();//得到SurfaceView的控制接口
		myHolder.addCallback(this);//得到当前的回调接口
	}
	@Override
	public void surfaceCreated(SurfaceHolder holder) {
		mp = new MediaPlayer();//surface创建后再初始化MediaPlayer
		mp.setDisplay(holder);//视频显示在SurfaceView上
		mp.setAudioStreamType(AudioManager.STREAM_MUSIC);//媒体声音类型
		try {
			mp.setDataSource("/mnt/sdcard/big_buck_bunny.mp4");
			mp.prepare();
			mp.start();
		} catch (IllegalArgumentException e) {
		} catch (SecurityException e) {
		} catch (IllegalStateException e) {
		} catch (IOException e) {
		}
		
	}
	@Override
	public void surfaceChanged(SurfaceHolder holder,int format,int width,int height){
	}
	@Override
	public void surfaceDestroyed(SurfaceHolder holder) {
		mp.release();
	}
}

二.视频直播使用的是百度云直播(https://cloud.baidu.com/doc/Downloadcenter/player.html#.E6.92.AD.E6.94.BE.E5.99.A8.20Android.20SDK)这里简单介绍下播放端:

1.jar包和so库加入到工程中,

将以下权限加入到您的AndroidManifest.xml中,





2.初始化

    private void init() {
        /**
         * 设置ak
         */
        BDCloudVideoView.setAK("");
        RelativeLayout viewHolder = (RelativeLayout) findViewById(R.id.view_holder);
        mediaController = (SimpleMediaController) findViewById(R.id.media_controller_bar);


        mVV = new BDCloudVideoView(this);
        mVV.setVideoPath("rtmp://live.hkstv.hk.lxdns.com/live/hks");


        mVV.setBufferTimeInMs(100);//缓冲时间


        mVV.setVideoScalingMode(BDCloudVideoView.VIDEO_SCALING_MODE_SCALE_TO_MATCH_PARENT);


        /**
         * 注册listener
         */
        mVV.setOnPreparedListener(this);
        mVV.setOnCompletionListener(this);
        mVV.setOnErrorListener(this);
        mVV.setOnInfoListener(this);
        mVV.setOnBufferingUpdateListener(this);
        mVV.setOnPlayerStateListener(this);


        RelativeLayout.LayoutParams rllp = new RelativeLayout.LayoutParams(-1, -1);
        rllp.addRule(RelativeLayout.CENTER_IN_PARENT);
        viewHolder.addView(mVV, rllp);
        mediaController.setMediaPlayerControl(mVV);
        mVV.start();//播放
    }


    @Override
    protected void onRestart() {
        super.onRestart();
        if (mVV != null) {
            mVV.start();
            mVV.enterForeground();
        }
    }


    @Override
    protected void onStop() {
        if (mVV != null) {
            mVV.pause();//或stopPlayback()
            mVV.enterBackground();
        }
        super.onStop();
    }


    @Override
    protected void onDestroy() {
        super.onDestroy();
        if (mVV != null) {
            mVV.stopPlayback();
        }
    }
来源  http://blog.csdn.net/a704755096/article/details/48786761

附:视频录制

        try {  
        	File dir = new File(Environment.getExternalStorageDirectory().getAbsolutePath()+"/Video");
            if(!dir.exists()){     
            dir.mkdir();   
            } 
        	File myRecAudioFile = File.createTempFile("video", ".3gp",dir);//创建临时文件
        	recorder = new MediaRecorder();//获取媒体对象
        	mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
            recorder.setPreviewDisplay(mSurfaceHolder.getSurface());//预览   
            Camera c = Camera.open();
            c.setDisplayOrientation(90);
            c.unlock();
            recorder.setCamera(c);
            recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);//视频源    
            recorder.setAudioSource(MediaRecorder.AudioSource.MIC); //录音源为麦克风    
            recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);//输出格式为3gp    
            recorder.setVideoSize(480, 800);//视频尺寸    
            recorder.setVideoFrameRate(15);//视频帧频率
            recorder.setVideoEncodingBitRate(1024*1024);//清晰度比特率
            recorder.setVideoEncoder(MediaRecorder.VideoEncoder.H263);//视频编码    
            recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);//音频编码    
            recorder.setMaxDuration(10000);//最大期限    
            recorder.setOutputFile(myRecAudioFile.getAbsolutePath());//保存路径     
            recorder.prepare(); 
            recorder.start();    
        } catch (IOException e) {     
            e.printStackTrace();
        }


你可能感兴趣的:(第三方API接口)