一种基于移动终端的现场直播方法及装置与流程

文档序号:13109708
技术领域本发明涉及互联网应用技术领域,特别涉及一种基于移动终端的现场直播方法及装置。

背景技术:
现场直播是指在现场随着事件的发生、发展进程同时制作和播出广播电视节目的播出方式,通常,人们可以通过电视机或个人计算机等观看现场直播的节目。为了实现上述的现场直播,在相关技术中,主要通过以下三种方式实现音视频采集工作:1、在有线环境下通过网络编码器连接摄像机和音控设备的方式;2、在无线环境下通过直播车连接摄像机和音控设备的方式;3、在无线环境下直接通过视频采集设备的方式。由此可见,现有的音视频采集方式所需的设备体积大,无法实现便捷地携带。随着移动终端技术的快速发展,移动终端应用越来越广泛,功能也越来越强大,并且携带方便,人们希望通过移动终端来进行现场直播,以满足多样化的需求。

技术实现要素:
本发明提供一种基于移动终端的现场直播方法及装置,用以通过移动终端实现现场直播的目的。本发明提供一种基于移动终端的现场直播方法,包括:接收来自用户的现场直播请求,调用移动终端上的视频数据采集器;将预先设定的视频数据采集参数发送至所述视频数据采集器,以由所述视频数据采集器根据所述视频数据采集参数对当前现场进行视频数据的采集,其中,所述视频数据采集器采集的视频数据为非固定帧率的视频数据;将所述非固定帧率的视频数据处理成固定帧率的视频数据,并对所述固定帧率的视频数据进行编码;将编码后的视频数据上传至服务器,由所述服务器将所述编码后的视频数据提供给其他移动终端以实现现场直播。在本发明一实施例中,所述将所述非固定帧率的视频数据处理成固定帧率的视频数据,并对所述固定帧率的视频数据进行编码,包括:调用所述移动终端上的视频数据编码函数;在所述视频数据采集器根据所述视频数据采集参数对当前现场进行视频数据的采集时,启动计时器开始计时,所述视频数据采集器每采集一帧视频数据就传送给所述视频数据编码函数;当所述计时器到达指定时长时,判断所述视频数据编码函数接收的视频数据的总帧数是否为所述固定帧率对应的帧数;若是,则由所述视频数据编码函数对接收的总帧数的视频数据进行编码,并重新开始计时。在本发明一实施例中,当所述计时器到达指定时长时,若判断出所述视频数据编码函数接收的总帧数大于所述固定帧率对应的帧数,则从所述视频数据编码函数接收的总帧数的视频数据中丢弃超出所述固定帧率对应的帧数的视频数据,由所述视频数据编码函数对剩余的视频数据进行编码,并重新开始计时。在本发明一实施例中,当所述计时器到达指定时长时,若判断出所述视频数据编码函数接收的总帧数小于所述固定帧率对应的帧数,则将所述计时器到达指定时长时所述视频数据采集器最后一次传送的一帧视频数据不断地传送给所述视频数据编码函数,直至所述视频数据编码函数接收的总帧数等于所述固定帧率对应的帧数;当视频数据编码函数接收的总帧数等于所述固定帧率对应的帧数时,由所述视频数据编码函数对接收的总帧数的视频数据进行编码,并重新开始计时。在本发明一实施例中,所述指定时长为1秒。在本发明一实施例中,在所述视频数据采集器每采集一帧视频数据就传送给所述视频数据编码函数的过程中,丢弃指定帧的视频数据。本发明还提供一种基于移动终端的现场直播装置,包括:调用模块,用于接收来自用户的现场直播请求,调用移动终端上的视频数据采集器;采集模块,用于将预先设定的视频数据采集参数发送至所述视频数据采集器,以由所述视频数据采集器根据所述视频数据采集参数对当前现场进行视频数据的采集,其中,所述视频数据采集器采集的视频数据为非固定帧率的视频数据;编码模块,用于将所述非固定帧率的视频数据处理成固定帧率的视频数据,并对所述固定帧率的视频数据进行编码;上传模块,用于将编码后的视频数据上传至服务器,由所述服务器将所述编码后的视频数据提供给其他移动终端以实现现场直播。在本发明一实施例中,所述编码模块还用于:调用所述移动终端上的视频数据编码函数;在所述视频数据采集器根据所述视频数据采集参数对当前现场进行视频数据的采集时,启动计时器开始计时,所述视频数据采集器每采集一帧视频数据就传送给所述视频数据编码函数;当所述计时器到达指定时长时,判断所述视频数据编码函数接收的视频数据的总帧数是否为所述固定帧率对应的帧数;若是,则由所述视频数据编码函数对接收的总帧数的视频数据进行编码,并重新开始计时。在本发明一实施例中,所述编码模块还用于:当所述计时器到达指定时长时,若判断出所述视频数据编码函数接收的总帧数大于所述固定帧率对应的帧数,则从所述视频数据编码函数接收的总帧数的视频数据中丢弃超出所述固定帧率对应的帧数的视频数据,由所述视频数据编码函数对剩余的视频数据进行编码,并重新开始计时。在本发明一实施例中,所述编码模块还用于:当所述计时器到达指定时长时,若判断出所述视频数据编码函数接收的总帧数小于所述固定帧率对应的帧数,则将所述计时器到达指定时长时所述视频数据采集器最后一次传送的一帧视频数据不断地传送给所述视频数据编码函数,直至所述视频数据编码函数接收的总帧数等于所述固定帧率对应的帧数;当视频数据编码函数接收的总帧数等于所述固定帧率对应的帧数时,由所述视频数据编码函数对接收的总帧数的视频数据进行编码,并重新开始计时。在本发明一实施例中,所述指定时长为1秒。在本发明一实施例中,在所述视频数据采集器每采集一帧视频数据就传送给所述视频数据编码函数的过程中,丢弃指定帧的视频数据。在本发明一实施例中,所述指定帧为第六帧。在本发明实施例中,接收来自用户的现场直播请求,调用移动终端上的视频数据采集器,将预先设定的视频数据采集参数发送至视频数据采集器,以由视频数据采集器根据视频数据采集参数对当前现场进行视频数据的采集,其中,视频数据采集器采集的视频数据为非固定帧率的视频数据。随后,将非固定帧率的视频数据处理成固定帧率的视频数据,并对固定帧率的视频数据进行编码,将编码后的视频数据上传至服务器,由服务器将编码后的视频数据提供给其他移动终端以实现现场直播。由此可见,本发明实施例通过移动终端对当前现场进行视频数据的采集,并且能够快速上传采集的视频数据至服务器,实现现场直播的目的。本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。附图说明附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:图1为本发明一实施例中基于移动终端的现场直播方法的流程图;以及图2为本发明一实施例中基于移动终端的现场直播装置的结构示意图。具体实施方式以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。如图1所示为本发明一实施例中基于移动终端的现场直播的流程图,该方法包括以下步骤S11-S14。步骤S11,接收来自用户的现场直播请求,调用移动终端上的视频数据采集器。在该步骤中,移动终端可以为智能手机、智能眼镜、平板电脑等终端设备。在本发明一实施例中,可以在移动终端上开发应用(APP),如直播应用等,当用户点击该直播应用上的拍摄按钮时,生成现场直播请求。进一步地,移动终端上的视频数据采集器可以是移动终端自带的摄像头,可以通过移动终端自带的摄像头采集视频数据。此外,还可以调用移动终端上的音频数据采集器采集当前现场的音频数据,移动终端上的音频数据采集器可以是移动终端自带的麦克风。步骤S12,将预先设定的视频数据采集参数发送至视频数据采集器,以由视频数据采集器根据视频数据采集参数对当前现场进行视频数据的采集,其中,视频数据采集器采集的视频数据为非固定帧率的视频数据。在该步骤中,以智能手机ios操作系统平台为例,其目前不支持摄像头设置固定帧率来录制视频。ios操作系统平台下摄像头支持的视频录制帧率是一个范围,实时录制视频时帧率是在该范围内跳动的。步骤S13,将非固定帧率的视频数据处理成固定帧率的视频数据,并对固定帧率的视频数据进行编码。步骤S14,将编码后的视频数据上传至服务器,由服务器将编码后的视频数据提供给其他移动终端以实现现场直播。在该步骤中,移动终端将编码后的视频数据上传至服务器,该服务器可以是视频服务器,其他移动终端可以向该视频服务器发起获取编码后的视频数据的请求,该视频服务器接收到请求后,根据该请求将编码后的视频数据提供给其他移动终端以实现现场直播。在本发明实施例中,接收来自用户的现场直播请求,调用移动终端上的视频数据采集器,将预先设定的视频数据采集参数发送至视频数据采集器,以由视频数据采集器根据视频数据采集参数对当前现场进行视频数据的采集,其中,视频数据采集器采集的视频数据为非固定帧率的视频数据。随后,将非固定帧率的视频数据处理成固定帧率的视频数据,并对固定帧率的视频数据进行编码,将编码后的视频数据上传至服务器,由服务器将编码后的视频数据提供给其他移动终端以实现现场直播。由此可见,本发明实施例通过移动终端对当前现场进行视频数据的采集,并且能够快速上传采集的视频数据至服务器,实现现场直播的目的。在本发明一实施例中,上文步骤S12提及的视频数据采集参数可以包括录制视频的宽度、高度、帧率范围以及像素点编码格式中的一项或多项。在实际采集过程中,可以设定视频数据采集参数如下:录制视频的宽度,width=640;录制视频的高度,height=480;录制视频的帧率范围,framerate=[0,30],移动终端(如手机等)一般不支持录制时设置一个固定的帧率值,只能设置一个录制的帧率范围;录制视频像素点编码格式,yuv420p。需要说明的是,上述示意仅是举例,本发明并不限于此。此外,本发明实施例还可以调用移动终端上的音频数据采集器采集当前现场的音频数据,将预先设定的音频数据采集参数发送至音频数据采集器,以由音频数据采集器根据音频数据采集参数对当前现场进行音频数据的采集。这里,音频数据采集参数可以包括音频采样率、音频声道数以及音频采样点格式中的一项或多项。在实际采集过程中,可以设定音频数据采集参数如下:音频采样率,sample_rate=48000;音频声道数,channel_num=1;音频采样点格式,AUDIO_FORMAT=AudioFormat.ENCODING_PCM_16BIT。需要说明的是,上述示意仅是举例,本发明并不限于此。在本发明一实施例中,步骤S13中将非固定帧率的视频数据处理成固定帧率的视频数据,并对固定帧率的视频数据进行编码,本发明实施例提供了一种可选的方案,该方案包括如下步骤A1-A4。步骤A1,调用移动终端上的视频数据编码函数。步骤A2,在视频数据采集器根据视频数据采集参数对当前现场进行视频数据的采集时,启动计时器开始计时,视频数据采集器每采集一帧视频数据就传送给视频数据编码函数。在该步骤中,视频数据采集器可以是移动终端上自带的摄像头,摄像头对录制的视频数据进行编号。在视频数据采集时,录制帧率范围设置为[0,30],实际摄像头录制视频的帧率规律是:(1),当录制的画面光线正常,画面有正常的变化,这时录制的帧率是30帧每秒;(2),当录制的画面光线很暗,并且画面基本没有变化,这时录制的帧率是13帧左右每秒。步骤A3,当计时器到达指定时长时,判断视频数据编码函数接收的视频数据的总帧数是否为固定帧率对应的帧数,若是,则继续执行步骤A4。在该步骤中,指定时长可以设置为1秒,固定帧率对应的帧数可以为25帧。也就是说,当监测到计时器到达1秒时,判断视频数据编码函数接收的视频数据的总帧数是否为25帧。步骤A4,由视频数据编码函数对接收的总帧数的视频数据进行编码,并重新开始计时。在该步骤中,若视频数据编码函数接收的视频数据的总帧数为25帧,则由视频数据编码函数对接收的总帧数(25帧)的视频数据进行编码,并重新开始计时,返回执行步骤A2。进一步地,当计时器到达指定时长时,若判断出视频数据编码函数接收的总帧数大于固定帧率对应的帧数,则从视频数据编码函数接收的总帧数的视频数据中丢弃超出固定帧率对应的帧数的视频数据,由视频数据编码函数对剩余的视频数据进行编码,并重新开始计时。以上述举例为例,当监测到计时器到达1秒时,判断出视频数据编码函数接收的视频数据的总帧数大于25帧,假设为28帧,则从视频数据编码函数接收的总帧数(28帧)的视频数据中丢弃超出固定帧率对应的帧数(25帧)的视频数据,即丢弃超出3帧的视频数据,由视频数据编码函数对剩余的视频数据(25帧的视频数据)进行编码,并重新开始计时,返回执行步骤A2。进一步地,当计时器到达指定时长时,若判断出视频数据编码函数接收的总帧数小于固定帧率对应的帧数,则将计时器到达指定时长时视频数据采集器最后一次传送的一帧视频数据不断地传送给视频数据编码函数,直至视频数据编码函数接收的总帧数等于固定帧率对应的帧数;当视频数据编码函数接收的总帧数等于固定帧率对应的帧数时,由视频数据编码函数对接收的总帧数的视频数据进行编码,并重新开始计时。以上述举例为例,当监测到计时器到达1秒时,判断出视频数据编码函数接收的视频数据的总帧数小于25帧,假设为23帧,则将计时器到达1秒时视频数据采集器最后一次传送的一帧视频数据不断地传送给视频数据编码函数,直至视频数据编码函数接收的总帧数等于固定帧率对应的帧数(25帧);当视频数据编码函数接收的总帧数等于固定帧率对应的帧数(25帧)时,由视频数据编码函数对接收的总帧数的视频数据进行编码,并重新开始计时,返回执行步骤A2。进一步地,在对视频帧数据进行实际编码时,可以将视频帧数据编码成h264标准的视频流,视频编码参数可以按照如下设置:视频宽度,width=640;视频高度,height=480;视频码率,bitrate=800000(800k,采样较低的码率从而控制视频的数据量更小);视频帧率,framerate=25;I帧间隔,key_I_frame_interval=50。需要说明的是,上述示意仅是举例,本发明并不限于此。在本发明一实施例中,为了提高编码的准确性和效率,在视频数据采集器每采集一帧视频数据就传送给视频数据编码函数的过程中,丢弃指定帧的视频数据,该指定帧为第六帧。在本发明一实施例中,上述编码方式可以采用如下算法来实现:a,对录制的视频数据进行计数编号no;If(no%6==0)丢弃该视频帧Else送视频帧给编码器(即,视频数据编码函数)b,启动1秒计时器,记录计时器相应的次数respond_no,累计送给编码器的视频帧数;encoded_norespond_no*25为输出视频需要的帧数设帧数误差为missframe_nomissframe_no=respond_no*25–encoded_noif(missframe_no>0){编码完成的帧数小于实际需要的帧数,这时需要增加视频帧,就是把同一个未编码的视频帧拷贝多份给编码器
再多了解一些
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1