uni-app ios端nvue直播推流出现"rtmp url invalidate"错误提示,安卓端正常
uni-app ios端nvue直播推流出现"rtmp url invalidate"错误提示,安卓端正常
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
Windows | 10家庭中文版 | HBuilderX |
产品分类:uniapp/App
PC开发环境操作系统:Windows
HBuilderX类型:正式
HBuilderX版本号:3.3.13
手机系统:iOS
手机系统版本号:iOS 15
手机厂商:苹果
手机机型:iphone XR
页面类型:nvue
vue版本:vue2
打包方式:云端
项目创建方式:HBuilderX
示例代码:
开始推流 暂停推流 resume 停止推流 快照 开启摄像头预览 关闭摄像头预览 切换摄像头 import md5 from ‘@/js_sdk/md5.js’; export default { data() { return { url:’’, context:’’ } }, onReady() { let that = this; setTimeout(() => { var secretdate= ‘xxxxxxx’; let date = Date.parse(new Date())/1000 + 21600; that.url = 'http://livepush.nync.com/live/123456789.flv?txSecret=’+md5(secretdate+this.live_id+date.toString(16).toUpperCase())+’&txTime=’+date.toString(16).toUpperCase(); that.start(0); }, 1000) }, methods: { statechange(e) {}, netstatus(e) {}, error(e) {}, start: function() { this.context.start({ success: (a) => { console.log(“livePusher.start:” + JSON.stringify(a)); }, fail: a =>{ console.log(“开启直播失败:” + JSON.stringify(a)); } }); }, close: function() { this.context.close({ success: (a) => { console.log(“livePusher.close:” + JSON.stringify(a)); } }); }, snapshot: function() { this.context.snapshot({ success: (e) => { console.log(JSON.stringify(e)); } }); }, resume: function() { this.context.resume({ success: (a) => { console.log(“livePusher.resume:” + JSON.stringify(a)); } }); }, pause: function() { this.context.pause({ success: (a) => { console.log(“livePusher.pause:” + JSON.stringify(a)); } }); }, stop: function() { this.context.stop({ success: (a) => { console.log(JSON.stringify(a)); } }); }, switchCamera: function() { this.context.switchCamera({ success: (a) => { console.log(“livePusher.switchCamera:” + JSON.stringify(a)); } }); }, startPreview: function() { this.context.startPreview({ success: (a) => { console.log(“livePusher.startPreview:” + JSON.stringify(a)); } }); }, stopPreview: function() { this.context.stopPreview({ success: (a) => { console.log(“livePusher.stopPreview:” + JSON.stringify(a)); } }); } }
操作步骤:
根据上面的的代码运行即可复现
预期结果:
希望和安卓一样可以直接进行推流服务
实际结果:
在ios端使用live-pusher无法进行推流
bug描述:
使用live-pusher在ios无法进行推流,this.context.start中返回的fail为{“message”:“rtmp url invalidate”,“errMsg”:“start:fail”},同样的代码在安卓没有问题
没有复现问题,检查 url 是否正常
已找到问题,可以结帖
回复 刘超群: 遇到同样,是什么问题
在 uni-app 中使用 nvue
进行直播推流时,如果在 iOS 端出现 "rtmp url invalidate"
错误提示,而 Android 端正常,可能是由于以下原因导致的:
1. RTMP URL 格式问题
- iOS 对 RTMP URL 的格式要求可能比 Android 更严格。确保 RTMP URL 的格式正确,例如:
rtmp://your-server-ip/your-app/your-stream-key
- 检查 URL 中是否包含特殊字符或不支持的字符,确保 URL 是合法的。
2. RTMP 协议支持
- iOS 可能对某些 RTMP 协议支持不完全,尤其是在较新的 iOS 版本中。可以尝试使用其他协议(如 SRT 或 WebRTC)进行推流,或者检查推流 SDK 是否支持 iOS 的最新版本。
3. 推流 SDK 兼容性
- 确保你使用的推流 SDK 在 iOS 端是兼容的。某些 SDK 可能在 Android 上工作正常,但在 iOS 上存在问题。检查 SDK 的文档,确保它支持 iOS 平台。
4. 网络权限
- iOS 对网络权限的要求比较严格,确保在
Info.plist
中正确配置了网络权限。例如:<key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict>