linphone录像问题

        linphone 的媒体流是以插件的方式运转的,在视频通话的时候,同时运转音频发送、音频接收、视频发送和视频接收这四个插件链。

也即是说在四个线程里处理音频发送接收和视频发送接收。现在我需要实现录像功能,录制自己和对方的声音加上对方的影像,而这些

数据在三个线程里面流通,那如何实现录制功能,实现双方音频的同步以及音视频同步呢?希望广大网友也给出自己的设计。我先写出

我目前的实现方式,也算是抛砖引玉。

       linphone里面filter之间的数据交换都是打包在结构mblk_t里面,这个结构里面也可以同时存放时间戳,录像功能里的数据同样使用

这个结构。

方式一、录制nalu

1.在录像初始化的时候初始化三个queue,用来存放两路音频的数据和一路视频的数据;同时初始化ffmeg,音频AAC,视频H264,

文件格式mp4;初始化之后创建一个线程来处理编码和写文件的工作。

2.在linphone MSAndSoundWrite插件和MSAndSoundRead插件里把音频pcm数据打上时间戳并入队列,在视频解码插件里,把视频

H264帧打时间戳并入队列。

3.在录像线程里读取三个队列的数据,对音频pcm数据做AAC编码,然后以双声道方式写入文件;对视频H264数据直接写文件。

4.音视频同步,两路音频的同步和音频与视频的同步是关键,根据时间戳也不能完全同步,期待哪位高手给出好的建议。

方式二、录制yuv

这个是特殊场景的实现方式,比如可以切换本地和远程的图像,选择屏幕上显示本地的图像还是远程的图像,那这时候需要录制显示的图像,所以有可能录制本地的,也可能录制远程的,如果交替写入本地和远程的nalu码流,是无法解码的。所以这种情况下只有拿到本地和远程的yuv数据,然后自己编码写文件。

 

实现音视频同步的关键在序列化音频数据流和保证写文件时处理音频和视频流的时序。

用户点击 用户点击 linphone linphone linphone linphone 的图标后就开始了 的图标后就开始了 的图标后就开始了 的图标后就开始了 的图标后就开始了 linphone linphone linphone linphone 软件,这时 软件,这时 软件,这时 软件,这时 软件,这时 linphoneActivity linphoneActivity linphoneActivity linphoneActivity linphoneActivity linphoneActivity linphoneActivity开始运行,它 开始运行,它 开始运行,它 开始运行,它 使 linphoneService linphoneService linphoneService linphoneService linphoneServicelinphoneServicelinphoneService 开始,并做一些 开始,并做一些 开始,并做一些 开始,并做一些 linphone linphone linphone linphone 帐号密码的登录操作同时引导用户进行环境变 帐号密码的登录操作同时引导用户进行环境变 帐号密码的登录操作同时引导用户进行环境变 帐号密码的登录操作同时引导用户进行环境变 帐号密码的登录操作同时引导用户进行环境变 帐号密码的登录操作同时引导用户进行环境变 帐号密码的登录操作同时引导用户进行环境变 帐号密码的登录操作同时引导用户进行环境变 帐号密码的登录操作同时引导用户进行环境变 帐号密码的登录操作同时引导用户进行环境变 量的设置( 量的设置( LinphonePreferencesActivity LinphonePreferencesActivity LinphonePreferencesActivityLinphonePreferencesActivity LinphonePreferencesActivityLinphonePreferencesActivityLinphonePreferencesActivityLinphonePreferencesActivity LinphonePreferencesActivity LinphonePreferencesActivity LinphonePreferencesActivity LinphonePreferencesActivity)。 环境变量都储存在 环境变量都储存在 环境变量都储存在 环境变量都储存在 sharedPreferencessharedPreferences sharedPreferencessharedPreferences sharedPreferencessharedPreferencessharedPreferencessharedPreferences sharedPreferences 中,它是整个工程共享的一变量池。这些环境有 中,它是整个工程共享的一变量池。这些环境有 中,它是整个工程共享的一变量池。这些环境有 中,它是整个工程共享的一变量池。这些环境有 中,它是整个工程共享的一变量池。这些环境有 中,它是整个工程共享的一变量池。这些环境有 中,它是整个工程共享的一变量池。这些环境有 中,它是整个工程共享的一变量池。这些环境有 中,它是整个工程共享的一变量池。这些环境有 中,它是整个工程共享的一变量池。这些环境有 中,它是整个工程共享的一变量池。这些环境有 中,它是整个工程共享的一变量池。这些环境有 中,它是整个工程共享的一变量池。这些环境有 中,它是整个工程共享的一变量池。这些环境有 音频和视编码设置选择,帐号密服务器自动启回校正网络 音频和视编码设置选择,帐号密服务器自动启回校正网络 音频和视编码设置选择,帐号密服务器自动启回校正网络 音频和视编码设置选择,帐号密服务器自动启回校正网络 音频和视编码设置选择,帐号密服务器自动启回校正网络 音频和视编码设置选择,帐号密服务器自动启回校正网络 音频和视编码设置选择,帐号密服务器自动启回校正网络 音频和视编码设置选择,帐号密服务器自动启回校正网络 音频和视编码设置选择,帐号密服务器自动启回校正网络 音频和视编码设置选择,帐号密服务器自动启回校正网络 音频和视编码设置选择,帐号密服务器自动启回校正网络 音频和视编码设置选择,帐号密服务器自动启回校正网络 音频和视编码设置选择,帐号密服务器自动启回校正网络 音频和视编码设置选择,帐号密服务器自动启回校正网络 音频和视编码设置选择,帐号密服务器自动启回校正网络 音频和视编码设置选择,帐号密服务器自动启回校正网络 音频和视编码设置选择,帐号密服务器自动启回校正网络 音频和视编码设置选择,帐号密服务器自
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值