1,第一步先将yasea依赖集成到Android项目里面(这一步就不介绍了,百度有开源的包下载)

2,第二步在Android项目里面新建一个activity实现

RtmpHandler.RtmpListener, SrsRecordHandler.SrsRecordListener, SrsEncodeHandler.SrsEncodeListener

这几个接口。

3,第三步创建一个简单的布局

<?xml version="1.0" encoding="utf-8"?>                        

4,第四部初始化控件就不说了,直接开始准备推了。

初始化一些推流工作,设置各种回调,预览页面,像素,编码,开启摄像头等等。

    private void initVideo() {        // restore data.        mPublisher = new SrsPublisher(srcView);        mPublisher.setEncodeHandler(new SrsEncodeHandler(this));        mPublisher.setRtmpHandler(new RtmpHandler(this));        mPublisher.setRecordHandler(new SrsRecordHandler(this));        mPublisher.setPreviewResolution(640, 360);        mPublisher.setOutputResolution(360, 640);        mPublisher.setVideoHDMode();        mPublisher.switchToSoftEncoder();//默认使用硬编码        mPublisher.startCamera();        srcView.setCameraCallbacksHandler(new SrsCameraView.CameraCallbacksHandler() {            @Override            public void onCameraParameters(Camera.Parameters params) {            }        });    }

准备开始推流(这里地址可以设置成自己专有的服务地址,例如:rtmp://ip:port/live/1234)

    @OnClick(R.id.pullBtn)    public void onClick() {        // mPublisher.switchToHardEncoder();        mPublisher.startPublish(pullUrl.getText().toString().trim());        mPublisher.startCamera();        Toast.makeText(this, "推流成功", Toast.LENGTH_SHORT).show();    }

设置美颜和滤镜(一些滤镜效果不知道专业术语怎么称呼,直接百度翻译的)

    private void initTypes() {//初始化美颜        types.put("冷静", MagicFilterType.COOL);        types.put("美颜", MagicFilterType.BEAUTY);        types.put("素颜", MagicFilterType.NONE);        types.put("早起的鸟", MagicFilterType.EARLYBIRD);        types.put("常绿的", MagicFilterType.EVERGREEN);        types.put("1997年", MagicFilterType.N1977);        types.put("怀旧", MagicFilterType.NOSTALGIA);        types.put("甜食", MagicFilterType.ROMANCE);        types.put("浪漫", MagicFilterType.SAKURA);        types.put("日出", MagicFilterType.SUNRISE);        types.put("日落", MagicFilterType.SUNSET);        types.put("柔和", MagicFilterType.TENDER);        types.put("烤面包机", MagicFilterType.TOASTER2);        types.put("巴伦西亚", MagicFilterType.VALENCIA);        types.put("瓦尔登湖", MagicFilterType.WALDEN);        types.put("温柔", MagicFilterType.WARM);        String[] array = new String[]{"素颜","冷静","美颜","早起的鸟","常绿的","1997年","怀旧","甜食","浪漫", "日出","日落",                "烤面包机", "巴伦西亚","瓦尔登湖","温柔","柔和"};        ArrayAdapter arrayAdapter=new ArrayAdapter(this,android.R.layout.simple_list_item_1,array);        typesList.setAdapter(arrayAdapter);        typesList.setOnItemClickListener(new AdapterView.OnItemClickListener() {            @Override            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {                MagicFilterType filterType = types.get(array[position]);                mPublisher.switchCameraFilter(filterType);                Toast.makeText(PullStreamActivity.this, array[position], Toast.LENGTH_SHORT).show();            }        });    }

5,退出页面时关闭推流,录音摄像头等等。

    @Override    protected void onDestroy() {        super.onDestroy();        mPublisher.stopCamera();        mPublisher.stopPublish();        mPublisher.stopAudio();        mPublisher.stopEncode();        mPublisher.stopRecord();    }

6,最后记得加权限,权限申请什么的不在这写了,在此附上一个依赖的下载地址,希望能帮到大家。

更多相关文章

  1. Kotlin继承
  2. 仿Google应用动态隐藏显示状态栏
  3. Android(安卓)有时环信初始化失败,创建applocation失败
  4. Android带删除按钮的ListView
  5. Android(安卓)Studio 登录功能实现
  6. Android(安卓)recyclerview 支持网格布局的间隙平均分割
  7. android Notification动态更新
  8. Android(安卓)Telephony分析(四) ---- TelephonyManager详解
  9. LibGDX学习-LibGDX基本框架

随机推荐

  1. android / ffmpeg dynamic module, JNI s
  2. android之webview使用-处理404等错误
  3. android 数据库操作 GreenDAO 第三方开源
  4. Android 实现简单打电话
  5. 开源库android-state-button 为Android
  6. Android 根据item大小实现自动排列的Grid
  7. android 开发积累
  8. android实现上下滑动
  9. Android 拦截 HOME 按键
  10. android双击返回键退出程序