标签: opentok

消息发送到解除分配的实例

背景:

我的所有OpenTok方法都ViewController被推入视图中,就像典型的Master/detail VC关系一样.detailVC根据您的选择将您连接到不同的房间.当我按下后退按钮弹出视图时,我发生了崩溃(可能是7次中的1次):

[OTMessenger setRumorPingForeground] message sent to deallocated instance xxxxx
Run Code Online (Sandbox Code Playgroud)

要么

[OTSession setSessionConnectionStatus:]: message sent to deallocated instance 0x1e1ee440
Run Code Online (Sandbox Code Playgroud)

我在viewDidDisappear中放置了取消发布/断开连接方法:

-(void)viewDidDisappear:(BOOL)animated{

    //dispatch_async(self.opentokQueue, ^{
    [self.session removeObserver:self forKeyPath:@"connectionCount"];

    if(self.subscriber){
        [self.subscriber close];
        self.subscriber = nil;
    }

    if (self.publisher) {
        [self doUnpublish];
    }

    if (self.session) {
        [self.session disconnect];
        self.session = nil;
    }
    //});
    [self doCloseRoomId:self.room.roomId position:self.room.position];
}
Run Code Online (Sandbox Code Playgroud)

这是一个痕迹:

图片

这是Github上的DetailViewController:链接在这里

如何重现:

  1. 从MasterVC中进行选择,将您带入DetailVC,立即尝试连接到会话并发布

  2. 通常在会话有机会发布流之前,快速回到之前的MasterVC

  3. 试试几次,最终会崩溃.

  4. 如果我放慢速度并允许发布者有机会进行连接和发布,则不太可能导致崩溃.

预期结果:

它应该断开会话/取消发布并开始一个新的会话,因为我在Master/DetailVC之间来回走动.

其他:

您的设备和操作系统版本是什么?iOS 6

你在什么类型的连接?无线上网

僵尸已启用?是

ARC启用了吗?是

代表们定为零?是的,据我所知

任何帮助解决此崩溃将非常感激.也许我错过了一些我根本无法看到的基本知识.

似乎发生的事情是OpenTok库中的OTSession对象继续向该库中的对象发送消息,这些对象已经被切换视图解除分配.该库有一个[会话断开]方法,如果你给它足够的时间,它可以正常工作,但它需要接近2-3秒,这是在视图之间暂停应用程序的很长时间.

这可能是一个愚蠢的问题,但是:无论如何都要停止某个VC启动的所有进程?

memory-management objective-c ios xcode4 opentok

22
推荐指数
1
解决办法
1215
查看次数

如何向OpenTok视频添加核心图像过滤器?

当我在iOS上发布流时,TokBox使用默认摄像头.有没有办法向发布者添加实时过滤器?

我只想要一些关于如何创建过滤器并将其附加到opentok发布者对象(OTVideoCapture)的简单示例代码.

或者,如果这不是正确的方法...在订户端附加过滤器也可以.

怎么能轻松完成?

image ios tokbox opentok swift

20
推荐指数
1
解决办法
686
查看次数

TokBox OpenTok替代品?

我想在我的网站上提供视频聊天,并想知道是否有人可以推荐一个API /服务,让我这样做.我熟悉OpenTok,但不喜欢它使用Flash.此外,音频往往有很多噪音/反馈 - 除非你戴着耳机.

建议?

编辑:

我现在正在将它用于P2P,但是希望将来能够进行群组视频聊天.

Flash是我主要关心的问题之一.当我使用OpenTok时,我注意到Flash有时会崩溃.虽然Flash也会在其他时间崩溃 - 但在将其用于OpenTok时似乎更频繁.我理解Flash有它的好处(对我来说最重要的是我几乎可以指望我的用户拥有它),但我想尽可能探索其他选项.Flash应该是一种垂死的技术?

音频是另一个主要问题.通常会出现回声和明显的延迟.使用相同的设置(互联网连接,计算机,麦克风/扬声器等)并将其与Skype进行比较,显然Skype更加优越.

