安卓论坛
标题:
七牛直播推流使用介绍
[打印本页]
作者:
admin
时间:
2017-12-23 14:00
标题:
七牛直播推流使用介绍
1:导入SDK
SDK下载地址:
https://github.com/pili-engineering/PLDroidMediaStreaming/
导入结果如图
2:配置权限
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-feature
android:glEsVersion="0x00020000"
android:required="true" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
复制代码
3:启动推流
public class SWCameraStreamingActivity extends AppCompatActivity {
private MediaStreamingManager mMediaStreamingManager;
private StreamingProfile mProfile;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_swcamera_streaming);
AspectFrameLayout afl = (AspectFrameLayout) findViewById(R.id.cameraPreview_afl);
afl.setShowMode(AspectFrameLayout.SHOW_MODE.REAL);
GLSurfaceView glSurfaceView = (GLSurfaceView) findViewById(R.id.cameraPreview_surfaceView);
//获得推流地址
String pushUrl = getIntent().getStringExtra("url");
Log.i("TAG","推流地址"+pushUrl);
mProfile = new StreamingProfile();
try {
mProfile.setVideoQuality(StreamingProfile.VIDEO_QUALITY_HIGH1)
.setAudioQuality(StreamingProfile.AUDIO_QUALITY_MEDIUM2)
.setEncodingSizeLevel(StreamingProfile.VIDEO_ENCODING_HEIGHT_480)
.setEncoderRCMode(StreamingProfile.EncoderRCModes.QUALITY_PRIORITY)
.setPublishUrl(pushUrl);
CameraStreamingSetting setting = new CameraStreamingSetting();
setting.setCameraId(Camera.CameraInfo.CAMERA_FACING_BACK)
.setContinuousFocusModeEnabled(true)
.setCameraPrvSizeLevel(CameraStreamingSetting.PREVIEW_SIZE_LEVEL.MEDIUM)
.setCameraPrvSizeRatio(CameraStreamingSetting.PREVIEW_SIZE_RATIO.RATIO_16_9);
mMediaStreamingManager = new MediaStreamingManager(this, afl, glSurfaceView, AVCodecType.SW_VIDEO_WITH_SW_AUDIO_CODEC); // soft codec
mMediaStreamingManager.prepare(setting, mProfile);
mMediaStreamingManager.setStreamingStateListener(new StreamingStateChangedListener() {
@Override
public void onStateChanged(StreamingState streamingState, Object extra) {
Log.i("TAG","状态"+streamingState);
switch (streamingState) {
case PREPARING:
break;
case READY:
// start streaming when READY
new Thread(new Runnable() {
@Override
public void run() {
if (mMediaStreamingManager != null) {
Log.i("TAG", "开始推流");
mMediaStreamingManager.startStreaming();
}
}
}).start();
break;
case CONNECTING:
break;
case STREAMING:
// The av packet had been sent.
break;
case SHUTDOWN:
// The streaming had been finished.
break;
case IOERROR:
// Network connect error.
break;
case OPEN_CAMERA_FAIL:
// Failed to open camera.
break;
case DISCONNECTED:
// The socket is broken while streaming
break;
}
}
});
}catch (URISyntaxException e) {
e.printStackTrace();
}
}
@Override
protected void onResume() {
super.onResume();
mMediaStreamingManager.resume();
}
@Override
protected void onPause() {
super.onPause();
// You must invoke pause here.
mMediaStreamingManager.pause();
}
}
复制代码
XML代码
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/background_floating_material_dark"
tools:context=".activity.SWCameraStreamingActivity" >
<com.qiniu.pili.droid.streaming.widget.AspectFrameLayout
android:id="@+id/cameraPreview_afl"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerHorizontal="true"
android:layout_alignParentTop="true">
<android.opengl.GLSurfaceView
android:id="@+id/cameraPreview_surfaceView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center" />
</com.qiniu.pili.droid.streaming.widget.AspectFrameLayout>
</RelativeLayout>
复制代码
欢迎光临 安卓论坛 (http://android.hh85.com/)
Powered by Discuz! X3.2