Android端推流、播放
1.UI设计,主要具有进行直播和观看直播入口
2.通过服务端查询用户接口获取用户信息(包括直播地址),点击用户进入直播界面,播放利用ijkplayer,下载ijkplayer相关,传入用户直播地址即可播放。
IjkMediaPlayer.loadLibrariesOnce(null);
mVideoView = (IjkVideoView) findViewById(R.id.video_view);
mVideoView.setOnInfoListener(new OnInfoListener() {
@Override
public boolean onInfo(IMediaPlayer mp, int what, int extra) {
// TODO Auto-generated method stub
Log.e("直播输出",mp.getDuration()+"-"+what+"-"+extra);
return false;
}
});
// prefer mVideoPath
String mVideoPath = getIntent().getStringExtra("url");
mVideoView.setVideoPath(mVideoPath);
mVideoView.start();
3.点击直播按钮进行直播,利用rtmp_push_sdk,传入当前用户直播地址
_rtmpSessionMgr = new RtmpSessionManager();
_rtmpSessionMgr.Start(_rtmpUrl);
int iFormat = _iCameraCodecType;
_swEncH264 = new SWVideoEncoder(WIDTH_DEF, HEIGHT_DEF, FRAMERATE_DEF, BITRATE_DEF);
_swEncH264.start(iFormat);
_bStartFlag = true;
_h264EncoderThread = new Thread(_h264Runnable);
_h264EncoderThread.setPriority(Thread.MAX_PRIORITY);
_h264EncoderThread.start();
_AudioRecorder.startRecording();
_AacEncoderThread = new Thread(_aacEncoderRunnable);
_AacEncoderThread.setPriority(Thread.MAX_PRIORITY);
_AacEncoderThread.start();
总结:
直播–>流媒体服务器–>播放,基本打通,后续需要添加相关逻辑操作,优化视频质量(很模糊)等。