欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    音视频相关系统的开发指南.doc

    • 资源ID:66769641       资源大小:35KB        全文页数:12页
    • 资源格式: DOC        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    音视频相关系统的开发指南.doc

           音视频即时通讯是目前最为时尚、流行的通讯方式。可以实现一对一、一对多、多对多的通讯。而各种各样的即时通讯软件也层出不穷;服务提供商越来越丰富的通讯服务功能。随着社会的发展与网络技术的进步,音视频即时通讯的运用日益广泛。 如今市场竞争越来越激烈,如何在有限的时间内完成项目,满足客户的需求成为企业决策者所需要面对的现实。音视频技术以全新领域凸显了网络信息时代的飞跃发展。近年来,音视频即时通讯的应用,如聊天室,网络教育,应急指挥,远程医疗,数字电视等不断创新的成就更是全球关注的焦点。从实际情况来看,音视频互动平台主要是音视频的即时通讯。结合现阶段实际事实证明,具备的多样性特点如下: · 平衡的实用性和经济性:面向应用、注重实效,坚持需求牵引合理使用资金。 · 平衡的先进性和成熟性:既要采用先进的技术以保证系统运行的高效率、高性能,同时又要注重技术的成熟性,使用尽可能成熟的软、硬件产品。 · 开放性与标准化原则:遵循统一的工业标准和数据接口,建设开放、标准的系统。 · 可靠性与稳定性:确保系统运行的可靠性和稳定性,确保无故障运行。 · 可扩展性及可维护性:为适应系统变化、升级的要求,应充分考虑实现系统的灵活扩展升级和有效维护,无需音视频专业技术人员即能够进行操作和管理。 · 安全性和保密性:要高度重视网站信息的安全性和保密性,系统应分别针对不同的应用和不同的网络通信环境,采取不同措施,包括系统安全机制、权限控制等。 · 良好的兼容性:通过提供的可扩展API接口,就可以实现自主定制业务逻辑.。为了让大家更好的开发自己所需要的与音视频即时通讯相关的系统,如视频会议系统、语音视频聊天系统、远程教育平台以及即时通讯平台(IM)等。我向大家介绍介绍如何利用这个SDK来去开发,大家可以理解成为开发指南吧首先下载这个SDK,已经上传到了CSDN的网站上面去,大家放心使用。(windows平台音视频即时通讯应用开发包)支持Windows平台音频即时通讯应用开发支持C+、C#、Java、Delphi、VB.Net、Qt等开发语言集成H.264、AAC、AMR等编解码技术封装音视频的采集、编解码、传输、显示和播放等模块提供客户端SDK和服务器SDK API接口下面是使用指南:一、初始化该部分是首先要完成的,用于设置SDK的一些行为,包括设置对应的回调函数、设置SDK组件路径、设置是否产生日志文件等,通常初始化AnyChat SDK的代码如下(C+):  1. 01./ 打开(关闭)SDK的日志记录功能 2. 02.BRAC_ActiveCallLog(TRUE); 3. 03.      4. 04./ 设置SDK核心组件所在目录 5. 05.CHAR szCoreSDKPathMAX_PATH = 0; 6. 06.GetModuleFileName(NULL,szCoreSDKPath,sizeof(szCoreSDKPath); 7. 07.(strrchr(szCoreSDKPath,'')1 = 0; 8. 08.BRAC_SetSDKOption(BRAC_SO_CORESDK_PATH,szCoreSDKPath,strlen(szCoreSDKPath); 9. 09.      10. 10./ 根据BRAC_InitSDK的第二个参数:dwFuncMode,来告诉SDK该如何处理相关的任务(详情请参考开发文档) 11. 11.DWORD dwFuncMode = BRAC_FUNC_VIDEO_CBDATA | BRAC_FUNC_AUDIO_AUTOPLAY | BRAC_FUNC_CHKDEPENDMODULE | BRAC_FUNC_AUDIO_VOLUMECALC | BRAC_FUNC_NET_SUPPORTUPNP | BRAC_FUNC_FIREWALL_OPEN | 12. 12.BRAC_FUNC_AUDIO_AUTOVOLUME | BRAC_FUNC_CONFIG_LOCALINI; 13. 13.BRAC_InitSDK(this->GetSafeHwnd()/*NULL*/,dwFuncMode); 14. 14.      15. 15./ 设置录像临时文件保存路径 16. 16.CHAR szRecordDirectoryMAX_PATH = 0; 17. 17.:GetModuleFileName(NULL,szRecordDirectory,MAX_PATH); 18. 18.(strrchr(szRecordDirectory,'')1 = 0; 19. 19.strcat(szRecordDirectory,"Record"); 20. 20.BRAC_SetSDKOption(BRAC_SO_RECORD_TMPDIR,szRecordDirectory,strlen(szRecordDirectory); 21. 21.  22. 22./ 设置录像文件质量参数 23. 23.DWORD dwVideoBitrate = 200 * 1000;  / 200kbps 24. 24.BRAC_SetSDKOption(BRAC_SO_RECORD_VIDEOBR,(PCHAR)&dwVideoBitrate,sizeof(DWORD); 25. 25.DWORD dwAudioBitrate = 96 * 1000;   / 96kbps 26. 26.BRAC_SetSDKOption(BRAC_SO_RECORD_AUDIOBR,(PCHAR)&dwAudioBitrate,sizeof(DWORD); 27. 27.      28. 28./ 设置快照临时文件保存路径 29. 29.CHAR szSnapShotDirectoryMAX_PATH = 0; 30. 30.:GetModuleFileName(NULL,szSnapShotDirectory,MAX_PATH); 31. 31.(strrchr(szSnapShotDirectory,'')1 = 0; 32. 32.strcat(szSnapShotDirectory,"SnapShot"); 33. 33.BRAC_SetSDKOption(BRAC_SO_SNAPSHOT_TMPDIR,szSnapShotDirectory,strlen(szSnapShotDirectory); 34. 34.      35. 35./ 设置SDK临时文件路径 36. 36.CHAR szTempPathMAX_PATH = 0; 37. 37.:GetModuleFileName(NULL,szTempPath,MAX_PATH); 38. 38.(strrchr(szTempPath,'')1 = 0; 39. 39.strcat(szTempPath,"Temp"); 40. 40.BRAC_SetSDKOption(BRAC_SO_CORESDK_TMPDIR,szTempPath,strlen(szTempPath); 41. 41.  42. 42./ 启用音频自动参数功能(默认关闭) 43. 43.DWORD bAudioAutoParam = TRUE; 44. 44.BRAC_SetSDKOption(BRAC_SO_AUDIO_AUTOPARAM,(PCHAR)&bAudioAutoParam,sizeof(DWORD);  二、登录系统当第一步初始化完成之后,便可以连接服务器、验证用户身份。通常调用代码如下(C+): 1. 1./ 连接服务器 2. 2.BRAC_Connect("211.155.25.90",8906); 3. 3./ 登录系统 4. 4.BRAC_Login("testuser","",0); 连接服务器与登录系统都是一个异步的过程,调用后会立即返回,其中:a、连接服务器成功,或是失败,将会触发异步消息b、登录系统成功,或是失败,将会触发异步消息所以应用程序需要响应这些异步消息才能知道连接服务器、登录系统是否成功。 登录系统成功后,如果需要实现即时通讯应用中的好友列表(AnyChat默认没有实现),则需要利用AnyChat的扩展API接口与Server SDK来配合实现,具体实现方案可参考SDK包中的:docserver目录下的AnyChat Server SDK 开发指南第6章节。 登录系统成功后,服务器会返回一个32位的用户ID,如果登录时没有传入密码参数,则系统会认为是游客登录,并分配一个独立的用户ID(如-1、-2等),如果登录时传入了密码参数,则登录请求将会交给“SDK Filter Plus”接口,或“Server SDK”对应的接口,用户可开发一个自己的服务器插件“SDK Filter Plus”,或是调用“Server SDK”所对应的API来处理用户身份验证的请求,完成对用户ID的管理,实现与第三方系统的互联互通,详细内容可参考SDK包中的:docserver目录下的相关文档。 三、进入房间在第二步登录系统成功之后,就可以进入房间,因为只有在房间中,才能完成语音和视频的交互。通常调用代码如下(C+): 1. 1./ 进入房间 2. 2.BRAC_EnterRoom(1,"",0); 房间由服务器动态管理,由32位的房间ID号来唯一标示,当客户端指定的房间ID号不存在时,服务器将会自动创建。进入房间也是一个异步的过程,是否成功将会触发异步消息,进入房间成功后,服务器会把当前房间的在线用户列表传给客户端,传输完成后,将会触发异步消息(该消息只触发一次),只有收到服务器的在线用户列表后,才能对房间内的用户进行音视频的相关操作。 当自己进入房间成功,且收到服务器的在线用户消息后,有新的用户进入房间,或是老用户离开房间,将会触发异步消息,这样自己便知道谁进入,或是离开了房间。 1、打开自己的音视频进入房间成功之后,便可以打开自己的音视频设备,通常调用代码如下(C+): 1. 1./ 打开自己的视频设备 2. 2.BRAC_UserCameraControl(-1,TRUE); 3. 3./ 打开自己的音频设备 4. 4.BRAC_UserSpeakControl(-1,TRUE); 打开自己的设备后,并不会立即上传音视频流,只有当其它用户请求自己的音视频数据时(可单独请求音频流,或视频流)才对外传输,打开自己的音视频设备,默认是按服务器的配置信息来初始化设备(如采样分辨率、视频帧率、音频的采样频率等) 2、请求其它用户的音视频如果需要显示其它用户的音视频,则必须在收到房间用户列表消息后,请求对方的音视频流,然后对方才将音视频流传输过来,通常请求其它用户的音视频数据调用代码如下(C+): 1. 1./ 请求对方的视频流 2. 2.BRAC_UserCameraControl(dwUserId,TRUE); 3. 3./ 请求对方的音频流 4. 4.BRAC_UserSpeakControl(dwUserId,TRUE); 数据传输优先P2P方式,只有当P2P不通时,才由服务器转发,P2P的NAT打洞过程,以及数据流传输策略均由服务器控制,只要有请求,而且对方已打开了自己的音视频设备,则就能收到对方的音视频流数据。 3、音视频的播放与显示当收到其它用户的音频数据后:a)如果在初始化时设置了“BRAC_FUNC_AUDIO_AUTOPLAY”标志,则SDK内部将会自动播放,自动混音;b)如果在初始化时设置了“BRAC_FUNC_AUDIO_CBDATA”标志,则SDK会将解码后的音频数据(PCM格式)通过回调函数回调给上层应用。 当收到其它用户的视频数据后:a)如果在初始化时设置了“BRAC_FUNC_VIDEO_AUTODISP”标志,并且调用了API,则SDK内部将会把视频显示到指定的窗体的指定位置(在指定位置上自动迭加一个视频窗口);b)如果在初始化时设置了“BRAC_FUNC_VIDEO_CBDATA”标志,则SDK会将解码后的视频数据(RGB、YUV)通过回调函数回调给上层应用,由上层应用自己来绘制,或渲染,该模式适合于DirectX、HGE等没有窗口模式下的应用程序,或是上层应用需要对视频进行特殊处理的场合,如迭加文字、logo等。 4、文字交互成功进入房间后, 便可以调用API接口向指定用户,或是房间中的所有用户发送文字消息: 1. 1./ 发送文字消息 2. 2.CString strInput = "hello world" 3. 3.BRAC_SendTextMessage(-1,FALSE,strInput.GetBuffer(0),strInput.GetLength(); 其它用户收到自己发送的文字消息后,便会触发回调函数,通过处理回调消息,然后将收到的文字消息显示在界面上,便可实现文字的交互。 5、业务逻辑处理 AnyChat SDK内置的基本逻辑是:当自己的音视频设备打开后,别的用户有请求,便会将流媒体数据传输给对方,而没有任何何业务逻辑。a)如要实现视频会议系统,则用户进入房间后,就需要知道谁是主持人,然后打开主持人的视频;b)如要实现视频聊天系统,则用户进入房间后,就需要知道当前房间有几个公麦,谁在公麦上,然后打开对应公麦用户的视频等;c)这些业务逻辑需要与服务器端的“SDK Filter Plus”或“AnyChat Server SDK”互相配合来实现,具体的实现方案可参考SDK包中的:docserver目录下的AnyChat Server SDK 开发指南第6章节。 四、释放资源与前面连接服务器、登录系统、进入房间对应的,退出系统的过程是:离开房间、注销系统、释放资源,通常调用代码如下(C+): 1. 1./ 离开房间 2. 2.BRAC_LeaveRoom(-1); 3. 3./ 注销系统(将关闭网络连接) 4. 4.BRAC_Logout(); 5. 5./ 释放资源 6. 6.BRAC_Release(); 离开房间后,可以进入新的房间,系统注销之后,可以再次调用连接服务器的API接口,但是释放资源后,SDK将不再工作。

    注意事项

    本文(音视频相关系统的开发指南.doc)为本站会员(飞****2)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开