搜索
热搜: 活动 交友 discuz
查看: 3403|回复: 0
打印 上一主题 下一主题

七牛直播推流使用介绍

[复制链接]

160

主题

165

帖子

814

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
814
跳转到指定楼层
楼主
发表于 2017-12-23 14:00:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1:导入SDK

SDK下载地址:https://github.com/pili-engineering/PLDroidMediaStreaming/
导入结果如图



2:配置权限

  1.     <uses-permission android:name="android.permission.INTERNET" />
  2.     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  3.     <uses-permission android:name="android.permission.RECORD_AUDIO" />
  4.     <uses-permission android:name="android.permission.CAMERA" />
  5.     <uses-permission android:name="android.permission.WAKE_LOCK" />

  6.     <uses-feature android:name="android.hardware.camera.autofocus" />
  7.     <uses-feature
  8.         android:glEsVersion="0x00020000"
  9.         android:required="true" />

  10.     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
复制代码

3:启动推流


  1. public class SWCameraStreamingActivity extends AppCompatActivity  {

  2.     private MediaStreamingManager mMediaStreamingManager;
  3.     private StreamingProfile mProfile;
  4.     @Override
  5.     protected void onCreate(Bundle savedInstanceState) {
  6.         super.onCreate(savedInstanceState);
  7.         setContentView(R.layout.activity_swcamera_streaming);
  8.         AspectFrameLayout afl = (AspectFrameLayout) findViewById(R.id.cameraPreview_afl);
  9.         afl.setShowMode(AspectFrameLayout.SHOW_MODE.REAL);
  10.         GLSurfaceView glSurfaceView = (GLSurfaceView) findViewById(R.id.cameraPreview_surfaceView);
  11.         //获得推流地址
  12.         String pushUrl = getIntent().getStringExtra("url");
  13.         Log.i("TAG","推流地址"+pushUrl);
  14.         mProfile = new StreamingProfile();
  15.         try {
  16.             mProfile.setVideoQuality(StreamingProfile.VIDEO_QUALITY_HIGH1)
  17.                     .setAudioQuality(StreamingProfile.AUDIO_QUALITY_MEDIUM2)
  18.                     .setEncodingSizeLevel(StreamingProfile.VIDEO_ENCODING_HEIGHT_480)
  19.                     .setEncoderRCMode(StreamingProfile.EncoderRCModes.QUALITY_PRIORITY)
  20.                     .setPublishUrl(pushUrl);

  21.             CameraStreamingSetting setting = new CameraStreamingSetting();
  22.             setting.setCameraId(Camera.CameraInfo.CAMERA_FACING_BACK)
  23.                     .setContinuousFocusModeEnabled(true)
  24.                     .setCameraPrvSizeLevel(CameraStreamingSetting.PREVIEW_SIZE_LEVEL.MEDIUM)
  25.                     .setCameraPrvSizeRatio(CameraStreamingSetting.PREVIEW_SIZE_RATIO.RATIO_16_9);
  26.             mMediaStreamingManager = new MediaStreamingManager(this, afl, glSurfaceView, AVCodecType.SW_VIDEO_WITH_SW_AUDIO_CODEC);  // soft codec
  27.             mMediaStreamingManager.prepare(setting, mProfile);
  28.             mMediaStreamingManager.setStreamingStateListener(new StreamingStateChangedListener() {
  29.                 @Override
  30.                 public void onStateChanged(StreamingState streamingState, Object extra) {
  31.                     Log.i("TAG","状态"+streamingState);
  32.                     switch (streamingState) {
  33.                         case PREPARING:
  34.                             break;
  35.                         case READY:
  36.                             // start streaming when READY
  37.                             new Thread(new Runnable() {
  38.                                 @Override
  39.                                 public void run() {
  40.                                     if (mMediaStreamingManager != null) {
  41.                                         Log.i("TAG", "开始推流");
  42.                                         mMediaStreamingManager.startStreaming();
  43.                                     }
  44.                                 }
  45.                             }).start();
  46.                             break;
  47.                         case CONNECTING:
  48.                             break;
  49.                         case STREAMING:
  50.                             // The av packet had been sent.
  51.                             break;
  52.                         case SHUTDOWN:
  53.                             // The streaming had been finished.
  54.                             break;
  55.                         case IOERROR:
  56.                             // Network connect error.
  57.                             break;
  58.                         case OPEN_CAMERA_FAIL:
  59.                             // Failed to open camera.
  60.                             break;
  61.                         case DISCONNECTED:
  62.                             // The socket is broken while streaming
  63.                             break;
  64.                     }
  65.                 }
  66.             });
  67.         }catch (URISyntaxException e) {
  68.             e.printStackTrace();
  69.         }
  70.     }

  71.     @Override
  72.     protected void onResume() {
  73.         super.onResume();
  74.         mMediaStreamingManager.resume();
  75.     }
  76.     @Override
  77.     protected void onPause() {
  78.         super.onPause();
  79.         // You must invoke pause here.
  80.         mMediaStreamingManager.pause();
  81.     }


  82. }
复制代码
XML代码

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3.     xmlns:tools="http://schemas.android.com/tools"
  4.     android:id="@+id/content"
  5.     android:layout_width="match_parent"
  6.     android:layout_height="match_parent"
  7.     android:background="@color/background_floating_material_dark"
  8.     tools:context=".activity.SWCameraStreamingActivity" >
  9.     <com.qiniu.pili.droid.streaming.widget.AspectFrameLayout
  10.         android:id="@+id/cameraPreview_afl"
  11.         android:layout_width="match_parent"
  12.         android:layout_height="match_parent"
  13.         android:layout_centerHorizontal="true"
  14.         android:layout_alignParentTop="true">
  15.         <android.opengl.GLSurfaceView
  16.             android:id="@+id/cameraPreview_surfaceView"
  17.             android:layout_width="match_parent"
  18.             android:layout_height="match_parent"
  19.             android:layout_gravity="center" />
  20.     </com.qiniu.pili.droid.streaming.widget.AspectFrameLayout>
  21. </RelativeLayout>
复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|安卓论坛  

GMT+8, 2024-5-6 12:24 , Processed in 0.056163 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2013 Design S!|ƽ̶

快速回复 返回顶部 返回列表