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

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

 

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

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

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

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

源码地址:alsapulse

命令行安装:记不太清楚了其实,因为在安装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.  
  4. 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

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

  6. "Null Audio"

  7. "Default"

  8. "PulseAudio"

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

  10. "*.wav"

  11. "Ensoniq AudioPCI"

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

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

  15.  
  16. 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

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

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

  19. "Null Audio"

  20. "Default"

  21. "PulseAudio"

  22. "*.wav"

  23. "Ensoniq AudioPCI"

  24. "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即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值