玩家是我最后的关注点.以下是我不喜欢的事情:

  • 我无法删除链接到OpenTok的左上角图标.因此,这不是我能真正白色标签的东西.
  • 播放器具有音量控制功能,但不支持视频控制(例如停止发布,停止订阅).相反,我被迫通过API实现自己的.尽管API使其变得相当容易,但我认为不应该这样做.应提供视频控制,就像音量控制一样.

api videochat video-conferencing tokbox opentok

16
推荐指数
2
解决办法
1万
查看次数

类别冲突:类别中的实例方法与来自另一个类别的相同方法的冲突

我知道有两种情况会导致以下错误:

ld: warning: instance method 'resetAudioSystem' in category from /opentok-ios-sdk/Opentok.framework/Opentok(OTPublisher+AudioSnoop.o) conflicts with same method from another category
ld: warning: instance method 'attachAudioSnoopBlock:' in category from /opentok-ios-sdk/Opentok.framework/Opentok(OTPublisher+AudioSnoop.o) conflicts with same method from another category
ld: warning: instance method 'setVideoSnoopDelegate:' in category from /opentok-ios-sdk/Opentok.framework/Opentok(OTPublisher+VideoSnoop.o) conflicts with same method from another category
Run Code Online (Sandbox Code Playgroud)

可能性1:类别实例方法被声明两次.(在此描述:SO)

但是,当我搜索3个实例方法中的任何一个(在Xcode或Grep中)时,我发现它没有被声明两次.

可能性2:意外导入.m文件.(在此描述:SO)

但是,我检查了所有的导入,我只在整个项目中导入一次框架.此外,仅在Build Phases中显示一次.

我的程序在没有崩溃的情况下运行,可能是因为使用了添加的最后一个类别定义并且它恰好是正确的.(来源)

问题1:在添加之前,有没有办法告诉两个类别的位置?

问题2:关于如何解决这个问题的任何其他想法?

注意:Opentok Framework是一个二进制文件

发生在:

xcode 4.6&xcode 5

iOS6和iOS7

xcode objective-c ios objective-c-category opentok

16
推荐指数
3
解决办法
5786
查看次数

AudioFocus 在同一个添加的 Call、android 9 和 10 中请求拒绝 OpenTok(Tokbox)

Android 电信管理器在添加的 VOIP 呼叫中没有传入的音频/声音

我正在尝试在我的应用中添加 VOIP 视频通话。我已经注册了电话帐户并将呼叫添加到 TelecomManager。呼叫被成功接受。我已经实现了 Connection 和 ConnectionService。

我正在使用以下代码添加呼叫。

var uri = Android.Net.Uri.FromParts(PhoneAccount.SchemeSip, voipCallInfo.Payload?.CallerName, null);
extras.PutParcelable(TelecomManager.ExtraIncomingCallAddress, uri);
extras.PutParcelable(TelecomManager.ExtraPhoneAccountHandle, phoneAccountHandle);
telecomManager.AddNewIncomingCall(phoneAccountHandle, extras);
Run Code Online (Sandbox Code Playgroud)

我正在使用下面的代码来接听来电。

var telecomManager = GetTelecomManager();
if (telecomManager == null)
{
     logger.Error("Telecom Manager is null, May be permissions not granted");
     return;
}
try
{
     .
     .
     .
     telecomManager.AcceptRingingCall();
     .
     .
}
catch (Exception ex)
{
     logger.Error("RequestSystemToAnswerCall Exception : " + ex.Message);
}
Run Code Online (Sandbox Code Playgroud)

我试图请求音频焦点,但是当我在电信管理器中添加呼叫时,我的应用程序失去了焦点,因为电话开始响铃。在我接受通话应用程序后,我没有获得焦点,我相信 Telecom/Call 有焦点,但我什么也听不到。通话中的另一个人可以毫无问题地听到我的声音。当我结束通话时,应用程序会重新获得焦点。

我可以在日志中看到下面的内容。

    2020-06-22,14:09:34.831 WebRTCManager Trace IsAudioSubscriptionEnabled True 
