当前位置: 首页 > news >正文

厦门网站公司WordPress知更鸟lts

厦门网站公司,WordPress知更鸟lts,百度官网入口链接,外贸网站推广方式Linphone3.5.2 ARM RV1109音视频对讲开发记录 说明 这是一份事后记录#xff0c;主要记录的几个核心关键点#xff0c;有可能很多细节没有记上#xff0c;主要是方便后面自己再找回来! 版本 3.5.2 一些原因选的是这样一个旧的版本#xff01; 新的开发最好选新一些的版…Linphone3.5.2 ARM RV1109音视频对讲开发记录 说明 这是一份事后记录主要记录的几个核心关键点有可能很多细节没有记上主要是方便后面自己再找回来! 版本 3.5.2 一些原因选的是这样一个旧的版本 新的开发最好选新一些的版本吧, 像 4.5, 4.2, 3.8 这一类的! 因为之前没有开发过Linphone的应用所以对整个框架不了解一头雾水 上网找了比较多的资料 因为只是事后记录,下面记录一下核心的操作为后面其他需要对接的开发人员指示一下操作的路线吧! 前前后后自己花了接近两周的时间对这个框架大体了解了 所以认为下面的实现是比较合适的方案了!最小的改动了Linphone框架代码把音视频的实现都是放在APP应用中了。 在处理音频的3A算法视频编解码都与Linphone无关也不需要Linphone在编译时来链接应用平台对接的库。 整体应用概述 我的主板是RV1109人脸平板产品做为社区的门口、门栋机需要呼叫室内分机或物业电话机! 在Linphone中有实现音视频的标准的处理但往往在嵌入式平台上处理音视频上又是不标准的!各个厂家的方式 又不标准比如很多嵌入式平台上默认上就不支持ALSA视频也没有走V4L2的框架编解码都有自己的SDK实现 这时就需要自己实现Linphone低层的一些音视频处理设备! 如在这个平台上即是自己实现的音视频处理逻辑! 定义msfilterID 在枚举类中:typedef enum MSFilterId,定义我们自己的音频及视频ID typedef enum MSFilterId......MS_H264Stream_CUS_ID,MS_H264_ENC_CUS_ID,MS_H264_DEC_CUS_ID, } MSFilterId; 编写对应的音视频设备 针对上面定义的 MS_H264Stream_CUS_ID , MS_H264_ENC_CUS_ID, MS_H264_DEC_CUS_ID 这几个filter我们需要对应的加以实现! 用户自定义的filtermediastreamer2里提供了相应的注册函数这一部分代码不需要写到linphone里去所以我们写在我们自己的应用APP中即可 对针音频的: 音频设备上linphone里本身也有ALSA的实现但我们自己使用了ALSA的混音配置有一些差异同时对音频数据在发送前需要做3A处理消回声去噪这些 如果把这部分代码写到linphone中去就比较麻烦.为了方便还是自己在应用中实现对音频的处理同时很多ARM嵌入式主板可能并没有提供ALSA接口的适配 所以很多时候还是自己实现一个MSSndCardDesc简单. 具体声明如下各个方法的实现只要看看mediastreamer2中的ALSA实现简单对照实现即可! MSSndCardDesc alsa_card_desc{.driver_typeALSA,.detectalsa_card_detect,.initalsa_card_init,.set_levelalsa_card_set_level,.get_levelalsa_card_get_level,.set_capturealsa_card_set_source,.set_controlNULL,.get_controlNULL,.create_readeralsa_card_create_reader,.create_writeralsa_card_create_writer,.uninitalsa_card_uninit,.duplicatealsa_card_duplicate,.unload NULL};bool Linphone_AlsaMSFilter::linphone_Alsa_init(){static MSSndCardManager *cm NULL;if(cm){return true;}cm ms_snd_card_manager_get();ms_snd_card_manager_register_desc(cm, alsa_card_desc);return true;}对针视频的: 因为视频是通过硬件的处理的像RV1109海思等方案都是调用硬编解码所以不管是接收到视频流还是发送视频流 linphone只要负责收到或发送H264这样的流并不负责编解码 所以这里需要把mediaStreamer2中的编解码及视频设备源处理一下。分别实现自己的编解码器及视频源设备! 具体的实现就在各个方案上不同的! 基本定义如下! //定议两个并不需要的编解码器这是应为我没有编译FFMPEG进来!MSFilterDesc ms_h264_enc_desc{.idMS_H264_ENC_CUS_ID,.nameMSh264EncCus,.text(A video H264 encoder using ffmpeg library.),.categoryMS_FILTER_ENCODER,.enc_fmtH264,.ninputs0, /*MS_YUV420P is assumed on this input */.noutputs0,.initenc_h264_init,.preprocessenc_preprocess,.processenc_process,.postprocessenc_postprocess,.uninitenc_uninit,.methodsmethods,.flags 0,};MSFilterDesc ms_h264_dec_cus_desc{.idMS_H264_DEC_CUS_ID,.nameMSH264DecCus,.textA H264 decoder based on ffmpeg project.,.categoryMS_FILTER_DECODER,.enc_fmtH264,.ninputs1,.noutputs1,.initdec_init,.preprocessNULL,.processdec_process,.postprocessNULL,.uninitdec_uninit,.methodsh264_dec_methods,.flags0};//在一个合适的地方注册filterms_filter_register(ms_h264_dec_cus_desc);ms_filter_register(ms_h264_enc_desc);//定义真正传输H264视频的FilterMSFilterDesc ms_h264Stream_desc{.idMS_H264Stream_CUS_ID,.nameMSH264StreamReadCus,.textMs H264 Stream read source Cus,.categoryMS_FILTER_OTHER,.enc_fmt NULL,.ninputs0,.noutputs1,.inith264Stream_read_init,.preprocessh264Stream_read_preprocess,.processh264Stream_read_process,.postprocessh264Stream_read_postprocess,.uninith264Stream_read_uninit,.methodsh264Stream_read_methods,.flags0};//初始化注册filterbool Linphone_h264msfilter::Linphone_h264msfilter_init(){static MSWebCamManager* pMSWebCamManager ms_web_cam_manager_get();if(!pMSWebCamManager){return true;}ms_web_cam_manager_register_desc(pMSWebCamManager, ms_h264Stream_card_desc);return true;} 几个关健点的修改 视频处理的一个基本流: linphone_core_update_streams-linphone_call_start_media_streams-linphone_call_start_video_stream-video_stream_start linphone_call_start_video_stream 这个过程中有对视频源对像的更新(vstream) 创建VIDEO对应的filter及前后关系设置 videostream.c:video_stream_start ms_filter_link 设备的的摄像头数据是已经经过编码成H264的数据了修改 video_stream_start 中的ms_filter_link配置从数据源直接指向RTP if(stream-source-desc-id MS_H264Stream_CUS_ID){ms_filter_link (stream-source, 0, stream-rtpsend, 0); }else{ms_filter_link (stream-source, 0, stream-pixconv, 0);ms_filter_link (stream-pixconv, 0, stream-sizeconv, 0);ms_filter_link (stream-sizeconv, 0, stream-tee, 0);ms_filter_link (stream-tee, 0 ,stream-encoder, 0 );ms_filter_link (stream-encoder,0, stream-rtpsend,0);if (stream-output2){if (stream-preview_window_id!0){ms_filter_call_method(stream-output2, MS_VIDEO_DISPLAY_SET_NATIVE_WINDOW_ID,stream-preview_window_id);}ms_filter_link(stream-tee,1,stream-output2,0);}}在这个文件中有好几处都需要对应的修改 ms_filter_link 关系这里不一一列出了都是在这个文件里了! 几个同音视频相关配置接口 同音视频相关的的几个接口需要注意一下因为在设置这几个参数后会影响到音视频设备的开启关闭 linphone_core_enable_video 视频接口配置配置是否有摄像头及是否显示视频通过这个配置后会设置video_conf的capture和display标识 linphone_call_enable_camera 设置是否开启摄像头 linphone_call_params_enable_early_media_sending 设置接听前是否有音视频发送
http://www.hkea.cn/news/14417118/

