H323plus的学习使用(2)——simple实现音视频通话

但该文章的解释大多不够详细,而且使用的版本不同,编译安装的环境也不同,导致了文章中所说的解决方法并不能够十分完美地解决,本人在按照该文章所说的方法,完成了simple音视频的加载同通信,故此记录一下解决的历程同思路。

首先是关于音频驱动的问题,在此先介绍一下ptlib关于音视频的结构先

原始的音频通道是在ptlib中定义的,但这仅仅是一个抽象的音频通道而已,实际上的音频驱动设备的调用是在ptlib中插件plugin中定义使用的,而插件的加载是通过程序运行时的动态库加载的,这涉及到的问题有几个,首先是配置时,需要具有对应音频驱动的支持,其次是对应驱动动态库要在对应路径下(配置安装时会 默认安装到指定目录)

首先安装必要的支持,对于linux系统,存在俩种选择,alsa和pulse俩种

源码地址:alsa和pulse

命令行安装:记不太清楚了其实,因为在安装libsdl1.2-dev的时候,就会默认帮忙安装了的

接下去是关于视频驱动的问题了,视频驱动需要的开源库就比较多了些,首先对于视频读取的支持,需要v4l2,虽然默认编译一般都会产生这个动态库(明明配置信息显示没有支持的头文件的),就很神奇了,保险起见,还是安装吧

sudo apt-get install libv4l-dev

接下去是关于视频的输出问题,由于是使用显示器,最简单的输出是使用sdl输出,所以ptlib需要sdl支持,而且版本是1.2,不是2.0

sudo apt-get install libsdl1.2-dev

现在解决完音视频驱动的问题了,重新编译安装ptlib就可以了

但关于h323plus还存在音视频编解码器加载的问题,音频默认存在g711能力集功能,而h323plus在配置时,虽然视频存在H.261功能,但运行simple时,并没有加载出来,这是由于h323plus的编解码器同ptlib的插件类似,都是使用动态库加载实现的,所以需要进入h323plus插件目录,将h.261编译出来,并复制到对应的动态库加载目录

  1. lewei@ubuntu:~/h323plus/plugins/video/H.261-vic$ make

  2. make: 'h261-vic_video_pwplugin.so' is up to date.

  3. lewei@ubuntu:~/h323plus/plugins/video/H.261-vic$ cp h261-vic_video_pwplugin.so ~/ptlib/lib_linux_x86_64/device/videoinput/

接下去就算完全初步解决音视频的编解码以及驱动问题了

改写simple,根据 linux下h323plus简单使用,实际上原来的代码貌似我也还没尝试过

接下去便是运行了,理想情况下,以下命令行应该能够完美执行音视频通信功能的(实际上就是你想太多了)】

simple简单使用的作者也完全没有对音频的进行清楚的讲解,接下去就是个人对于音频设备加载的理解了

  1. 服务端: $./simph323 -n -l -v V4L2 -s Default

  2. 客户端: $./simph323 -n 服务端IP地址 -v V4L2 -s Default

在simple的代码中的373-380时对于声音设备的设置,如果不存在-s等声音的设置,就默认设备,也就是跟上一条设置一样使用default,但问题便在于默认的default设置又是安装设备排序,而不是说什么能用的,默认最前的可能是Null Audio,所以你的声音设置不能够使用,所以最好的方法是使用--sound-in和--sound-out设置清楚声音设备

  1. if (!SetSoundDevice(args, "sound", PSoundChannel::Recorder))

  2. return FALSE;

  3. if (!SetSoundDevice(args, "sound", PSoundChannel::Player))

  4. return FALSE;

  5. if (!SetSoundDevice(args, "sound-in", PSoundChannel::Recorder))

  6. return FALSE;

  7. if (!SetSoundDevice(args, "sound-out", PSoundChannel::Player))

  8. return FALSE;