[AudioManager] Use of stream …
Run Code Online (Sandbox Code Playgroud)

android xamarin tokbox opentok voip-android

8
推荐指数
1
解决办法
526
查看次数

使用RecordRTC录制远程webrtc流

我正在使用Opentok JavaScript WebRTC库来托管一对一的视频聊天(点对点).我可以看到我的同伴的视频,并完美地听到音频.

我的愿望是录制其他聊天方(远程)的音频/视频.为此,我正在使用RecordRTC.我能够录制其他聊天参与者的视频(视频输出到HTML视频元素),但到目前为止,我还没有成功录制音频(死音静音.wav文件是我能得到的).使用Chrome Canary(30.0.1554.0).这是我的方法:

var clientVideo = $('#peerdiv video')[0];//peer's video (html element)
var serverVideo = $('#myselfdiv video')[0];//my video (html element)

var context = new webkitAudioContext();
var clientStream = context.createMediaStreamSource(clientVideo.webRTCStream);
var serverStream = context.createMediaStreamSource(serverVideo.webRTCStream);
Run Code Online (Sandbox Code Playgroud)

webRTCStream是我通过修改opentok js库的源来分配给HTMLVideoElement对象的自定义属性.它包含链接到相应<video>元素的MediaStream对象.

var recorder = RecordRTC({
                    video: clientVideo,
                    stream: clientStream
                });
recorder.recordAudio();
recorder.recordVideo();
Run Code Online (Sandbox Code Playgroud)

录制视频.音频文件也被创建,它的长度接近视频的长度,然而,它是完全静音的(是的,录制期间在另一侧产生了很多噪音)

我用视频元素测试了这个,它显示了我的网络摄像头的视频流(和音频),并且它有效:录制了音频和视频:

...
var recorder = RecordRTC({
                    video: serverVideo,
                    stream: serverStream
                });
...
Run Code Online (Sandbox Code Playgroud)

源自远程位置的流有什么特别之处吗?关于这个问题的任何指导都会非常有帮助.

webrtc opentok web-audio-api

7
推荐指数
1
解决办法
8166
查看次数

如何处理GPUImage图像缓冲区,以便它们可以用于像Tokbox这样的东西?

我正在使用OpenTok并用我自己的包含GPUImage的子类版本替换了他们的Publisher.我的目标是添加过滤器.

应用程序构建并运行,但崩溃在这里:

   func willOutputSampleBuffer(sampleBuffer: CMSampleBuffer!) {
        let imageBuffer = CMSampleBufferGetImageBuffer(sampleBuffer)
        CVPixelBufferLockBaseAddress(imageBuffer!, 0)
        videoFrame?.clearPlanes()
        for var i = 0 ; i < CVPixelBufferGetPlaneCount(imageBuffer!); i++ {
            print(i)
            videoFrame?.planes.addPointer(CVPixelBufferGetBaseAddressOfPlane(imageBuffer!, i))
        }
        videoFrame?.orientation = OTVideoOrientation.Left
        videoCaptureConsumer.consumeFrame(videoFrame) //comment this out to stop app from crashing. Otherwise, it crashes here.
        CVPixelBufferUnlockBaseAddress(imageBuffer!, 0)
    }
Run Code Online (Sandbox Code Playgroud)

如果我评论该行,我就可以运行应用程序而不会崩溃.事实上,我看到过滤器正确应用,但它正在闪烁.Nothings发布到Opentok.

我的整个代码库都可以下载.单击此处查看特定文件:这是该类的特定文件.它实际上很容易运行 - 只需在运行之前进行pod安装.

经过检查,可能videoCaptureConsumer是没有初始化.协议参考

我不知道我的代码意味着什么.我直接从这个客观的C文件中翻译了它:Tokbox的示例项目

ios gpuimage tokbox opentok swift

7
推荐指数
1
解决办法
1416
查看次数

放大/提升呼叫频道/音频音量