相关文章:

  • 如何将自己做的网站变成中文wordpress多媒体上传
  • o2o网站建设方案自己做的网站可以百度推广吗
  • 如何用域名进网站建站需要什么软件
  • 长沙网站seo技术网站备案免费吗
  • 网站后台上传内容前台首页不显示大型网站开发的书
  • 提交网站到谷歌西安建设银行网站
  • 什么网站收录快辽阳市城市建设档案馆网站
  • 北京网站制作报价h5网站建设公司
  • thinkphp网站优化网站建站步骤
  • 酒托做哪个网站好医疗类网站备案
  • 无锡网站建设工作幽默广告软文案例
  • 揭阳做网站建设网站对于客户
  • 太原建网站百度指数在线查询小程序
  • 网站域名备案需要什么网站推广的四个阶段是指
  • 做设备租赁的网站黄页88网官网
  • 网站开发公司介绍四字母net做网站怎么样
  • 上海杨浦区建设网站专业单位网站设计企业
  • 成都h5建站wordpress ios使用
  • 做一个营销型网站有哪些内容沈阳博士男科正规吗
  • 网上有兼职做数据网站网站里的副栏目是什么
  • 做网站是什么seo sem是什么
  • 什么网站能赚钱营销策划方案范文
  • 做外贸开通哪个网站好微信营销教程
  • 建设银行网银盾官方网站下载如何建网站模板
  • 企业网站建设策划书方案范文钓鱼网站链接
  • 南昌专门做网站百度网盟推广费用是多少
  • 安徽网站建设seo优化dw网页制作素材免费
  • 网站登录不上怎么回事当当网网站建设需求分析
  • 黄冈手机网站建设专业做网站较好的公司广州
  • 网站制作长春今天重大新闻头条新闻国际新闻