uni-app 对接腾讯云直播 tcp通道发送失败 错误码[-4] ""code":3005 所有IP都已经尝试失败,可以放弃治疗

uni-app 对接腾讯云直播 tcp通道发送失败 错误码[-4] ""code":3005 所有IP都已经尝试失败,可以放弃治疗

使用vue2开发小程序,但是无法成功连接推流。

请教一下各位朋友,有没有人在对接腾讯云直播的时候遇到以下报错,处理好就来,没解决。能不能帮忙看一下,感谢。
错误日志是这样的,一直重连:

"videoHeight":.1280,"audioBitrate":.O,"videoFPS".18"videoBitrat
e":0"netSpeed":0"videoGOp":3,"videoWidth":720."netJitter":077
状态日志:Imessage" 'tcp通道发送失败 错误码1-4]
""code":3005}
状态日志:"'message":"UNKNOWN','code":3004¥
状态日志:™'message':'rtmp开始推流"'code':10023
状态日志:°'message'”"已经连接rtmp服务器"'code':10013
状态日志:°message”:"启动网络重连"'code":11021
网络日志:tinfo’
{'videoHeight":1280,"audioBitrate":0,"videoFPS":17,"videoBitrat
e":0."netSpeed":0."videoGOp":.3."videoWidth":720."netJitter":077
状态日志:™message”:'tcp通道发送失败 错误码1-4]
""code":3005}
状态日志:"message'":'UNKNOWN''code":30043
网络日志:Yinfo”
{"videoHeight":.1280,"audioBitrate":0,"videoFPS":17,"videoBitrat
e':0,'netspeed':0,'videoGOP":3, videoWidth":720,'netJitter":0f
状态日志:1message':'rtmp开始推流""code':10023
状态日志::'message”"已经连接rtmp服务器" code":10013
状态日志:8message'""启动网络重连"'code':11021
网络日志:rinfo'
{"videoHeight":.1280,"audioBitrate":O."videoFPS":17."videoBitrat
e".0,"netSpeed":0."videoGOP":.3,"videoWidth":.720,"netJitter":.O7}
状态日志:"message” 'tcp通道发送失败 错误码1-4]
""code":3005}
状态日志:™'message”'UNKNOWN','code':3004
状态日志:™message”':'rtmp开始推流"'code':10021
网络日志:{"info"
["videoHeight":1280,"audioBitrate":0,"videoFPS":.15,"videoBitrat
e":0,"netSpeed":0,"videoGOP":3,"videoWidth":720,"netJitter":O}
状态日志:"message”"已经连接rtmp服务器",'code':10013
状态日志:1message”:"首帧画面采集完成"'code':10073
状态日志:i'message”•"打开摄像头成功" code”10033
状态日志:"'message”"启动硬编""code ".10083
状态日志:!message”"首帧画 面采集完成"code”1007
状态日志;*message”:"打开摄像头成功",'code'10033

最后会出现:
26 statechange:{"type":"statechange","timeStamp":1691384562331,"target":{"id":"livePusher","dataset":{},"offsetLeft":0,"offsetTop":0},"currentTarget":{"id":"livePusher","dataset":{},"offsetLeft":0,"offsetTop":0},"detail":{"message":"所有IP都已经尝试失败,可以放弃治疗

我的代码是这样的:

<template>
    <view>
        <button type="default" @click="onPush('h5p')" style="display: none;">h5p_推流按钮(废弃:码率无法调整)</button>
        <button type="default" @click="onPush('weex')">weex_推流按钮</button>
    </view>
</template>
<script>
    export default {
        data() {
            return {
                
            }
        },
        methods: {
            onPush(str) {
                uni.navigateTo({
                    url: '../push/push_' + str
                });
            }
        }
    }
</script>
<style>
</style>
<template>
    <view>
        <live-pusher id="livePusher" :url="url" :enable-camera="enableCamera" :mode="mode" :device-position="devicePosition"
         :orientation="orientation" :muted="muted" :beauty="beauty" :whiteness="whiteness" :remote-mirror="remoteMirror"
         :auto-focus="autoFocus" :zoom="zoom" :style="{height: windowHeight}" @statechange="statechange" @netstatus="netstatus"
         @error="error"></live-pusher>
    </view>
</template>

<script>
    export default {
        data() {
            return {
                url: '',
                enableCamera: true,
                pusher: null,
                isPushing: false,
                windowHeight: '0px',
                orientation: 'vertical',
                devicePosition: 'front',
                mode: 'FHD',
                muted: false,
                beauty: 0,
                whiteness: 0,
                zoom: true,
                autoFocus: true,
                remoteMirror: true
            };
        },
        onLoad(options) {
            this.url = options.push_url
            this.orientation = options.orientation
            this.devicePosition = options.devicePosition
            this.mode = options.mode
            this.beauty = options.beauty / 10
            this.whiteness = options.whiteness / 10
            this.zoom = options.zoom
            this.autoFocus = options.autoFocus
        },
        onReady() {
            this.windowHeight = uni.getSystemInfoSync().windowHeight + 'px';
            this.pusher = uni.createLivePusherContext('livePusher', this);
            this.pusher.startPreview()
            uni.$on('onStart', this.onStart)
            uni.$on('onSwitchCamera', this.onSwitchCamera)
            uni.$on('onMuted', this.onMuted)
        },
        methods: {
            onStart() {
                this.isPushing = !this.isPushing
                if (this.isPushing) {
                    this.pusher.start()
                } else {
                    this.pusher.stop({
                        success: () => {
                            this.pusher.startPreview()
                        }
                    })
                }
                uni.$emit('switchStartBtn', {
                    startBtn: this.isPushing
                })
            },
            onSwitchCamera() {
                this.pusher.switchCamera()
                uni.$emit('switchCameraBtn', {})
            },
            onMuted() {
                this.muted = !this.muted
                uni.$emit('switchMutedBtn', {
                    mutedBtn: this.muted
                })
            },
            statechange(e) {
                let detail = e.detail
                // console.log("状态日志:" + JSON.stringify(detail))
                uni.$emit("appendLogs", {
                    msg: "状态日志:" + JSON.stringify(detail)
                });
            },
            netstatus(e) {
                let detail = e.detail
                // console.log("网络日志:" + JSON.stringify(detail))
                uni.$emit("appendLogs", {
                    msg: "网络日志:" + JSON.stringify(detail)
                });
            },
            error(e) {
                let detail = e.detail
                // console.log("错误日志:" + JSON.stringify(detail))
                uni.$emit("appendLogs", {
                    msg: "错误日志:" + JSON.stringify(detail)
                });
            }
        }
    };
</script>

<style>

</style>


网络问题:TCP通道发送失败可能是由于网络连接不稳定或网络延迟导致的。确保设备能够正常连接到互联网,并尽量在稳定的网络环境下进行测试。
防火墙或网络代理:防火墙或网络代理可能会阻止TCP通道的连接。确保你的网络环境允许TCP连接,并且没有被防火墙或网络代理拦截。
域名解析问题:如果在代码中使用了域名进行连接,确保域名解析正确,可以尝试使用直接IP地址进行连接。
端口问题:确认使用的TCP端口是否正确,并且服务器端允许该端口进行连接。
签名或认证问题:腾讯云直播通常需要进行签名或认证才能建立连接。确保你正确地配置了相关的签名或认证信息。
SDK版本问题:确保你使用的腾讯云直播SDK版本是最新的,并且与uni-app的版本兼容。
权限问题:腾讯云直播可能需要一些特定的权限才能使用。确保你在腾讯云后台正确地配置了相关的权限。
请求频率限制:腾讯云可能对API请求频率进行限制。确保你的请求频率没有超过腾讯云的限制。
错误处理:在代码中进行错误处理,捕获和处理可能的异常,以便更好地排查问题。

参考gpt:
结合自己分析给你如下建议:
您的推流地址是否正确?您需要确保推流地址是以 rtmp:// 开头的,并且包含了 txSecret、txTime 等防盗链参数。您可以参考推拉流 URL 拼接来生成正确的推流地址。
您的网络是否正常?您需要确保您的网络能够访问 rtmp:// 协议,并且没有被防火墙或者其他因素阻断。您可以尝试切换网络或者使用其他设备来测试推流。
您的推流 URL 是否被占用?一个推流 URL 同时只能有一个推流端,如果有其他客户端正在使用同一个推流 URL,您的推流会被拒绝。您可以登录直播控制台,在流管理的在线流中查看此条流是否已经在推,也可以在禁推流中查看该条流是否被禁推。
您的 txTime 是否过期?如果您的 txTime 设置得过于短,当主播在直播过程中遭遇网络闪断时会因为推流 URL 过期而无法恢复推流。建议设置为当前时间往后推 12 或者 24 小时为宜,也就是要长于一场普通直播的直播时间。
您的 txSecret 是否正确?如果您的 txSecret 计算错误或者已经过了有效期,您的推流会被腾讯云踢掉。您可以参考防盗链签名来计算正确的 txSecret。

@ada 帮忙回答一下

看出您在使用uni-app对接腾讯云直播时遇到了连接推流失败的问题。错误码[-4]表示所有IP都已经尝试失败,无法建立连接。根据您的代码,我看到您使用了live-pusher组件来进行推流操作。

首先,您需要确保您的推流地址(url)是正确的,并且已经在腾讯云直播控制台配置好了推流域名和推流密钥。

其次,您可以尝试以下几个步骤来解决连接推流失败的问题:

  1. 检查网络连接:确保您的设备可以正常连接互联网,并且网络稳定。

  2. 检查权限设置:在使用摄像头和麦克风进行推流时,需要获取用户的授权。您可以在onReady生命周期函数中调用uni-app的API来请求用户授权。

  3. 检查设备支持:某些设备可能不支持推流功能,您可以在onReady生命周期函数中调用uni-app的API来检测设备是否支持推流。

  4. 检查推流参数:您可以尝试调整推流参数,如分辨率、码率等,以适应不同的网络环境和设备性能。

  5. 检查腾讯云直播配置:确保您在腾讯云直播控制台正确配置了推流域名和推流密钥,并且已经启用了推流功能。

如果您尝试了以上步骤仍然无法解决问题,建议您查阅uni-app和腾讯云直播的官方文档,或者咨询腾讯云直播的技术支持,以获取更详细的帮助和指导。