查看完整版本: [-- 编译视频通话linphone的过程求帮助 --]

CocoaChina 开发讨论区 -> iOS开发讨论区 -> 编译视频通话linphone的过程求帮助 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

chendong1011 2012-03-13 14:56

编译视频通话linphone的过程求帮助

编译linphone的完整过程
http://www.linphone.org/eng/download/git.html linphone 源码
方法一:直接在地址栏输入git://git.linphone.org/linphone-iphone.git
方法二:根据自己的需要下载git
    http://git-scm.com/  
安装git 
之后在 终端 命令行下
输入 git clone git://git.linphone.org/linphone-iphone.git --recursive
开始下载 克隆
可能中间会出现 错误 
希望出现这个错误的同胞们 再重新删除 再git吧 多试两次 我是这样的 我又下了次没有出现这种错误
下载之后没有报什么failed 那就恭喜 成功了

打开工程,里面一片红,很多外联文件失去引用,必须重新导入。
到网上找了一些linPhone的lib及扩展类,但还有相当一部分不匹配。
有没有人做过IOS的linPhone相关编译?求赐教。
如speex , libosip2 , libeXosip2 , cairo , atk , gtk2 , ffmpeg 

qqcool 2012-03-13 17:43
speex 的编译需要依赖别的库,比如ogg,libosip2 , 和libeXosip2在网上找找比较好编过,  ffmpeg的也有说的很清楚,没有比较特别的地方,个人感觉研究voip的话,linphone并不是个好的选择,库太多,看不到实现。

chendong1011 2012-03-15 14:09
qqcool 谢谢你的回复与指导!考虑到linPhone引用的第三方库太多,还有很多版本问题,现开始转移方向,使用ffmpeg进行编解码。ffmpeg编译成功,生成了.a静态库,Demo可以运行,对文件解码,获取每一帧图片,并使用定时器播放,可编码存入文件种。但我想实现视频通话功能。现在堵塞在如何用ffmpeg对ios摄像头的帧图像进行编码,转变成那种格式,然后通过网络传输到远程客户端,再进行解码并显示出来。望兄弟能给予进一步的指导!

alby 2012-03-27 13:36
最近在研究g711和语音对讲,不知道参考linphone应该怎么入手

alby 2012-03-27 13:39
你的demo解码是用的什么编码,如果是h264,编码可以用x264这个库

chendong1011 2012-03-27 14:10
linPhone 涉及的库太多 编译都不能通过,我只是成功生成了部分静态库!
视频流的编解码 主流还是H264 尤其是国外,它是高清压缩的
现在我用ffmpeg进行编解码
网上有Demo,叫做iFrameExtractor,是进行文件进行H264解码的。可以参考下!

alby 2012-03-27 14:17
我用ffmpeg是编译通过的,并成功做成了ios应用,可以实现完美h264解码。我关注linphone主要是它语音这块。
另iFrameExtractor这个demo是读取本地文件,我已经实现了实时视频的播放。

chendong1011 2012-03-27 16:10
兄弟,恭喜你实现了实时视频的播放,能分享下你的代码吗?
这些天搞这个搞得焦头烂额,也是最近开始研究ffmpeg的api,他的官方API很少,
主要靠自己摸索。

潇洒哥 2012-03-28 09:32
不知道兄弟你说的实时视频播放时指什么,是从网络获取资源播放么还是指什么?望指点一二

alby 2012-03-28 21:27
核心代码其实就是ffmpeg的,我们的数据都是经过分包处理的,传到app上,已经不需要再用ffpmeg转换成包。直接用avcodec_decode_video2方法就可以解码。

chendong1011 2012-03-29 12:41
实时视频流数据源是你们自己从网络获取还是远程摄像头获取的啊!

cheungching 2012-03-29 13:37
你可以直接获取iphone摄像头的

chendong1011 2012-03-29 13:57
我已经成功拿到摄像头的实时数据(CMSampleBufferRef)sampleBuffer,并按帧播放。
可以转化为NSData类型,直接socket传给mac终端可以转化为Image显示,但数据较大,不稳定,图片闪动厉害,
想使用H264编码压缩,但不知是不是传NSData类型进行编码,转化后还是NSData吗?
看了老外的一个框架就是ffmpeg进行实时流解码的,数据源是NSData,解码后还是NSData。

chendong1011 2012-03-29 14:01
//解码
- (void)decodeFrame:(NSData*)frameData {
    AVPacket packet = {0};
    packet.data = (uint8_t*)[frameData bytes];
    packet.size = [frameData length];
    
    int frameFinished = 0;
    int res = avcodec_decode_video2(codecCtx, srcFrame, &frameFinished, &packet);
    if (res < 0)
    {
        NSLog(@"Failed to decode frame");
    }
    
    // Need to delay initializing the output buffers because we don't know the dimensions until we decode the first frame.
    if (!outputInit) {
        if (codecCtx->width > 0 && codecCtx->height > 0) {
#ifdef _DEBUG
            NSLog(@"Initializing decoder with frame size of: %dx%d", codecCtx->width, codecCtx->height);
#endif
            
            outputBufLen = avpicture_get_size(PIX_FMT_RGBA, codecCtx->width, codecCtx->height);
            outputBuf = av_malloc(outputBufLen);
            
            avpicture_fill((AVPicture*)dstFrame, outputBuf, PIX_FMT_RGBA, codecCtx->width, codecCtx->height);
            
            convertCtx = sws_getContext(codecCtx->width, codecCtx->height, codecCtx->pix_fmt,  codecCtx->width,
                                        codecCtx->height, PIX_FMT_RGBA, SWS_FAST_BILINEAR, NULL, NULL, NULL);
            
            outputInit = YES;
        }
        else {
            NSLog(@"Could not get video output dimensions");
        }
    }
    
    if (frameFinished)
        frameReady = YES;
}

chendong1011 2012-03-29 14:03
//解码后的数据 可以使用UIImage *image = [UIImage imageWithData:data]; 转化为图片显示
- (NSData*)getDecodedFrame {
    if (!frameReady)
        return nil;
    
    sws_scale(convertCtx, (const uint8_t**)srcFrame->data, srcFrame->linesize, 0, codecCtx->height, dstFrame->data, dstFrame->linesize);
    
    return [NSData dataWithBytesNoCopy:outputBuf length:outputBufLen freeWhenDone:NO];
}

我就是小伟哥 2012-06-28 16:00
那位把静态库和头文件找全的,或者告诉我怎么做 现在还是毫无头绪,网上去一个一个的找 谁有找全做好的 给我一份呗,不胜赶集

我是小菜鸟 2012-07-17 14:49
mark 一下  在等待大神来临

xiaochengfei 2012-07-17 15:51
mark~~~~~~~~~

49660861a 2012-08-07 17:57
mark

xdzasy 2012-10-30 11:09
学习一下,貌似很复杂啊!

ximi0311 2013-04-22 00:10
mark下,以后应该能用上

yzdying 2013-08-28 14:17
mark下,这个应该相当不容易实现吧!

秋等不到夏 2014-01-14 10:49
LZ   求一个视频通话的demo

czqasn 2014-01-14 15:50
http://www.h264sdk.com/


查看完整版本: [-- 编译视频通话linphone的过程求帮助 --] [-- top --]



Powered by PHPWind v7.5 SP3 Code ©2003-2010 PHPWind
Time 0.072828 second(s),query:2 Gzip disabled

You can contact us