android studio yasea,安卓直播推流yasea的使用

緊接着之前寫的安卓直播實現方法,項目后期發現有些定制的安卓設備外掛攝像頭,原來的android_rtmppush_sdk出現調取攝像頭(熱插拔)前后異常和畫面翻轉來回跳動的問題。之后調研發現有個封裝比較完善的純java編譯的開源安卓推流客戶端——yasea,效率高、延遲低、消息提示、自適應強。

我就簡單介紹一下基本使用方法,我下載的是最新版本v2.5,源碼包里面需要使用的是library這個module。

94e5b7794dc5eb4cbb8879bfcbb1a840.png

在android studio ide中import進來,導入可能會出現一些value值不存在或主題參數報錯,調高項目Compile Sdk Version(安卓編譯sdk版本)。搞定后參照源碼包中\app\src\main\java\net\ossrs\yasea\demo\MainActivity.java這里的使用方法。

先在你需要推流的activity進行實現幾個接口類public class ExecuteActivity extends Activity implements RtmpHandler.RtmpListener,

SrsRecordHandler.SrsRecordListener, SrsEncodeHandler.SrsEncodeListener {

......

}

然后生成需要重寫的一些函數。

需要注意的是清單文件聲明權限(不贅述)和在布局文件中攝像頭展示界面控件需要聲明成net.ossrs.yasea.SrsCameraView

android:id="@+id/surfaceViewEx"

android:layout_width="wrap_content"

android:layout_height="wrap_content" />

項目需要界面嵌入攝像頭,旁邊展示其他業務。activity中只在onCreate()中設置推流的一些核心功能。//聲明推流攝像頭展示界面對象

SrsPublisher mPublisher = new SrsPublisher((SrsCameraView)

findViewById(R.id.surfaceViewEx));

//設置編碼消息處理

mPublisher.setEncodeHandler(new SrsEncodeHandler(this));

//設置RTMP消息處理

mPublisher.setRtmpHandler(new RtmpHandler(this));

//設置記錄消息處理

mPublisher.setRecordHandler(new SrsRecordHandler(this));

//設置展示界面大小

mPublisher.setPreviewResolution(640, 480);

//設置橫屏推流 1為豎屏 2為橫屏

mPublisher.setScreenOrientation(2);

//設置輸出界面大小

mPublisher.setOutputResolution(640, 480);

//設置視頻高清模式

mPublisher.setVideoHDMode();

//打開攝像頭

mPublisher.startCamera();

//開始或暫停按鈕

btnPublish.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

if (!isPublished) {

//設為硬編碼

mPublisher.switchToHardEncoder();

//開始推流

mPublisher.startPublish(rtmpUrl);

mPublisher.startCamera();

btnPublish.setBackgroundResource(R.drawable.stoppush);

setTextShow("開始推流!");

} else {

mPublisher.stopPublish();

mPublisher.stopRecord();

btnPublish.setBackgroundResource(R.drawable.push);

setTextShow("暫停推流!");

}

isPublished = !isPublished;

}

});

//切換攝像頭按鈕

btnSwitchCamera.setOnClickListener(new

View.OnClickListener() {

@Override

public void onClick(View v) { mPublisher.switchCameraFace((mPublisher.getCamraId() + 1) % Camera.getNumberOfCameras());

}

});

源碼中的示例能實現更多功能,有一些濾鏡效果,自動切換橫豎推流功能(測試會出現卡頓,甚至切換會停止推流,得需要先暫停再重新推流就能解決)。具體請參照示例MainActivity.java中的使用方法,源碼還是很規范的,可讀性較高。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值