1. 程式人生 > >騰訊雲直播相關問題處理

騰訊雲直播相關問題處理

問題①:彈幕有時候沒有從最右邊出現,一開始就顯示在彈幕區中間,是因為上一條彈幕劃過改變了起始位置。

mDanmakuView.pause();
mDanmakuView.addDanmaku(danmaku);
mDanmakuView.resume();

在新增彈幕前暫停,新增完之後恢復,要注意的是該方法有可能阻塞訊息併發,最好放在最終新增彈幕處處理該問題,比如在addDanmuInternal方法的新增彈幕處修改。

問題②:主播端橫豎屏直播,彈幕顯示問題。

在上篇部落格騰訊雲直播下中提到過橫豎屏推流的處理,現在出現的一個問題是 onConfigurationChanged方法沒有被呼叫,但是主播旋轉手機的時候確實是在橫豎屏推流切換,那麼彈幕區的佈局就會導致彈幕對於主播來說並不總是從右往左。所以我們需要主播端的activity按照重力感應器處理介面橫豎屏。解決方案如下

一、新增許可權

<uses-permission android:name="android.permission.CHANGE_CONFIGURATION" />

二、強制開啟螢幕旋轉效果,將橫豎屏的處理交還給SENSOR感測器,放在onCreate的setContentView之後就好。

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);

注意:當橫屏直播時主播直接退出直播,finish掉直播activity時,相關聯的介面是豎屏模式會造成崩潰的可能,可以在manifest檔案中配置主播activity和相關的activity屬性android:screenOrientation="portrait"

問題③:觀看端半屏全屏播放控制

我們一般會給視訊播放器新增一個全屏按鈕,以便於觀眾可以自由選擇喜歡的觀看模式,那麼該如何設定按鈕和activity的狀態呢。半屏全屏可以根據佈局的weight來分配播放器的空間,全屏時騰訊雲提供了視訊播放旋轉270度的方法,但是該方法並不會改變activity的橫豎屏狀態,所以就會出現彈幕方向以及軟鍵盤彈出方向都不對的問題。下面提供一種設定方法。

@Override
	public void onNetStatus(Bundle bundle) {
		int width = Integer.parseInt(bundle.get(TXLiveConstants.NET_STATUS_VIDEO_WIDTH).toString());
		int height = Integer.parseInt(bundle.get(TXLiveConstants.NET_STATUS_VIDEO_HEIGHT).toString());
		if (width != 0 && height != 0) {
			if (width > height) {
				// 橫屏推流
				isPortraitPusher = false;
				if (fullScreen) {
					mTxlpPlayer.pause();
					setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
					mTxlpPlayer.resume();
				}
			} else {
				// 豎屏推流
				isPortraitPusher = true;
				if (fullScreen) {
					mTxlpPlayer.pause();
					setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
					mTxlpPlayer.resume();
				}
			}
		}

	}

以上是騰訊雲提供的一個觀看端的狀態回撥,每秒響應一次,其中setRequestedOrientation方法就是設定activity狀態的關鍵。當然manifest依然需要配置configChanges屬性。該方法解決了橫豎屏問題,相關的頁面佈局也就會跟隨變化,你如果嫌這種頁面佈局醜又不怕麻煩的話可以讓UI設計兩套佈局分別放置在不同的layout資料夾效果如下。


問題④:主播端預覽畫面黑屏(部分機器,比如小米Max 榮耀8)

mTXCloudVideoView.enableHardwareDecode(true);
在開始攝像頭預覽前加入以上程式碼,作用為開啟硬體加速,可改變部分機型不能支援直播需要的資源消耗 cpu gpu 等情況,還能讓正常的機型更好的支援直播功能。

一些解釋:本來預備將demo上傳csdn,各位碼友看部落格介紹時也好有個參考,demo有問題也可以相互探討,奈何csdn限制太高,本碼農等級太低只有60M的上傳許可權,所以就傳個簡潔版,有問題可以留言提出相互探討demo連結