uni-app nvue android机型LivePusher推流失败

uni-app nvue android机型LivePusher推流失败

25 回复

我来处理。稍等一下

更多关于uni-app nvue android机型LivePusher推流失败的实战教程也可以访问 https://www.itying.com/category-93-b0.html


你先试一下 uni推流的测试地址。 看一下有没有这个问题 https://ask.dcloud.net.cn/article/39482

你发一下你测试的示例代码。 我按照你提供的操作步骤。 android ios 都不能正常使用和播放

<template> <view class="container" :style="{ height: height }"> <live-pusher mode="FHD" id="livePusher" ref="livePusher" class="livePusher" :url="url" :orientation="orientation" :auto-focus="true" :beauty="beauty" :whiteness="beauty" @statechange="statechange" @netstatus="netstatus" @error="error"></live-pusher>
    <view class="box">  
        <view v-if="status === 0" class="start-btn" @click="start">  
            <view class="start-btn-inner"></view>  
        </view>  
    </view>  

    <view class="box">  
        <view v-if="status === 1" class="stop-btn" @click="stop">  
            <view class="stop-btn-inner"></view>  
        </view>  
    </view>  

</view>  
</template> <script> export default { data() { return { url: "", status: 0, beauty: 0, orientation: "vertical" }; }, created() { this.height = `${uni.getSystemInfoSync().windowHeight}px`; }, onReady() { plus.device.setWakelock(true); this.context = uni.createLivePusherContext("livePusher", this); setTimeout(() => { this.context.startPreview(); }, 500) this.context.startPreview(); this.url = 'rtmp://81.70.104.12:18881/live/ouzz' }, methods: { statechange(e) { console.log("statechange:" + JSON.stringify(e)); }, netstatus(e) { console.log("netstatus:" + JSON.stringify(e)); }, error(e) { console.log("error:" + JSON.stringify(e)); }, start: function() { this.status = 1; this.context.start({ success: (a) => { }, }); }, stop: function() { this.status = 0; this.context.stop({ success: (a) => { this.context.startPreview(); }, }); }, }, }; </script> <style> .container { width: 750rpx; } .logout { position: absolute; left: 50rpx; top: 100rpx; } .logout-img { width: 50rpx; height: 50rpx; } .livePusher { flex: 1; } .icons { position: absolute; right: 0rpx; top: 100rpx; align-items: center; width: 150rpx; } .btn-box { align-items: center; margin-bottom: 40rpx; } .btn-img { width: 40rpx; height: 40rpx; margin-bottom: 4rpx; } .btn-text { color: #fff; font-size: 26rpx; } .live-btn-container { position: absolute; bottom: 100rpx; width: 750rpx; padding: 0 40rpx; } .box { bottom: 140rpx; position: absolute; width: 750rpx; display: flex; align-items: center; justify-content: center; } .start-btn { width: 160rpx; height: 160rpx; border-radius: 100%; border: 10rpx solid #fff; position: relative; } .start-btn-inner { width: 120rpx; height: 120rpx; border-radius: 100%; background: red; position: absolute; left: 90rpx; top: 90rpx; transform: translateX(-80rpx) translateY(-80rpx); } .stop-btn { width: 160rpx; height: 160rpx; border-radius: 100%; border: 10rpx solid #fff; position: relative; } .stop-btn-inner { width: 60rpx; height: 60rpx; border-radius: 16rpx; background: red; position: absolute; left: 150rpx; top: 150rpx; transform: translateX(-110rpx) translateY(-110rpx); } </style>

我改用的你们的推流地址 rtmp://81.70.104.12:18881/live/ouzz
对应的拉流地址为 http://81.70.104.12:8080/live/ouzz.flv

补充一下
1 是nvue页面
2 我用obs对rtmp://81.70.104.12:18881/live/ouzz推过流了,在http://jessibuca.monibuca.com/player.html的网页播放器播放 http://81.70.104.12:8080/live/ouzz.flv也是没问题的,你们的流媒体是正常的

用我们的是测试服务器,推流没问题是吧

回复 [已删除]: 我是说用obs 推流可以,用安卓app偶尔推不上去

回复 [已删除]: 有问题的,小米10有时候推的挺好,有时候就不行了,控制台报错说你们服务器网络带宽不够,但是我又换obs就一切正常

回复 e***@outlook.com: 这个问题很难界定。 那小小米8 推不上去有报错日志吗。

我用小米8推你们的流 100%复现,就推上去,拉流播放就有问题

同样的代码run到IOS就可以,推拉就都是正常的

回复 e***@outlook.com: 那重点说说小米8的问题吧。 我这边手头确实没有小米8的手机。 你那边报错有错误日志吗。不要贴上面那种日志。没意义

回复 [已删除]: 可以看一下下面的回复贴图,我明天再找几台开发机试试,你可以试试我上面的代码吗

还有几个问题 1 startPreview必须写个定时器500毫秒后执行,不然安卓就无法预览,IOS可以直接调用 2 首次打开app要权限,这个摄像头预览没办法自动展示,uni也没提供一个权限申请成功的回调方法,让我触发调用startPreview

数据有问题,时间戳一会高一会低,所以播放才有问题,100%是推流的问题,和流媒体没关系

好。 这个时间戳的问题 我这边应该可以复现。我先看看这个。 稍后给你回复

回复 [已删除]: 我知道为什么了 ,编辑器吃掉了推流地址的&符号 推流地址不正确导致你推流报错,我重新发你 rtmp://139.224.42.11:1935/live/1?sign=85595DF32F2E81BF4EAACD5BE1A4EB0D44ED75FE&timestamp=1641962001939&nonce=Va1BBIn1sLiMe0wZbqLew

能推上去,拉flv直播流的pts有问题导致无法观看播放

回复 e***@outlook.com: 对了 你的服务器没问题,有问题的是我的流媒体服务,我这边flv的时间戳出来就是有问题

回复 e***@outlook.com: OK 那就是没问题了是吧。 麻烦帮忙把解决问题的结果下面简单回复一下。 后续如果如果有人踩到类似的坑可以避免。

回复 [已删除]: 我用的zlmmediaserver 拉的flv直播流的时间戳有问题导致的,其实现在还不确定是推流的问题还是流媒体的问题

我本地网络很好,但是不管是我的流媒体还是你提供的,都会有几率出现这个问题

测试 华为MED-AL00 安卓10 无法推流
推你们提供的服务器 流TCP断开,带宽不足 无法推上去 推我的服务器 流TCP断开 自动重连 然后仍然失败 无法推上去
同一时间用obs推流,就一切正常,说明你们服务器不是带宽有问题

回到顶部