我们制作了一个应用程序,可以在两个设备(ios,android和web)之间进行视频通话.使用cordova,opentok,nodejs和cordova-opentok-plugin.在测试期间,我们注意到Android设备上的声音有点低,很难听到对方说话.我们测试了应用程序中的声音,并将其与Google Hangouts和普通电话的测试进行了比较.从这些测试中我们可以看到音频在我们的应用程序中处于最大音量.音频流通过所有这些应用程序的呼叫通道和我们自己的应用程序.

我们使用Skype测试了相同的设备,也通过呼叫频道进行了测试,而且Skype上的声音比我们自己的应用程序和Google Hangouts甚至是普通的电话都要大得多.

所以看来Skype已经找到了一种提升Android音频的方法.有谁知道我们如何实现这种音频通道的增强/放大?

提前致谢.

java android tokbox opentok

7
推荐指数
0
解决办法
206
查看次数

当应用程序进入前台时,OpenTok 发布者的视图变黑

在我使用 OpenTok 的一对一视频通话应用程序中,发布者的视图在进入后台模式并进入前台后变为黑色。订阅者也无法看到视图(只能看到黑框)。

我将发布者和订阅者属性设置为:

publisher.publishVideo = true

subscriber.subscribeToVideo = true

任何解决方案都会非常有帮助。

background opentok

6
推荐指数
0
解决办法
543
查看次数

如何在构建过程中修复此重复类错误?

我试图在我的 android 应用程序中同时拥有 jitsi 和 opentok,并相应地切换它们。

这些是我的 build.gradle(app) 依赖项

//使用opentok依赖

implementation files('libs/opentok-android-sdk-2.15.2.aar')
Run Code Online (Sandbox Code Playgroud)

//使用jitsi依赖

implementation ('org.jitsi.react:jitsi-meet-sdk:2.5.0')
Run Code Online (Sandbox Code Playgroud)

我的构建失败并出现这样的错误

Duplicate class org.webrtc.AudioSource found in modules jetified-opentok-android-sdk-2.15.2-runtime.jar (opentok-android-sdk-2.15.2.aar) and jetified-react-native-webrtc-1.75.2-jitsi-2994175-runtime.jar (com.facebook.react:react-native-webrtc:1.75.2-jitsi-2994175)
Duplicate class org.webrtc.AudioTrack found in modules jetified-opentok-android-sdk-2.15.2-runtime.jar (opentok-android-sdk-2.15.2.aar) and jetified-react-native-webrtc-1.75.2-jitsi-2994175-runtime.jar (com.facebook.react:react-native-webrtc:1.75.2-jitsi-2994175)
Duplicate class org.webrtc.BaseBitrateAdjuster found in modules jetified-opentok-android-sdk-2.15.2-runtime.jar (opentok-android-sdk-2.15.2.aar) and jetified-react-native-webrtc-1.75.2-jitsi-2994175-runtime.jar (com.facebook.react:react-native-webrtc:1.75.2-jitsi-2994175)
Duplicate class org.webrtc.BitrateAdjuster found in modules jetified-opentok-android-sdk-2.15.2-runtime.jar (opentok-android-sdk-2.15.2.aar) and jetified-react-native-webrtc-1.75.2-jitsi-2994175-runtime.jar (com.facebook.react:react-native-webrtc:1.75.2-jitsi-2994175)
Duplicate class org.webrtc.CallSessionFileRotatingLogSink found in modules jetified-opentok-android-sdk-2.15.2-runtime.jar (opentok-android-sdk-2.15.2.aar) and jetified-react-native-webrtc-1.75.2-jitsi-2994175-runtime.jar (com.facebook.react:react-native-webrtc:1.75.2-jitsi-2994175)
Duplicate class org.webrtc.Camera1Capturer found in modules jetified-opentok-android-sdk-2.15.2-runtime.jar (opentok-android-sdk-2.15.2.aar) and …
Run Code Online (Sandbox Code Playgroud)

java android opentok jitsi androidx

6
推荐指数
1
解决办法
3743
查看次数