(二)用uni-app开发直播推流APP——推流界面优化和无线真机调试

无线真机调试教程

鉴于nvue在PC环境中的weex、uni-app编译引擎对样式支持不好(报错、看不到效果)和摆脱有线调试的困扰,通过百度搜到如何部署无线调试方案。

1、首先下载完整的ADB工具包,总共有四个文件,两个exe后缀,两个dll后缀。
完整的工具包里面会有fastboot文件,是exe后缀的。使用之前,打开工具包看一下就行了,这就叫确认有fastboot,如果没有,那就不是完整的工具包,并把ADB路径部署到环境变量

以下是adb工具包最新Google官方版下载地址:

ADB和Fastboot for Windows

https://dl.google.com/android/repository/platform-tools-latest-windows.zip

ADB和Fastboot for Mac

https://dl.google.com/android/repository/platform-tools-latest-darwin.zip

ADB和Fastboot for Linux

https://dl.google.com/android/repository/platform-tools-latest-linux.zip

ADB工具包详细
部署ADB到环境变量
ADB执行有效

方法(方便简单适用几乎所有设备)
1.首先把我们的手机连接到电脑上记得打开开发者模式
2.在命令行里cd到我们的sdk下的adb.exe的路径找到我们的adb命令输入 ,输入adb devices查看我们连接的设备

3.使用adb tcpip 8888 设置端口号,5555为默认端口号,也可以设置其它端口号,端口号为需要为4位数

4.拔掉我们的设备,开始无线连接 adb connect
使用adb connect 192.168.3.34:8888, 192.168.3.34为我们手机的ip地址, 其中8888是我们自己设的端口号,这个端口号要和adb tcpip 设置的端口号保持一样,如果我们没有自己设置端口号,直接adb connect192.168.3.34就行了,默认使用5555。 连接成功提示

取消连接就是 adb disconnect
adb disconnect 192.168.3.34:8888

利用adb无线连接android手机进行调式,无需获得root权限 可参考原文
原文:https://blog.csdn.net/lnking1992/article/details/53465183

ADB设置命令行
运行设备菜单有设备显示-nice!!

无线真机投影PC教程

手机无线调试没问题后,下一步就是要把手机的画面投影到PC,简直就是懒人福音(专心做一件事)
这里建议使用虫洞不是广告 https://er.run/#download
使用方法很简单,安装软件后一步一步跟着操作就行记得打开开发者模式

虫洞-手机投影到PC

推流界面优化方案

由于使用nvue开发app都会触碰比较多的坑,在实现最终效果之前先提一下已踩的坑!

cover-view解决方案算是一种对各端平台都比较兼容的方案,但实际效果对live-pusher组件的支持并不理想,并没有很好做到把内容层级放在摄像画面层级之上(可能是我技术没到家),但毕竟我不是去做小程序,只是开发app端,所以又找了另一种解决方案!

cover-view解决方案

拉到cover-view解决方案文档下面,官方做出了相关提示,subNvue原生子窗体解决方案更加适合app端,如果能看到这,恭喜你,发现了宝藏文档

官方的宝藏Tips

subNvue文档

subNvue原生子窗体解决方案说到底就是把每个层级都单独一个页面来写,需要相关的页面配置,这里我把推流用的按钮组单独一个页面btngroup.nvue注意:(主/子页面都必须是nvue格式),子页面的背景色必须设置透明

相关页面与配置

案例代码

push.nvue

<template>
    <view>
        <live-pusher id="livePusher" :url="url" :enable-camera="enableCamera" mode="FHD" :device-position="devicePosition" :orientation="orientation" :style="{height: windowHeight}"></live-pusher>
    </view>
</template>

<script>
    export default {
        data() {
            return {
                url: 'rtmp://vpush.qdd88.cn/live/621FD133-889D-1707-CF0E-83A8A715D412?auth_key=1604361600-0-0-173de9ba8a3db2420d8fa3ee9b90fb23',
                enableCamera: true,
                pusher: null,
                windowHeight: '0px',
                orientation:'vertical',
                devicePosition:'back'
            };
        },
        onReady() {
            this.windowHeight = uni.getSystemInfoSync().windowHeight + 'px';
            this.pusher = uni.createLivePusherContext('livePusher', this);
            this.pusher.startPreview()
        },
        methods: {
            startLive() {
                this.pusher.start({
                    success: a => {
                        console.log('livePusher.start:' + JSON.stringify(a));
                    }
                });
            },
            stopLive() {
                this.pusher.stop({
                    success: a => {
                        console.log(JSON.stringify(a));
                    }
                });
            }
        }
    };
</script>

<style>

</style>

btngroup.nuve

<template>
    <view class="push-btn-group">
        <view class="push-btn">
            <image class="push-btn-img" src="../../static/images/start.png" mode=""></image><text class="push-btn-text">开始直播</text>
        </view>
        <view class="push-btn">
            <image class="push-btn-img" src="../../static/images/camera.png" mode=""></image><text class="push-btn-text">切换镜头</text>
        </view>
        <view class="push-btn">
            <image class="push-btn-img" src="../../static/images/mic-dis.png" mode=""></image><text class="push-btn-text">声音关闭</text>
        </view>
        <view class="push-btn">
            <image class="push-btn-img" src="../../static/images/grid.png" mode=""></image><text class="push-btn-text">更多功能</text>
        </view>
    </view>
</template>

<script>
    export default {

    }
</script>

<style>
    .push-btn-group {
        display: flex;
        justify-content: space-around;
        align-items: center;
        flex-direction: row;
    }

    .push-btn {
        width: 50px;
    }

    .push-btn-img {
        width: 50px;
        height: 50px;
    }

    .push-btn-text {
        font-size: 12px;
        color: #FFFFFF;
    }
</style>

pages.json

{
    "pages": [{
        "path": "pages/index/index",
        "style": {
            "navigationBarTitleText": "demos"
        }
    }, {
        "path": "pages/push/push",
        "style": {
            "navigationBarTitleText": "",
            "enablePullDownRefresh": false,
            "navigationStyle": "custom",
            "app-plus": {
                "subNVues": [{
                    "id": "push-btngroup", // 唯一标识  
                    "path": "pages/push/btngroup", // 页面路径  
                    /*"type": "popup",  这里不需要*/
                    "style": {
                        "position": "absolute",
                        "bottom": "0upx",
                        "width": "100%",
                        "height":"200upx",
                        "background": "transparent"
                    }
                }]
            }
        }
    }],
    "globalStyle": {
        "navigationBarTextStyle": "white",
        "navigationBarTitleText": "uni-app",
        "navigationBarBackgroundColor": "#007AFF",
        "backgroundColor": "#000000"
    },
    "condition": { //模式配置,仅开发期间生效
        "current": 0, //当前激活的模式(list 的索引项)
        "list": [{
            "name": "", //模式名称
            "path": "", //启动页面,必选
            "query": "" //启动参数,在页面的onLoad函数里面得到
        }]
    }
}

最终效果图

结果还是很理想的,设计和素材都是参考腾讯视频云小程序的!!!
后面章节将继续完善推流的相关功能,重点可能是主/子nvue的通信操作...


最终效果图
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,185评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,445评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,684评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,564评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,681评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,874评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,025评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,761评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,217评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,545评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,694评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,351评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,988评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,778评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,007评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,427评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,580评论 2 349