CN109828742B - 音频多路同步输出方法、计算机装置及计算机可读存储介质 - Google Patents
音频多路同步输出方法、计算机装置及计算机可读存储介质 Download PDFInfo
- Publication number
- CN109828742B CN109828742B CN201910104482.8A CN201910104482A CN109828742B CN 109828742 B CN109828742 B CN 109828742B CN 201910104482 A CN201910104482 A CN 201910104482A CN 109828742 B CN109828742 B CN 109828742B
- Authority
- CN
- China
- Prior art keywords
- sound card
- audio data
- audio
- card equipment
- card device
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Abstract
本发明提供一种音频多路同步输出方法、计算机装置及计算机可读存储介质,该方法包括将二路以上的音频数据发送至多个声卡设备,其中,每一个声卡设备接收一路音频数据;声卡设备获取音频数据的编解码参数后,设置声卡设备的参数,并且获取多个声卡设备的音频数据的时间戳信息,判断多个声卡设备的音频数据的时间戳信息的差值是否小于预设阈值,如是,将该声卡设备对应的一路音频数据写入声卡设备,否则,对当前声卡设备的音频数据进行同步处理。本发明还提供实现上述方法的计算机装置及计算机可读存储介质。本发明能够实现多个声卡设备对多路音频数据的同步输出。
Description
技术领域
本发明涉及音频处理领域,具体地,是针对多路音频同步输出的方法以及实现这种方法的计算机装置、计算机可读存储介质。
背景技术
现有的电子设备大多具有音频输出的功能,通常,在电子设备上设置声卡设备,通过声卡设备将音频输出。目前大部分电子设备都支持一个声卡设备的音频输出,例如从喇叭、spdif、hdmi、cvbs等声卡设备输出一路音频。
随着电子设备使用场景越来越复杂,人们希望电子设备能够同时对多路音频数据进行处理,并且通过多个不同的声卡设备分别输出多路音频数据。例如,在家庭影院的控制系统中,由于存在多个不同的音箱,因此,人们希望通过多个声卡设备分别向多个音箱输出多路音频数据,多路音频数据可能是相同的,也可能是不同的,但多路音频数据需要同步输出,以实现立体声的效果。
但是,音频的数据不单依赖于声卡设备等硬件设备,还需要通过相应的声卡驱动软件实现,而这些软件都基于不同的操作系统,从操作系统的平台看,可以分为基于Linux和Android两个不同的平台,其中基于Linux平台还没有默认的支持多路数据多声卡设备同步输出音频的功能。而基于Android平台中的音频输出模块将声卡设备分为如下几种:codec、remote_submix(远程设备)、usb、a2dp(蓝牙),每一个声卡对应一个硬件抽象层,通过Duplicate方式最多同时支持两种声卡设备的输出。
然而,由于现有的基于Android平台的电子设备最多只能两大类声卡设备的音频数据同步输出,存在使用限制,而且过多的hal层设备管理容易造成处理器同时处理过多的数据而影响电子设备的运行速度。而且,由于没有可平台化的解决方案,名义上的“数据同步输出”通常使用for循环实现,不具备实际意义。正是如此,所以这些电子设备往往只能处理一笔音频数据,以同一个ALSA配置送给有限声卡设备进行播放,且无法独立成模块,移植性和实用性不强。
发明内容
本发明的主要目的是提供一种能够同时输出多路音频数据的音频多路同步输出方法。
本发明的另一目的是提供一种实现上述音频多路同步输出方法的计算机装置。
本发明的再一目的是提供一种实现上述音频多路同步输出方法的计算机可读存储介质。
为实现本发明的主要目的,本发明提供的音频多路同步输出方法包括将二路以上的音频数据发送至多个声卡设备,其中,每一个声卡设备接收一路音频数据;声卡设备获取音频数据的编解码参数后,设置声卡设备的参数,并且获取多个声卡设备的音频数据的时间戳信息,判断多个声卡设备的音频数据的时间戳信息的差值是否小于预设阈值,如是,将该声卡设备对应的一路音频数据写入声卡设备,否则,对当前声卡设备的音频数据进行同步处理。
由上述方案可见,电子设备上设置多个声卡设备后,每一个声卡设备可以单独接收一路音频数据,并且在播放音频数据的过程中,通过获取每一个声卡设备的音频数据的时间戳信息,通过对多路音频数据的时间戳信息进行对比,确保多个声卡设备的音频数据的时间戳差值小于预设阈值,从而确保多路音频数据输出的同步性。
此外,由于每一个声卡设备的一路音频数据从解码器获取,因此将解码器和回放器整合在一起供上层播放器调用,内部来看解码器和回放器根据声卡设备的数量在初始化阶段做出动态调整,回放器对声卡设备进行管理,回放器具备单独的接口,可适应第三方解码器。
一个优选的方案是,对当前声卡设备的音频数据进行同步处理包括:重新提出当前声卡设备的音频数据获取请求,获取新的音频数据后,再次判断新获取的音频数据的时间戳信息与其他声卡设备的音频数据的时间戳信息的差值是否小于预设阈值。
由此可见,当声卡设备当前接收的音频数据的时间戳与其他声卡设备的音频数据的时间戳差异较大时,通过重新获取新的音频数据的方式来更新音频数据的时间戳,直至当前声卡设备的音频数据的时间戳与其他声卡设备的音频数据的时间戳信息的差值小于预设阈值,这样可以避免多个声卡设备输出的音频数据不同步的问题。
进一步的方案是,将二路以上的音频数据发送至多个声卡设备前,还执行:遍历声卡目录文件,获取声卡设备的数量,并获取每一个声卡设备的信息。
可见,操作系统初始化以后,通过遍历声卡目录文件来获取每一个声卡设备的信息,可以确定电子设备可用的声卡设备的数量,从而确定可以同时输出的音频数据的数量。
进一步的方案是,获取每一个声卡设备的信息后,根据配置文件设置每一个声卡设备的使能标识以及设定每一个声卡设备的工作模式。
由此可见,确定每一个声卡设备的工作模式,可以方便的确定多路音频数据的分配情况,有利于根据每一路音频数据的属性分配至相应的声卡设备。
进一步的方案是,设置每一个声卡设备的使能标识以及设定每一个声卡设备的工作模式前,为每一个声卡设备创建一个线程,一个线程对应于一个声卡设备,且由线程对声卡设备的音频数据的时间戳信息进行同步处理。
可见,每一个声卡设备由一个线程进行管理,这样实现声卡设备与线程的一一匹配,将硬件与软件有机整合。
进一步的方案是,遍历声卡目录文件后,获取新增声卡设备的设置信息,并设置新增声卡设备的使能标识以及设定新增声卡设备的工作模式。
由此可见,使用者可以根据自己的喜好增加电子设备的声卡设备数量,并且可以设置当前所使用的声卡设备的数量,满足使用者个性化使用的需求。
进一步的方案是,将声卡设备对应的一路音频数据写入声卡设备后,将声卡设备的数据写入标志设定为写入成功标志,并且,设置声卡设备的参数后,设置声卡设备的初始化成功标志。
由此可见,通过设置初始化成功标志、写入成功标志,有利于后续对声卡设备工作情况的监控,并且确定声卡设备是否正确输出音频数据,在声卡设备异常时,可以快速的反馈声卡设备的异常情况并且选择可用的声卡设备来输出音频数据。
为实现上述的另一目的,本发明提供的计算机装置包括处理器以及存储器,存储器存储有计算机程序,计算机程序被处理器执行时实现上述音频多路同步输出方法的各个步骤。
为实现上述的再一目的,本发明提供计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述音频多路同步输出方法的各个步骤。
附图说明
图1是本发明音频多路同步输出方法实施例中设置声卡设备的流程图。
图2是本发明音频多路同步输出方法实施例中音频数据播放的流程图的第一部分。
图3是本发明音频多路同步输出方法实施例中音频数据播放的流程图的第二部分。
以下结合附图及实施例对本发明作进一步说明。
具体实施方式
本发明的音频多路同步输出方法应用在具有音频输出能力的电子设备上,优选的,该电子设备具有多个声卡设备,例如设置有喇叭、spdif、hdmi、cvbs等声卡设备,优选的,本发明的音频多路同步输出方法应用在基于Linux平台的电子设备上,具体的,声卡设备可以是codec、remote_submix(远程设备)、usb、a2dp(蓝牙)等设备。进一步的,该电子设备设置有处理器以及存储器,存储器上存储有计算机程序,处理器通过执行该计算机程序实现音频多路同步输出方法。
音频多路同步输出方法实施例:
本实施例应用在需要输出多路音频数据的电子设备上,具体的,电子设备可以是智能手机、平板电脑、数字电视机顶盒、行车记录或者车载音频播放设备等电子设备上,并且,电子设备设置有多个声卡设备,每一个声卡设备可以单独处理一路音频数据。具体的,每一个声卡设备可以接收一个音频解码器输出的音频数据。
因此,在驱动每一个声卡设备输出音频数据前,首先要确定电子设备当前有多少个可以使用的声卡设备,并且需要对每一个声卡设备的属性进行设置,以便于向每一个声卡设备输出相适应的音频数据。下面结合图1介绍设置声卡设备信息的流程图。
首先,执行步骤S1,电子设备的操作系统初始化。电子设备上电以后,操作系统启动,例如启动Linux操作系统。然后,执行步骤S2,遍历声卡目录文件,获取声卡设备的数量。通常,在Linux操作系统中设置有一个声卡目录文件,该文件中记录当前电子设备具有的声卡设备的数量,每一个声卡设备的信息,包括声卡设备的名称、声卡设备的标志信息以及声卡设备的工作模式等。因此,步骤S2通过获取电子设备每一个声卡设备的信息。
接着,执行步骤S3,设置声卡数量。根据步骤S2读取的声卡目录文件,确定电子设备所具有的声卡设备的数量,可以设定当前需要使用的声卡设备的数量,例如电子设备具有3个声卡设备,则步骤S3可以设定声卡设备的数量为3个,即电子设备所具有的所有声卡设备都被使用。当然,也可以根据实际情况设定当前可以使用的声卡设备的数量,例如电子设备虽然具有3个声卡设备,但是可以只是选择其中的2个声卡设备用作音频输出,此时,设定的声卡设备的数量为2个。
然后,执行步骤S4,根据配置文件设置声卡设备的使能标识以及工作模式。在确定能够使用的声卡设备数量后,则获取每一个声卡设备的配置文件,包括声卡设备的驱动文件,通过运行声卡设备的驱动文件来使能每一个声卡设备,例如设置每一个声卡设备的使能标识。并且,在设定使能标识以后,每一个声卡设备的线程对应于一个声卡设备的使能标识、卡名以及声卡的工作模式。优选的,每一个声卡设备对应于一个线程,当声卡设备工作时,该线程通过声卡设备的卡名来确定每一个声卡设备接收的音频数据。
当然,用户可以自行添加新的声卡设备,例如,用户给电子设备安装新的声卡设备后,需要通过操作系统添加新的声卡设备的信息,包括设置声卡设备的卡名、工作模式等。如果操作系统接收到新增声卡设备的设置信息,则操作系统再次启动时可以从配置文件中获取新增声卡设备的设置信息,包括新增声卡设备的卡名、工作模式等,并且设置新增的声卡设备的使能标识,根据使能标识来确定用户是否允许使用该声卡设备,或者是否已经安装该声卡设备的驱动文件等。
在设置声卡设备以后,可以应用电子设备的多个声卡设备对多路音频数据进行处理,实现多路音频数据的同时输出。参见图2与图3,在播放音频数据时,首先执行步骤S11,判断音频播放模块是否初始化成功。由于电子设备的音频播放模块需要经过初始化以后才能工作,且音频模块的初始化需要花费一定时间,因此首先需要确定音频模块是否已经初始化完毕,且已经成功初始化。如果音频模块还没有初始化成功,或者音频模块初始化失败,则执行步骤S17,音频播放模块退出运行,此时,电子设备将无法播放音频。
如果步骤S11判断结果为是,表示音频模块初始化成功,则执行步骤S12,将多路音频数据分别发送至多个声卡设备,并且每一个声卡设备仅接收一路音频数据。优选的,电子设备设置有多个音频解码器,每一个音频解码器单独对一路音频数据进行解码。本实施例中,一个声卡设备对应于一个音频解码器,一个声卡设备仅接收对应的音频解码器输出的音频数据。因此,将多路音频数据发送至多个声卡设备,实际上将音频数据发送至对应的声卡设备的消息队列中,声卡设备从消息队列中获取消息并且对消息进行处理。
本实施例中,发送至多个音频解码器的音频数据可以是同源的音频数据,也可以是不同源的音频数据。例如,在家庭影院的控制器中,需要向多个不同的音箱输出相同的音频信号,此时可以将一个原始的音频数据发送至多个不同的音频解码器,多个不同的音频解码器对同一笔音频数据进行解码。此时,多个不同的音频解码器实际上是分别对同一笔音频数据进行解码将解码后的音频数据输出至多个不同的声卡设备,并由多个不同的声卡设备播放。或者,当电子设备需要通过多个不同的声卡设备播放不同的音频时,则电子设备需要将不同的音频数据发送至不同的音频解码器,每一个音频解码器接收到的音频数据都不相同,此时,每一个音频解码器分别对所接收到的音频数据进行解码,并分别将解码后的音频数据输出至一个声卡设备。
优选的,每一个声卡设备对应于一个线程,因此,每一个线程对应于一个音频解码器,并且将对应的音频解码器所解码获得的音频信号发送至对应的声卡设备。例如,每一个线程记录有对应的声卡设备的卡名,线程根据声卡设备的卡名确定音频解码器输出的音频信号所对应的声卡设备,并将音频数据传输至对应的声卡设备,避免将音频数据发送至错误的声卡设备上。
然后,执行步骤S13,一个声卡设备对应的线程查看该声卡设备的消息队列。本实施例是通过alsa-lib实现多路数据同步输出到不同声卡设备,具体的,可以通过Message驱动来实现多路音频数据的同步性要求,例如通过Message同步向不同的声卡设备发送音频数据,这样,每一个声卡设备都有自己的消息队列,该消息队列中记录多条消息,具体的,一条消息包含有声卡设备需要处理的音频数据。当然,消息队列中的消息也可以是声卡设备的设置信息等。消息队列中记录的多条消息可以是按照消息接收的先后顺序排列,也可以是根据预设的优先等级排列,声卡设备按照消息队列中排序的优先等级处理消息队列中的每一条消息。
在查看一个声卡设备的消息队列后,执行步骤S14,判断该声卡设备对应的消息队列是否为空的队列,也就是消息队列中没有需要处理的数据,如是,则执行步骤S15,线程退出。由于声卡设备当前没有需要处理的消息,因此,该声卡对应的线程也就退出,直到声卡设备有需要处理的音频数据后,线程再重新启动。
在线程退出以后,执行步骤S16,判断音频播放模块的全部线程是否都已经退出,如是,则执行步骤S17,音频播放模块退出,从而结束音频播放操作。如果音频播放模块还有正在运行的线程,即还有声卡设备在输出音频信号,则返回执行步骤S13,查看当前还在工作的声卡设备的消息队列,继续处理该声卡设备消息队列中的消息。
如果步骤S14的判断结果为否,在表示该声卡设备对应的消息队列中存在需要处理的消息,此时,执行步骤S18,获取消息队列中第一个需要处理的消息,例如获取位于该消息队列中优先等级最高的音频数据。由于音频数据需要先经过音频解码器解码后才能够播放,因此,需要获取音频数据的编解码参数,并且在获取音频数据的编解码参数以后,由音频解码器对音频数据进行解码。本实施例并不限制音频数据的解码方式,因此,音频数据可以是使用各种编码方式形成的音频数据,只要音频解码器支持相应的解码方式即可以对该音频数据进行解码。
然后,执行步骤S19,判断声卡设备是否成功打开,如果成功打开,则执行步骤S20,设置声卡设备的参数,例如获取声卡设备运行时所需要的参数。优选的,回放器首先从音频解码器中获得相应的音频数据参数,然后将之整合为一个Message送给该声卡设备对应的线程,最终设置进声卡设备中。
如果步骤S19的判断结果为否,表示声卡设备打开失败,则执行步骤S30,向操作系统返回音频数据写入失败的标志。由于声卡设备打开失败,则无法向声卡设备写入音频数据,因此声卡设备也就无法播放音频数据,此时需要向操作系统返回音频数据写入失败的标志,从而让操作系统知晓某一段音频数据写入失败。
在执行步骤S20设置声卡设备的参数以后,执行步骤S21,设置声卡设备初始化成功标志。由于每一个声卡设备均有自己对应的标志,例如在某一个字段中记录一个初始化成功的标志,在设置声卡设备的参数以后,声卡设备可以启动运行,因此,在声卡设备启动运行以后,先设置声卡设备初始化成功的标志,以便于该模块通过该标志确定是否可以向声卡设备写入音频数据。
然后,执行步骤S22,判断声卡设备是否初始化成功。例如,可以根据声卡设备初始化成功标志来判断某一个声卡设备是否已经初始化成功,如果声卡设备初始化成功,则执行步骤S23,否则,执行步骤S30,向操作系统返回音频数据写入失败的标志。由于声卡设备初始化失败,则无法向声卡设备写入音频数据,因此声卡设备也就无法播放音频数据,此时需要向回放器返回音频数据写入失败的标志,从而让操作系统知晓某一段音频数据写入失败。
如果确定声卡设备初始化成功,则执行步骤S23,获取多个声卡设备的音频数据的时间戳。本实施例中,由于多个声卡设备均接收到音频数据,并且不同的音频数据由不同的音频解码器进行解码,由于不同的解码器对音频数据的解码速度不完全相同,即使对同一笔音频数据的解码速度也难以确保相同,因此,声卡设备接收到的音频数据可能存在不同步的情况。如果多个声卡设备接收到的音频数据不同步,则播放出来的音频数据就不同步,如在家庭影院中,多个音箱输出的音频不同步,将影响观众的观看。
为了确保多个声卡设备输出的音频同步,本实施例中,需要获取多个声卡设备接收的音频数据的时间戳信息。具体的,可以由音频播放模块获取多个声卡设备所接收的音频数据的时间戳信息。由于每一帧音频数据都具有自身的时间戳信息,在音频解码器对音频数据进行解码后,音频播放模块可以获取音频数据中的时间戳信息,且音频播放模块将解码后的音频数据发送至声卡设备。
然后,执行步骤S24,判断多个声卡设备所接收的音频数据的时间戳信息的差值是否小于预设的阈值,如是,执行步骤S26,否则执行步骤S25。由于不同的声卡设备接收到的音频数据的时间戳信息不完全相同,因此需要对多个声卡设备所接收到时的音频数据的时间戳信息进行对比,如果多个声卡设备的音频数据的时间戳信息中,时间戳最早和最晚的差值不超过预设的阈值,例如10毫秒,则认为多个声卡设备的音频数据满足同步的要求,步骤S24的判断结果为是,否则,认为多个声卡设备的音频数据的时间戳信息差异较大,不能满足音频同步播放的要求,则执行步骤S25。
例如,多个声卡设备接收同源的音频数据,则在音频数据开始播放的时刻,可以将时间戳基数设置为0,随着音频的播放,每一笔音频数据均有自身的时间戳,例如从音频数据初始播放的时刻到当前音频数据播放的时刻的时间是3.25秒,则该帧音频数据的时间戳为3.25秒。理论上多个声卡设备都是在3.25秒的时刻播放该帧音频数据,但是由于不同的音频解码器解码速度不相同,因此音频数据解码后播放的时刻也不尽相同,此时,通过获取多个声卡设备的时间戳信息,可以确保多个声卡设备播放的音频数据同步。
如果多个声卡设备播放的音频数据是不同源的音频,例如声卡设备A播放的是A1歌曲,声卡设备B播放的是B1歌曲,由于两个声卡设备播放的音频数据并不相同,此时,可以使用系统时间作为时间戳信息的计算基准,例如利用歌曲A1开始播放时刻系统时间加上当前音频数据的时间偏移量作为声卡设备A的音频数据的时间戳参考,并且利用歌曲B1开始播放时刻系统时间加上当前音频数据的时间偏移量作为声卡设备B的音频数据的时间戳参考,这样可以比较两个不同声卡设备的时间戳信息的差值。
如果多个声卡设备接收到的音频数据的时间戳信息的差值大于预设的阈值,表示多个声卡设备的音频数据不同步,则执行步骤S25,重新提出音频数据获取请求,并且获取新的音频数据。由于当前帧的音频数据与其他声卡设备的音频数据时间戳差异较大,因此需要通过重新获取新的音频数据的方式来实现音频数据的同步处理。此时,可以不播放当前帧的音频数据,而是获取新的音频数据并且进行解码,只有在解码后的音频数据的时间戳与其他声卡设备接收到的音频数据的时间戳小于预设阈值时,才播放音频数据。
因此,执行步骤S25后,返回执行步骤S24,也就是获取新的音频数据的时间戳信息,并且与其他声卡设备接收到的音频数据的时间戳信息进行对比,直到多个声卡设备接收到的音频数据的时间戳信息差值小于预设阈值为止。
如果多个声卡设备接收到的音频数据的时间戳信息差值小于预设阈值,则执行步骤S26,先对音频数据进行静音处理,然后执行步骤S27,获取对音频数据的音量进行控制的信息,例如音频数据的音量级别信息,然后对音频数据的音量进行调节。因此,用户可以根据实际情况调节音频数据的音量。
最后,执行步骤S28,判断音频数据是否已经成功写入到声卡设备,如是,则执行步骤S29,向操作系统返回写入成功标志,此时,操作系统获知该帧音频数据成功写入到声卡设备。并且返回执行步骤S13,继续获取声卡设备消息队列中的消息,如果声卡设备消息队列中还有新的消息,在继续处理消息队列中的消息,也就是对下一帧音频数据进行解码、写入的处理。如果步骤S28判断音频数据写入失败,则执行步骤S30,向操作系统返回音频数据写入失败的标志。在确认音频数据写入失败后,返回执行步骤S13,仍继续获取声卡设备消息队列中的消息,对后续的消息进行处理。
可见,本发明通过对多个声卡设备的音频数据进行同步处理,即通过对时间戳进行控制,来确保多个不同声卡设备输出的音频同步。并且,本实施例中,由于多个声卡设备是独立工作的,且每一个音频解码器对应于一个声卡设备,且一个线程也对应于一个声卡设备,这样可以确保每一个声卡设备可以单独的被音频播放模块调用,多路音频数据的输出更加灵活。
计算机装置实施例:
本实施例的计算机装置可以是车载终端设备或者影音终端设备等电子设备,该电子设备包括有处理器、存储器以及存储在存储器中并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述音频多路同步输出方法的各个步骤。
例如,计算机程序可以被分割成一个或多个模块,一个或者多个模块被存储在存储器中,并由处理器执行,以完成本发明的各个模块。一个或多个模块可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述计算机程序在终端设备中的执行过程。
需要说明的是,终端设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。终端设备可包括,但不仅限于,处理器、存储器。本领域技术人员可以理解,本发明的示意图仅仅是终端设备的示例,并不构成对终端设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如终端设备还可以包括输入输出设备、网络接入设备、总线等。
本发明所称处理器可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,处理器是终端设备的控制中心,利用各种接口和线路连接整个终端设备的各个部分。
存储器可用于存储计算机程序和/或模块,处理器通过运行或执行存储在存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现终端设备的各种功能。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(SmartMedia Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
计算机可读存储介质:
电子设备所存储的计算机程序如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述音频多路同步输出方法的各个步骤。
其中,计算机程序包括计算机程序代码,计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。计算机可读介质可以包括:能够携带计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
最后需要强调的是,本发明不限于上述实施方式,如音频数据解码方式的变化,或者声卡设备类型的改变等,这些改变也应该包括在本发明权利要求的保护范围内。
Claims (10)
1.音频多路同步输出方法,其特征在于,包括:
将二路以上的音频数据发送至多个声卡设备,其中,每一个所述声卡设备接收一路所述音频数据,且将所述音频数据发送至对应的声卡设备的消息队列中;
所述声卡设备获取所述音频数据的编解码参数后,设置所述声卡设备的参数,并且获取多个所述声卡设备的音频数据的时间戳信息,判断多个所述声卡设备的音频数据的时间戳信息的差值是否小于预设阈值,如是,将该声卡设备对应的一路音频数据写入所述声卡设备,否则,对当前声卡设备的音频数据进行同步处理。
2.根据权利要求1所述的音频多路同步输出方法,其特征在于:
对当前声卡设备的音频数据进行同步处理包括:重新提出当前声卡设备的音频数据获取请求,获取新的音频数据后,再次判断新获取的音频数据的时间戳信息与其他所述声卡设备的音频数据的时间戳信息的差值是否小于预设阈值。
3.根据权利要求1或2所述的音频多路同步输出方法,其特征在于:
将二路以上的音频数据发送至多个声卡设备前,还执行:遍历声卡目录文件,获取声卡设备的数量,并获取每一个所述声卡设备的信息。
4.根据权利要求3所述的音频多路同步输出方法,其特征在于:
获取每一个所述声卡设备的信息后,根据配置文件设置每一个所述声卡设备的使能标识以及设定每一个所述声卡设备的工作模式。
5.根据权利要求4所述的音频多路同步输出方法,其特征在于:
设置每一个所述声卡设备的使能标识以及设定每一个所述声卡设备的工作模式前,为每一个所述声卡设备创建一个线程,一个所述线程对应于一个所述声卡设备,且由所述线程对所述声卡设备的音频数据的时间戳信息进行同步处理。
6.根据权利要求4所述的音频多路同步输出方法,其特征在于:
遍历声卡目录文件后,获取新增声卡设备的设置信息,并设置新增声卡设备的使能标识以及设定新增声卡设备的工作模式。
7.根据权利要求1或2所述的音频多路同步输出方法,其特征在于:
将所述声卡设备对应的一路音频数据写入所述声卡设备后,将所述声卡设备的数据写入标志设定为写入成功标志。
8.根据权利要求1或2所述的音频多路同步输出方法,其特征在于:
设置所述声卡设备的参数后,设置所述声卡设备的初始化成功标志。
9.计算机装置,其特征在于,包括处理器以及存储器,所述存储器存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至8中任意一项所述音频多路同步输出方法的各个步骤。
10.计算机可读存储介质,其上存储有计算机程序,其特征在于:所述计算机程序被处理器执行时实现如权利要求1至8中任意一项所述音频多路同步输出方法的各个步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910104482.8A CN109828742B (zh) | 2019-02-01 | 2019-02-01 | 音频多路同步输出方法、计算机装置及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910104482.8A CN109828742B (zh) | 2019-02-01 | 2019-02-01 | 音频多路同步输出方法、计算机装置及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109828742A CN109828742A (zh) | 2019-05-31 |
CN109828742B true CN109828742B (zh) | 2022-02-18 |
Family
ID=66863349
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910104482.8A Active CN109828742B (zh) | 2019-02-01 | 2019-02-01 | 音频多路同步输出方法、计算机装置及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109828742B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110062311A (zh) * | 2019-06-01 | 2019-07-26 | 厦门市思芯微科技有限公司 | 一种通过局域网多房音乐播放功能的智能音箱系统 |
CN113035246B (zh) * | 2019-12-24 | 2022-06-17 | 深圳市三诺数字科技有限公司 | 音频数据同步处理方法、装置、计算机设备及存储介质 |
CN111949818A (zh) * | 2020-08-14 | 2020-11-17 | 天津中新智冠信息技术有限公司 | 数据处理方法和装置、数据处理设备及存储介质 |
CN113763970B (zh) * | 2021-09-07 | 2023-09-22 | 广州飞傲电子科技有限公司 | 一种音频传输方法、装置及音频传输设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1767601A (zh) * | 2005-10-21 | 2006-05-03 | 西安交通大学 | 一种支持多源流媒体的同步播放控制方法 |
CN101860627A (zh) * | 2010-05-25 | 2010-10-13 | 中兴通讯股份有限公司 | 接入网关的业务管理方法及接入网关 |
CN102171750A (zh) * | 2008-10-06 | 2011-08-31 | 爱立信电话股份有限公司 | 用于输送对齐的多通道音频的方法和设备 |
CN103888813A (zh) * | 2012-12-21 | 2014-06-25 | 北京计算机技术及应用研究所 | 一种音视频同步的实现方法及系统 |
CN106060610A (zh) * | 2016-06-07 | 2016-10-26 | 微鲸科技有限公司 | 播放器同步系统和同步方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140205259A1 (en) * | 2013-01-24 | 2014-07-24 | Kiran Kamity | Screen recording for creating contents in mobile devices |
-
2019
- 2019-02-01 CN CN201910104482.8A patent/CN109828742B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1767601A (zh) * | 2005-10-21 | 2006-05-03 | 西安交通大学 | 一种支持多源流媒体的同步播放控制方法 |
CN102171750A (zh) * | 2008-10-06 | 2011-08-31 | 爱立信电话股份有限公司 | 用于输送对齐的多通道音频的方法和设备 |
CN101860627A (zh) * | 2010-05-25 | 2010-10-13 | 中兴通讯股份有限公司 | 接入网关的业务管理方法及接入网关 |
CN103888813A (zh) * | 2012-12-21 | 2014-06-25 | 北京计算机技术及应用研究所 | 一种音视频同步的实现方法及系统 |
CN106060610A (zh) * | 2016-06-07 | 2016-10-26 | 微鲸科技有限公司 | 播放器同步系统和同步方法 |
Non-Patent Citations (2)
Title |
---|
基于 SIP 和 RTP 的 VoIP 通信;薛晓飞等;《指挥信息系统与技术》;20120229;第1.4-2节 * |
薛晓飞等.基于 SIP 和 RTP 的 VoIP 通信.《指挥信息系统与技术》.2012,第1.4-2节. * |
Also Published As
Publication number | Publication date |
---|---|
CN109828742A (zh) | 2019-05-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109828742B (zh) | 音频多路同步输出方法、计算机装置及计算机可读存储介质 | |
US11336953B2 (en) | Video processing method, electronic device, and computer-readable medium | |
US11490173B2 (en) | Switch of audio and video | |
US20230021776A1 (en) | Determining context to initiate interactivity | |
CN110149518B (zh) | 媒体数据的处理方法、系统、装置、设备以及存储介质 | |
US20200321031A1 (en) | MP4 File Processing Method and Related Device | |
US11622219B2 (en) | Apparatus, a method and a computer program for delivering audio scene entities | |
US20200021772A1 (en) | Multimedia recording data obtaining method and terminal device | |
US11956497B2 (en) | Audio processing method and electronic device | |
CN105898370A (zh) | 用于多机位的视频播放器、播放系统及播放方法 | |
EP2830327A1 (en) | Audio processor for orientation-dependent processing | |
US20170169834A1 (en) | Android-based audio content processing method and device | |
US9380189B2 (en) | Method of providing information configuration function in video play device and video play device | |
CN110933221A (zh) | 一种音频通道的管理方法、装置、终端及存储介质 | |
JP2019212357A (ja) | オーディオ再生方法、装置、機器及び記憶媒体 | |
CN112533188A (zh) | 一种播放源的输出处理方法和装置 | |
CN105847990B (zh) | 播放媒体文件的方法和设备 | |
US20190037251A1 (en) | Playback apparatus, method of controlling playback apparatus, playback method and server apparatus | |
CN112887786B (zh) | 视频播放方法、装置及计算机可读介质 | |
CN113905321A (zh) | 基于对象音频通道元数据和生成方法、设备及存储介质 | |
CN106302617B (zh) | 应用于计算设备的数据处理方法及设备 | |
WO2023273772A1 (zh) | 数据处理方法、云服务器、终端及存储介质 | |
CN111522972B (zh) | 多媒体共享方法及车机 | |
CN113905322A (zh) | 基于双耳音频通道元数据和生成方法、设备及存储介质 | |
CN114051194A (zh) | 一种音频轨道元数据和生成方法、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |