刚接手新的项目,其中有个需求是用soket编程实现类似qq 微信的udp通信,发送语音和实时聊天,老大要求不用xmpp,webrtc等这些成熟的第三方框架,要我自己用socket udp实现,我现在调通了同一个局域网里两台设备可以发送文字聊天,也重新写了工程获得了语音文件。。可是在网络传输这一块卡了好几天了,谷歌了好多资料还是没有很好的方向,烦请各位大神给点思路,两个用户间如何用udp将语音,视频文件分别传输。菜鸟刚上路遇到各种难题,各位过来人还请赐教,不甚感激!!!好心人永远幸福 快乐。
 -(IBAction)sendMessage_Click:(id)sender
{
    //   传输语音文件(首先测试传输.mp3文件) (注释的是我加的测试传语音文件的)
//    NSURL *url = [NSURL fileURLWithPath:@"/Users/zuoling/Desktop/test.mp3"];
//    NSData *data = [NSData dataWithContentsOfURL:url];
//    NSString *messageStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
//    NSString *str = [[NSString alloc] initWithContentsOfFile:@"/Users/zuoling/Desktop/test.mp3" encoding:NSUTF8StringEncoding error:nil];
NSString *messageStr = self.messageTextField.text;
[self sendMassage:messageStr];
self.messageTextField.text = @"";
[_messageTextField resignFirstResponder];
    [self moveViewDown];}

解决方案 »

  1.   

    你可以用 asyncSocket + protobuf 实现。
      

  2.   

    同样在搞这个,问过一个大神,推荐我用webrtc,但是目前学生有时间,实现功能倒是其次,主要想学点东西,所以看看有没有人可以给个思路?
      

  3.   

    webrtc学会了就已经是牛人了
    自己实现的话,socket传输二进制数据,数据加头来分析数据,比如头四个字节表示数据长度,后面跟数据类型(图片,文字,视频),再接着是数据内容的,分析完成后,对数据处理
      

  4.   

    语音视频建议都用rtp协议封装传输
      

  5.   

    webrtc学会了就已经是牛人了
    这句话我看了有点自我膨胀…………我给webrtc安卓里面的apm加了个快速自适配这又算啥…………666…………虽说当时搞的真tm艰难………………亲,如果你要写实时音频对讲,那么用音频文件十有八九是不行的亲。
    我当时是用Audio Unit加上音频的编解码做,貌似唯有Audio Unit才能使用ios自带的回声消除,如果不用回声消除,两边都没有的话免提通话就会出现啸叫。
    至于网络传输,用ring buffer数据结构缓冲数据就行了,用文件作甚?这也新手的可以啊………………