Linux平台音视频开发
来源:互联网 发布:apache 转发 数据大小 编辑:程序博客网 时间:2024/06/07 13:34
由于使用习惯,Linux在中国受欢迎程度远不如windows,相应的软件也比较少,尤其是音视频类的软件,但是,这并不代表就完全没有。下面介绍一款强大的音视频即时通讯平台给大家,它就是——Anychat for Linux SDK。
AnyChat是一套跨平台的音、视频即时通讯解决方案,基于先进的H.264视频编码标准、AAC音频编码标准与P2P技术,支持Windows、Linux、Mobile、Android、iOS、Mac等操作系统平台,提供客户端SDK、服务器端SDK,可与第三方平台紧密集成。
AnyChat for Linux基于LinuxKernel 2.6.x研发,提供标准C、C++语言开发接口。
AnyChat for Linux可与其它平台的AnyChat互联互通,连接同一个服务器程序,有关服务器的SDK可参考 Linux平台设备上的音频即时通讯应用开发开发包。开发包已经上传到csdn,大家可以放心下载
开发包的特点介绍
支持Linux平台设备上的音频即时通讯应用开发
提供C++语言API接口,开放示例源代码
集成H.264、AAC、AMR等编解码技术
封装音视频的采集、编解码、传输、显示和播放等模块
支持Android、Web、PC、iOS等设备和Linux之间的互联互通
下面是客户端部分代码:
#include "anychat.h"#include <stdlib.h>#include <stdio.h> CAnyChat::CAnyChat(){ m_dwRemoteUserId = -1;} CAnyChat::~CAnyChat(){ } //void CAnyChat::OpenRemoteUserStream(void){ if(m_dwRemoteUserId !=(DWORD)-1) // already opned remoteuser stream return; DWORD dwUserNum = 0; BRAC_GetOnlineUser(NULL,dwUserNum); if(dwUserNum == 0) return; LPDWORD lpUserList = (LPDWORD)malloc(sizeof(DWORD)* dwUserNum); if(!lpUserList) return; BRAC_GetOnlineUser(lpUserList,dwUserNum); for(int i=0;i<(int)dwUserNum; i++) { m_dwRemoteUserId =lpUserList[i]; BRAC_UserCameraControl(m_dwRemoteUserId, TRUE); BRAC_UserSpeakControl(m_dwRemoteUserId, TRUE); break; }} // 连接服务器消息void CAnyChat::OnAnyChatConnectMessage(BOOL bSuccess){ fprintf(stdout,"On Connect:bSuccess(%d)\r\n",(int)bSuccess);}// 用户登陆消息void CAnyChat::OnAnyChatLoginMessage(DWORD dwUserId, DWORD dwErrorCode){ fprintf(stdout,"On Login:dwUserId(%d), ErrorCode:%d\r\n",(int)dwUserId,dwErrorCode);}// 用户进入房间消息void CAnyChat::OnAnyChatEnterRoomMessage(DWORD dwRoomId, DWORDdwErrorCode){ fprintf(stdout,"On EnterRoom(dwRoomId=%d,dwErrorCode=%d)\r\n",dwRoomId,dwErrorCode); if(dwErrorCode == 0) { BRAC_UserCameraControl(-1,TRUE); BRAC_UserSpeakControl(-1,TRUE); }}// 房间在线用户消息void CAnyChat::OnAnyChatOnlineUserMessage(DWORD dwUserNum, DWORD dwRoomId){ fprintf(stdout,"Onlineuser(dwUserNum=%d,dwRoomId=%d)\r\n",dwUserNum,dwRoomId); OpenRemoteUserStream();}// 用户打开/关闭音频设备设备消息void CAnyChat::OnAnyChatMicStateChgMessage(DWORD dwUserId, BOOL bOpenMic){ }// 用户进入/退出房间消息void CAnyChat::OnAnyChatUserAtRoomMessage(DWORD dwUserId, BOOL bEnter){ fprintf(stdout,"OnUserAtRoom(dwUserId=%d, bEnter=%d)\r\n",(int)dwUserId,(int)bEnter); if(dwUserId == m_dwRemoteUserId&& !bEnter) m_dwRemoteUserId = -1; OpenRemoteUserStream();}//网络断开消息void CAnyChat::OnAnyChatLinkCloseMessage(DWORD dwErrorCode){ fprintf(stdout,"On LinkClose(reason=%d)\r\n",dwErrorCode); m_dwRemoteUserId = -1;} // 用户摄像头状态改变消息void CAnyChat::OnAnyChatCameraStateChgMessage(DWORD dwUserId, DWORDdwState){ }// 用户聊天模式改变消息void CAnyChat::OnAnyChatChatModeChgMessage(DWORD dwUserId, BOOLbPublicChat){ }// 用户活动状态发生变化消息void CAnyChat::OnAnyChatActiveStateChgMessage(DWORD dwUserId, DWORDdwState){ }// P2P连接状态变化消息void CAnyChat::OnAnyChatP2PConnectStateMessage(DWORD dwUserId, DWORDdwState){ fprintf(stdout,"On P2PConnect State Change(dwUserId=%d, dwState=%d)\r\n",(int)dwUserId,dwState);} // 用户私聊请求消息void CAnyChat::OnAnyChatPrivateRequestMessage(DWORD dwUserId, DWORDdwRequestId){ }// 用户私聊请求回复消息void CAnyChat::OnAnyChatPrivateEchoMessage(DWORD dwUserId, DWORDdwErrorCode){ }// 用户退出私聊消息void CAnyChat::OnAnyChatPrivateExitMessage(DWORD dwUserId, DWORDdwErrorCode){ } // SDK警告消息void CAnyChat::OnAnyChatSDKWarningMessage(DWORD dwErrorCode, DWORDdwReserved){ } // 视频数据回调void CAnyChat::OnAnyChatVideoDataCallBack(DWORD dwUserid, LPVOID lpBuf,DWORD dwLen, LPBITMAPINFOHEADER lpbmiHeader){ }// 音频数据回调void CAnyChat::OnAnyChatAudioDataCallBack(DWORD dwUserid, LPVOID lpBuf,DWORD dwLen, LPWAVEFORMATEX lpWaveFormatEx){ }// 发送文字的回调函数void CAnyChat::OnAnyChatTextMsgCallBack(DWORD dwFromUserid, DWORDdwToUserid, BOOL bSecret, LPCTSTR lpMsgBuf, DWORD dwLen){ }// 透明通道回调函数void CAnyChat::OnAnyChatTransBufferCallBack(DWORD dwUserid, LPBYTE lpBuf,DWORD dwLen){ }// 透明通道数据扩展回调函数void CAnyChat::OnAnyChatTransBufferExCallBack(DWORD dwUserid, LPBYTElpBuf, DWORD dwLen, DWORD wParam, DWORD lParam, DWORD dwTaskId){ }// 文件传输回调函数void CAnyChat::OnAnyChatTransFileCallBack(DWORD dwUserid, LPCTSTRlpFileName, LPCTSTR lpTempFilePath, DWORD dwFileLength, DWORD wParam, DWORDlParam, DWORD dwTaskId){ }// 音量变化回调函数void CAnyChat::OnAnyChatVolumeChangeCallBack(BRAC_AudioDevice device,DWORD dwCurrentVolume){ }// SDK Filter 通信数据回调函数void CAnyChat::OnAnyChatSDKFilterDataCallBack(LPBYTE lpBuf, DWORD dwLen){ }// 录像、快照任务完成回调函数void CAnyChat::OnAnyChatRecordSnapShotCallBack(DWORD dwUserid, LPCTSTRlpFileName, DWORD dwParam, BOOL bRecordType){ }// 异步消息通知回调函数void CAnyChat::OnAnyChatNotifyMessageCallBack(DWORD dwNotifyMsg, DWORDwParam, DWORD lParam){ }
- Linux平台音视频开发
- 音视频互动开发平台for Linux
- windows-linux 平台音视频开发完成(2004-2005)
- Linux平台设备上的音视频即时通讯应用开发
- 音视频开发平台 视频录制技术
- 音视频即时通讯开发平台
- 即时通讯开发平台音视频SDK
- 音视频互动开发平台的介绍
- 音视频互动开发平台(SDK)
- 全功能音视频互动开发平台
- 谈谈Android平台开发3G音视频平台
- 安卓平台的音视频互动开发平台
- 音视频即时通讯开发平台的开发现状
- 音视频即时通讯互动开发平台的开发指南
- 音视频开发平台所支持的开发语言
- 音视频开发平台开发录像功能接口
- 3G手机视频开发平台
- AnyChat音视频互动开发平台(SDK)
- 【OpenCV】数字图像灰度直方图
- Python动态类型
- HashMap用法
- 古堡算式 福尔摩斯到某古堡探险,看到门上写着一个奇怪的算式: ABCDE * ? = EDCBA
- GridView使用心得
- Linux平台音视频开发
- C# List<T>用法
- 用户研究:用户身上的七宗“罪”
- Using Oracle Blocks Efficiently
- 空类的大小
- 图形裁剪技术
- Codeforces Beta Round #67 (Div. 2)——A,B,C
- TCP漏洞:半连接
- C/C++ 获得键盘按键代码