如果不知道存在什么声音设备可用的话,可以直接使用--sound-in或者--sound-out程序运行便会报错,并提示你可用的声音设备存在什么选择

  1. @ubuntu:~/h323plus/samples/simple/obj_linux_x86_64$ ./simph323 -n -l --sound-in

  2. simple Version 1.27.0 by H323Plus on Unix Linux (4.15.0-30-generic-x86_64)

  3. 2018/08/14 19:59:49.278 0 (0) Version 1.27.0 by H323Plus on Unix Linux (4.15.0-30-generic-x86_64) with PTLib (v2.10.9 (svn:0)) at 2018/8/14 19:59:49.278

  4. Device for sound-in ("") must be one of:

  5. "Null Audio"

  6. "Default"

  7. "PulseAudio"

  8. "alsa_input.pci-0000_02_02.0.analog-stereo"

  9. "*.wav"

  10. "Ensoniq AudioPCI"

  11. le@ubuntu:~/h323plus/samples/simple/obj_linux_x86_64$ ./simph323 -n -l --sound-out

  12. simple Version 1.27.0 by H323Plus on Unix Linux (4.15.0-30-generic-x86_64)

  13. 2018/08/14 19:59:58.888 0 (0) Version 1.27.0 by H323Plus on Unix Linux (4.15.0-30-generic-x86_64) with PTLib (v2.10.9 (svn:0)) at 2018/8/14 19:59:58.888

  14. Device for sound-out ("") must be one of:

  15. "alsa_output.pci-0000_02_02.0.analog-stereo"

  16. "Null Audio"

  17. "Default"

  18. "PulseAudio"

  19. "*.wav"

  20. "Ensoniq AudioPCI"

  21. "Ensoniq AudioPCI (1)"

接下去就是按照可用的声音设备设置即可

  1. 客户端: ./simph323 -n 服务端IP地址 --sound-in "alsa_input.pci-0000_02_02.0.analog-stereo" --sound-out "alsa_output.pci-0000_02_02.0.analog-stereo" -v V4L2

  2. 服务端: ./simph323 -n -l --sound-in "alsa_input.pci-0000_02_02.0.analog-stereo" --sound-out "alsa_output.pci-0000_02_02.0.analog-stereo" -v V4L2

可能存在的问题是摄像头的开启问题,首先如果是vm下的虚拟机ubuntu,在设备那里连接对应的usb摄像头,其次是对于摄像头使用的问题,可以在虚拟机运行cheese,查看摄像头是否可用,如果显示没有可用设备,那么便是摄像头没有加载上,如果存在黑屏,那么便是摄像头的USB接口版本不对,将2.0改为3.0,或者3.0改为2.0即可

