Webrtc Android DTMF 支持
Webrtc Android DTMF Support
我正在尝试为基于 WebRTC 的 Android/iOS 应用程序实施 DTMF。
Android的DTMF有没有API?我试过调用以下内容:
m_peerConnectionFactory.createdtmfsender(localAudioTrack);
m_peerConnectionFactory.insertDtmf(tone, duration,gap);
我已经尝试将上面的 api 用于 javascript,它在浏览器上运行良好,但无法在 Android 上运行。
我还没有在 iOS 上试过,因为我需要先在 android 上做到 运行。
请告诉我 Android/iOS 是否支持此功能?如果是的话,有谁能帮我找到正确的 api's
使用的 libjingle 版本:chrome74.0.3729.169
我在 android 和 iOS 上都得到了它。 Api createdtmfsender
已弃用,详情请见here
Android代码:
RtpSender m_audioSender = null;
for (RtpSender sender : m_peerConnection.getSenders()) {
//m_peerConnection is object of webRTC peerconnection
if (sender.track().kind().equals("audio")) {
m_audioSender = sender;
}
}
if (m_audioSender != null) {
DtmfSender dtmfSender = m_audioSender.dtmf();
dtmfSender.insertDtmf(m_tone, 1000, 500);//Here the timers are in ms
iOS代码
-(void)dtmfTonePlayer: (NSString *)dtmfTone {
RTCRtpSender* m_audioSender = nil ;
for( RTCRtpSender *rtpSender in m_peerConnection.senders){
if([[[rtpSender track] kind] isEqualToString:@“audio”]) {
DLog(@“Assigning audio to rtp sender”);
m_audioSender = rtpSender;
}
}
if(m_audioSender){
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
[queue addOperationWithBlock:^{
BOOL istoneplayed = [m_audioSender.dtmfSender insertDtmf :(NSString *)dtmfTone
duration:(NSTimeInterval)2 interToneGap:(NSTimeInterval)0.5];
NSLog(@“DTMF Tone played :: [%s]“, istoneplayed ? “true” : “false”);
}];
}
}
我正在尝试为基于 WebRTC 的 Android/iOS 应用程序实施 DTMF。 Android的DTMF有没有API?我试过调用以下内容:
m_peerConnectionFactory.createdtmfsender(localAudioTrack);
m_peerConnectionFactory.insertDtmf(tone, duration,gap);
我已经尝试将上面的 api 用于 javascript,它在浏览器上运行良好,但无法在 Android 上运行。 我还没有在 iOS 上试过,因为我需要先在 android 上做到 运行。
请告诉我 Android/iOS 是否支持此功能?如果是的话,有谁能帮我找到正确的 api's
使用的 libjingle 版本:chrome74.0.3729.169
我在 android 和 iOS 上都得到了它。 Api createdtmfsender
已弃用,详情请见here
Android代码:
RtpSender m_audioSender = null;
for (RtpSender sender : m_peerConnection.getSenders()) {
//m_peerConnection is object of webRTC peerconnection
if (sender.track().kind().equals("audio")) {
m_audioSender = sender;
}
}
if (m_audioSender != null) {
DtmfSender dtmfSender = m_audioSender.dtmf();
dtmfSender.insertDtmf(m_tone, 1000, 500);//Here the timers are in ms
iOS代码
-(void)dtmfTonePlayer: (NSString *)dtmfTone {
RTCRtpSender* m_audioSender = nil ;
for( RTCRtpSender *rtpSender in m_peerConnection.senders){
if([[[rtpSender track] kind] isEqualToString:@“audio”]) {
DLog(@“Assigning audio to rtp sender”);
m_audioSender = rtpSender;
}
}
if(m_audioSender){
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
[queue addOperationWithBlock:^{
BOOL istoneplayed = [m_audioSender.dtmfSender insertDtmf :(NSString *)dtmfTone
duration:(NSTimeInterval)2 interToneGap:(NSTimeInterval)0.5];
NSLog(@“DTMF Tone played :: [%s]“, istoneplayed ? “true” : “false”);
}];
}
}