Android用yasea集成推流服务并实现美颜滤镜
16lz
2021-01-26
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,最后记得加权限,权限申请什么的不在这写了,在此附上一个依赖的下载地址,希望能帮到大家。
更多相关文章
- Kotlin继承
- 仿Google应用动态隐藏显示状态栏
- Android(安卓)有时环信初始化失败,创建applocation失败
- Android带删除按钮的ListView
- Android(安卓)Studio 登录功能实现
- Android(安卓)recyclerview 支持网格布局的间隙平均分割
- android Notification动态更新
- Android(安卓)Telephony分析(四) ---- TelephonyManager详解
- LibGDX学习-LibGDX基本框架