1,第一步先將yasea依賴集成到Android項目裏面(這一步就不介紹了,百度有開源的包下載)
2,第二步在Android項目裏面新建一個activity實現
RtmpHandler.RtmpListener, SrsRecordHandler.SrsRecordListener, SrsEncodeHandler.SrsEncodeListener
這幾個接口。
3,第三步創建一個簡單的佈局
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".activity.PullStreamActivity">
<net.ossrs.yasea.SrsCameraView
android:id="@+id/srcView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:background="@color/transparent"
>
<EditText
android:id="@+id/pullUrl"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="50dp"
android:hint="推流地址"
></EditText>
<Button
android:id="@+id/pullBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="推流"
/>
</LinearLayout>
<ListView
android:id="@+id/typesList"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_marginTop="50dp"
android:scrollbars="none"
android:divider="@null"
>
</ListView>
</FrameLayout>
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,最後記得加權限,權限申請什麼的不在這寫了,在此附上一個依賴的下載地址,希望能幫到大家。