H323plus的学习使用(2)——simple实现音视频通话相关推荐

  1. H323plus的学习使用(3)——加载H.264插件

    H323plus的学习使用(3)--加载H.264插件 在h323plus的学习中,总是调试simple以尝试h323plus的能力集,在simple视频聊天中提到了一个关于ptlib插件的环境变量的 ...

  2. 开源项目学习系列--02.天天酷音TTKMusicplayer

    开源项目学习系列--02.天天酷音TTKMusicplayer 1 简介 2 代码地址 3 基础知识 4 思路 5 代码分析 5.1 编译 5.2 参考 1 简介 天天酷音播放器,核心功能是采用基于 ...

  3. WebRTC:P2P音视频通话基础概述

    前言 本篇文章参考WebRTC基础知识详解_签约计划_IT酷盖_InfoQ写作社区,介绍了P2P音视频通信的场景下的一些基础知识,包括WebRTC的基本架构.协议栈,一对一通话基础,和一对一通话原理三 ...

  4. 云信小课堂|如何实现音视频通话

    大家好,欢迎大家来到「云信小课堂 」. 本栏目致力于解答有关IM和音视频的一切问题,产品特点.使用场景.技术名词.接入指南.功能实现......欢迎大家留言提问,我们每节课会选取大家感兴趣的问题进行解 ...

  5. android 微信缩小通话界面_Android仿微信多人音视频通话界面

    工作中需要实现一个类似微信多人视频通话功能的界面,分别使用自定义viewgroup和自定义layoutmanager的方式进行了实现.最终工作中采用了layoutmanager,因为可以使用paylo ...

  6. 讨论 | AR 远程协同和传统音视频通话有什么区别?

    1月19日,"AR在远程协作中的应用场景与行业案例"--ALVA Systems 2022 在线研讨会圆满结束. 直播间的用户朋友们踊跃互动提问,会后也有不少人试用了 ALVA R ...

  7. C++/Qt音视频通话开发MetaRTC源码解读,dtls交互流程,dtls抓包分析

    目录 dtls抓包分析 dtls流程,主叫发送Client Hello dtls流程,Application Data dtls流程,Encrypted Alert 本章内容解读MetaRTC开源代码 ...

  8. 如何在uni-app 平台快速实现一对一音视频通话应用

    "一套代码,多端运行"是很多开发团队的梦想.ZEGO SDK基于uni-app跨平台框架支持iOS.Android.Windows.macOS.HarmonyOS.Web.小程序并 ...

  9. 流媒体服务器开发——SRS 4.0与WebRTC音视频通话丨音视频开发丨嵌入式开发丨FFmpeg丨iOS音视频开发

    SRS 4.0与WebRTC音视频通话 1. 音视频高薪岗位都需要什么技能点 2. WebRTC的技术点分析 3. SRS 4.0如何使用WebRTC 视频讲解如下,点击观看: 流媒体服务器开发--S ...

最新文章

  1. 295. 数据流的中位数
  2. eclipse链接mysql数据池配置_Tomcat+mysql+eclipse数据库连接池配置
  3. python安装requests库pip不是_python pip安装requests时报错,怎么解决?
  4. RT-Thread 学习笔记(五)—— RTGUI代码解读
  5. 周小星:放弃50万年薪去创业?看完视频再说吧你!【另附创业初期五大要素】...
  6. python 两个[]_Python中的两个测试工具
  7. Sharepoin学习笔记—架构系列--01 Sharepoint的网页(Page),网页解析(Parsing)与解析安全处理(Security)
  8. Linux电驴客户端,ubuntu装电驴
  9. Redis实现分布式爬虫
  10. ios调用restful接口_iPhone中调用RESTFUL Service
  11. java反编译工具那个好用_Java反编译工具有哪些,Java反编译工具好用推荐
  12. Infor CRM咨询服务市场市场报告-Infor CRM咨询服务销售额及预测
  13. 【Class 51】【Python实例】自动控制浏览器 登陆QQ邮箱发送邮件,内容为鼠标复制的文本
  14. 【大数据分析】Spark的joins研究
  15. 灵途科技电梯安全光幕精准阻车,助力消防安全
  16. 195. 中文小说出海资料整理
  17. 阿里python认证_集成阿里云滑动验证(python)
  18. python数据分析股票
  19. oracle表空间undotbs1,解决Oracle 表空间UNDOTBS1太大的有关问题
  20. GMT、UTC、PDT 时间

热门文章

  1. mysql 创建表_每天10分钟带你学会MySQL(三)表的创建
  2. mysql全拼_Mysql中取得汉字的全拼、拼音首字母
  3. 【绪论】——声呐概述
  4. mysql2.1.4安装_安装Apache2.2.4+Mysql5.0.27+php5.2.1详细安装说明
  5. java 输入流可以合并吗_Java 使用IO流实现大文件的分割与合并实例详解
  6. ML、DL、CNN学习记录8
  7. JSON解析工具比较,主要GSON和FastJSON
  8. 人人都可以写的可视化Python小程序第二篇:旋转的烟花
  9. FTP和TCP、UDP
  10. golang之tcp自动重连