CN109168021A - 一种推流的方法及装置 - Google Patents

一种推流的方法及装置 Download PDF

Info

Publication number
CN109168021A
CN109168021A CN201811251707.4A CN201811251707A CN109168021A CN 109168021 A CN109168021 A CN 109168021A CN 201811251707 A CN201811251707 A CN 201811251707A CN 109168021 A CN109168021 A CN 109168021A
Authority
CN
China
Prior art keywords
softcam
video file
buffer area
sent
application program
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.)
Granted
Application number
CN201811251707.4A
Other languages
English (en)
Other versions
CN109168021B (zh
Inventor
肖扬
方彬浩
陈炳锐
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Comba Network Systems Co Ltd
Original Assignee
Comba Telecom Technology Guangzhou Ltd
Comba Telecom Systems China Ltd
Comba Telecom Systems Guangzhou Co Ltd
Tianjin Comba Telecom Systems Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Comba Telecom Technology Guangzhou Ltd, Comba Telecom Systems China Ltd, Comba Telecom Systems Guangzhou Co Ltd, Tianjin Comba Telecom Systems Co Ltd filed Critical Comba Telecom Technology Guangzhou Ltd
Priority to CN201811251707.4A priority Critical patent/CN109168021B/zh
Publication of CN109168021A publication Critical patent/CN109168021A/zh
Application granted granted Critical
Publication of CN109168021B publication Critical patent/CN109168021B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/21Server components or server architectures
    • H04N21/218Source of audio or video content, e.g. local disk arrays
    • H04N21/2187Live feed
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/41Structure of client; Structure of client peripherals
    • H04N21/4104Peripherals receiving signals from specially adapted client devices
    • H04N21/4126The peripheral being portable, e.g. PDAs or mobile phones
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/44004Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving video buffer management, e.g. video decoder buffer or video display buffer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/65Transmission of management data between client and server
    • H04N21/658Transmission by the client directed to the server
    • H04N21/6587Control parameters, e.g. trick play commands, viewpoint selection

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Databases & Information Systems (AREA)
  • Studio Devices (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

本发明公开了一种推流的方法及装置,所述方法包括:终端根据预先配置的摄像头的数量,启动对应数量的虚拟摄像头;将获取的每个虚拟摄像头的分辨率配置到对应的虚拟摄像头,使每个虚拟摄像头创建对应的缓冲区;获取每个虚拟摄像头缓冲区的写入地址,将本地缓存的对应视频文件写入到对应的缓冲区,通过每个虚拟摄像头从自身对应的缓冲区读取写入的视频文件进行播放;这样既可以推送本地缓存的视频文件,又不需要复杂的推流配置操作,可以极大地满足人们想要将终端本地缓存的视频文件推流出去的需求。

Description

一种推流的方法及装置
技术领域
本发明涉及推流技术领域,尤其涉及一种推流的方法及装置。
背景技术
如今,直播已成为一项比较热门的活动。人们经常将终端摄像头实时采集的视频文件通过直播平台进行网上直播。直播只是推流的一小部分。在实际生活中,人们利用终端直播视频文件有局限性,比如直播只能播放摄像头实时采集的视频文件。
终端中不仅有摄像头实时采集的视频文件,可能还会有缓存在本地的视频文件,这些视频文件可能是其他的设备传输给终端的,如果终端需要将本地保存的视频文件推送出去,必须通过非专业人员难以理解的推流配置操作,将该视频文件推到各自的私有云服务器,才能播放该视频文件,但这种方法满足不了人们想要将终端本地缓存的视频文件推送出去的需求。然而,如何满足人们想要将终端本地缓存的视频文件推送出去的需求,现有技术中没有相应的技术方案。
发明内容
本发明实施例提供了一种推流的方法及装置,用以满足人们想要将终端本地缓存的视频文件推送出去的需求。
本发明实施例提供了一种推流的方法,所述方法包括:
终端根据预先配置的摄像头的数量,启动对应数量的虚拟摄像头;
将获取的每个虚拟摄像头的分辨率配置到对应的虚拟摄像头,使每个虚拟摄像头创建对应的缓冲区;
获取每个虚拟摄像头缓冲区的写入地址,将本地缓存的对应视频文件写入到对应的缓冲区,通过每个虚拟摄像头从自身对应的缓冲区读取写入的视频文件进行播放。
进一步地,其中每个虚拟摄像头在内核空间的内存中创建缓冲区,所述每个虚拟摄像头创建对应的缓冲区之后,所述方法还包括:
将在内核空间的每个缓冲区分别映射到用户空间。
进一步地,所述每个虚拟摄像头创建的缓冲区的大小是根据自身配置的分辨率及预设数量的视频帧确定的。
进一步地,所述本地缓存的对应视频文件包括其他设备从视频传输接口传输给所述终端之后缓存的和/或所述终端自身录制并缓存的。
进一步地,所述视频传输接口包括WIFI接口、USB接口、高清晰度多媒体HDMI接口。
进一步地,所述通过每个虚拟摄像头从自身对应的缓冲区读取写入的视频文件进行播放包括:
通过每个虚拟摄像头从自身对应的缓冲区读取写入的视频文件发送到直播平台,通过该直播平台进行播放;或,
通过每个虚拟摄像头从自身对应的缓冲区读取写入的视频文件发送到相机应用程序,通过该相机应用程序进行播放。
进一步地,所述通过每个虚拟摄像头从自身对应的缓冲区读取写入的视频文件发送到直播平台包括:
通过虚拟摄像头将自身对应的缓冲区读取写入的视频文件,发送到虚拟摄像头驱动;
通过虚拟摄像头驱动将读取的视频文件发送给与直播平台对应的应用程序,通过所述应用程序发送到直播平台。
进一步地,所述通过每个虚拟摄像头从自身对应的缓冲区读取写入的视频文件发送到直播平台包括:
当存在多个虚拟摄像头时,所述应用程序按照设定的分屏模式,分屏显示从每个虚拟摄像头读取的视频文件。
本发明实施例提供了一种推流的装置,所述装置包括:
启动模块,用于根据预先配置的摄像头的数量,启动对应数量的虚拟摄像头;
配置模块,用于将获取的每个虚拟摄像头的分辨率配置到对应的虚拟摄像头,使每个虚拟摄像头创建对应的缓冲区;
推流模块,用于获取每个虚拟摄像头缓冲区的写入地址,将本地缓存的对应视频文件写入到对应的缓冲区,通过每个虚拟摄像头从自身对应的缓冲区读取写入的视频文件进行播放。
进一步地,所述装置还包括:
映射模块,用于如果每个虚拟摄像头在内核空间的内存中创建缓冲区时,将在内核空间的每个缓冲区分别映射到用户空间。
进一步地,所述推流模块,具体用于通过每个虚拟摄像头从自身对应的缓冲区读取写入的视频文件发送到直播平台,通过该直播平台进行播放;或,
通过每个虚拟摄像头从自身对应的缓冲区读取写入的视频文件发送到相机应用程序,通过该相机应用程序进行播放。
进一步地,所述推流模块,具体用于通过虚拟摄像头将自身对应的缓冲区读取写入的视频文件,发送到虚拟摄像头驱动;通过虚拟摄像头驱动将读取的视频文件发送给与直播平台对应的应用程序,通过所述应用程序发送到直播平台。
进一步地,所述推流模块,具体用于当存在多个虚拟摄像头时,所述应用程序按照设定的分屏模式,分屏显示每个虚拟摄像头读取的视频文件。
本发明实施例提供了一种推流的方法及装置,所述方法包括:终端根据预先配置的摄像头的数量,启动对应数量的虚拟摄像头;将获取的每个虚拟摄像头的分辨率配置到对应的虚拟摄像头,使每个虚拟摄像头创建对应的缓冲区;获取每个虚拟摄像头缓冲区的写入地址,将本地缓存的对应视频文件写入到对应的缓冲区,通过每个虚拟摄像头从自身对应的缓冲区读取写入的视频文件进行播放。
由于本发明实施例中终端创建虚拟摄像头,并将待直播的视频文件写入到摄像头对应的缓冲区,从而将缓冲区中的视频文件进行播放,这样既可以推流本地缓存的视频文件,又不需要复杂的推流配置操作,可以极大地满足人们想要将终端本地缓存的视频文件推送出去的需求。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例1提供的一种推流的方法流程图;
图2为本发明实施例5提供的一种虚拟摄像头系统的构架图;
图3为本发明实施例5提供的一种推流的方法流程图;
图4为本发明实施例7提供的一种推流装置的结构示意图。
具体实施方式
下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
实施例1:
图1为本发明实施例提供的一种推流的方法流程图,如图1所示,所述方法包括:
S101:终端根据预先配置的摄像头的数量,启动对应数量的虚拟摄像头。
本发明实施例提供的该方法适用于终端,终端可以是专业的推流设备,也可以是常见的智能终端,如手机、电脑等设备。在实际生活中,绝大部分人使用的终端的操作系统为Android系统,且现在流行的视频直播APP大多也都是基于Android系统的,再加之Android系统是基于Linux内核的操作系统,为了减少研发人员的研发成本,保留终端中原有的Android系统框架,本发明实施例可以在Linux系统的内核层创建虚拟摄像头。
具体的该方法应用于终端中的推流应用程序,虚拟摄像头的数量可以是人们通过终端上推流应用程序的配置页面进行配置的,具体的数量可以根据推流的数量来决定,即需要推送几个视频文件,则设置几个虚拟摄像头。其中,为了更好地创建并启动虚拟摄像头,该推流应用程序可以是研发人员根据实际情况在Linux下的V4L2的框架中应用层创建的,其中V4L2框架是针对UVC(USB video class,USB视频捕获设备定义的协议标准)免去USB设备的编程框架。
推流应用程序被启动后,可以根据预先配置的摄像头的数量,启动对应数量的虚拟摄像头,以便于后续操作。
S102:将获取的每个虚拟摄像头的分辨率配置到对应的虚拟摄像头,使每个虚拟摄像头创建对应的缓冲区。
上述启动的虚拟摄像头相当于一个视频文件发生器,可以将本地缓存的视频文件进行播放,这相当于本地缓存的视频文件是由虚拟摄像头录制产生后进行播放,因此,每个虚拟摄像头需要在Linux系统的内核空间创建对应的缓冲区,以便于将本地缓存的待推流的视频文件写入到该缓冲区。
为了合理利用Linux系统的内核空间,推流应用程序可以通过视频传输接口获取每个视频文件的分辨率信息,并将每个视频文件的分辨率信息分别配置到不同的虚拟摄像头,将获取到的每个虚拟摄像头的分辨率配置到对应的虚拟摄像头,以使每个虚拟摄像头可以根据自身配置的分辨率在Linux系统的内核空间申请与该分辨率匹配的内存空间作为对应的缓冲区,用以存放本地缓存的视频文件。
S103:获取每个虚拟摄像头缓冲区的写入地址,将本地缓存的对应视频文件写入到对应的缓冲区,通过每个虚拟摄像头从自身对应的缓冲区读取写入的视频文件进行播放。
创建了每个缓冲区后,从而可以获取到每个缓冲区的写入地址,因此,需要获取到每个虚拟摄像头缓冲区的写入地址,通过该写入地址,将本地缓存的对应的视频文件写入到对应的虚拟摄像头缓冲区,具体地,可以通过Linux下的内存映射方法获取到每个虚拟摄像头缓冲区的写入地址,当在每个虚拟摄像头的缓冲区中写入视频文件后,该视频文件可以认为是虚拟摄像头采集的实时视频文件,因此可以通过每个虚拟摄像头从自身对应的缓冲区读取写入的视频文件的数据进行播放。
由于本发明实施例中终端创建虚拟摄像头,并将待直播的视频文件写入到摄像头对应的缓冲区,从而将缓冲区中的视频文件进行播放,这样既可以推送本地缓存的视频文件,又不需要复杂的推流配置操作,可以极大地满足人们想要将终端本地缓存的视频文件推送出去的需求。
实施例2:
为了更加准确地将本地缓存的视频文件写入到对应的缓冲区,在上述实施例1的基础上,其中每个虚拟摄像头在内核空间的内存中创建缓冲区,所述每个虚拟摄像头创建对应的缓冲区之后,所述方法还包括:
将在内核空间的每个缓冲区分别映射到用户空间。
所述每个虚拟摄像头创建的缓冲区的大小是根据自身配置的分辨率及预设的视频帧率确定的。
由于本地缓存的视频文件常常保存在终端的用户空间,每个虚拟摄像头对应的缓冲区位于Linux系统的内核空间,但该用户空间与该内核空间不是同一个存储空间,为了可以通过虚拟摄像头向直播平台发送本地缓存的视频文件,则需要在该用户空间和该内核空间之间传送视频文件,具体地,需要将存储在用户空间的视频文件写入到对应的缓冲区内。
为了将该视频文件准确地写入到对应的缓冲区,上述的推流应用程序可以将在内核空间的每个缓冲区分别映射到用户空间,较佳地,该推流应用程序可以通过一个文件或者其它对象映射进内存方式,即mmap方式将在内核空间的每个缓冲区分别映射到用户空间,这样可免去用户空间和内核空间之间互相拷贝视频文件的步骤,提高了视频文件的传送效率,保证了视频文件流畅传送。
具体地,由于每个虚拟摄像头在被创建的时候都会生成/dev/video的节点,终端上的推流应用程序可以使用该节点,通过mmap方式将每个虚拟摄像头的缓冲区分别映射到用户空间,进而得到虚拟摄像头的对应的缓冲区的写入地址。
另外,为了合理规划缓冲区在内核空间占用的内存资源,每个虚拟摄像头创建的缓冲区的大小是根据自身配置的分辨率及预设的视频帧率确定的,该视频帧率可以是用户在推流应用程序的配置页面预先设置的,缓冲区的大小一般为5帧视频数据的大小。这样,缓冲区可以存放本地缓存的视频文件,又不会造成内核空间的内存资源浪费。
由于本发明实施例中每个虚拟摄像头创建对应的缓冲区之后,将在内核空间的每个缓冲区分别映射到用户空间,这样便于更加准确地将本地缓存的视频文件写入到对应的缓冲区,方便后续操作。
实施例3:
为了更大程度地满足用户想要推送从更多途径得到的视频文件,在上述各个实施例的基础上,所述本地缓存的对应视频文件包括其他设备从视频传输接口传输给所述终端之后缓存的和/或所述终端自身录制并保存的。
所述视频传输接口包括wifi接口、USB接口、高清晰度多媒体HDMI接口。
为了更大程度地满足用户想要推送,特别是直播从更多途径得到的视频文件,该视频文件可以是终端从其他设备上获得并缓存的,具体地,终端可以通过不同的视频传输接口从其他设备上获得该视频文件,并将该视频文件缓存到本地;也可以是终端通过自身安装的APP下载并缓存的,具体地,该APP是可观看视频的APP。其中,该视频传输接口丰富,例如可以是wifi接口、HDMI接口、USB接口、数字视频DVI接口、基本网络卡BNC接口等。此外,该视频文件也可以是终端通过自身携带的摄像头录制并缓存的。
由于本发明实施例中终端本地缓存的对应视频文件为其他设备从多个类型的视频传输接口传输给该终端之后缓存的,这样可以更大程度地满足用户想要推送从更多途径得到的视频文件。
实施例4:
为了进一步满足用户将终端本地缓存的视频文件推送出去的需求,在上述各个实施例的基础上,所述通过每个虚拟摄像头从自身对应的缓冲区读取写入的视频文件进行播放包括:
通过每个虚拟摄像头从自身对应的缓冲区读取写入的视频文件发送到直播平台,通过该直播平台进行播放;或,
通过每个虚拟摄像头从自身对应的缓冲区读取写入的视频文件发送到相机应用程序,通过该相机应用程序进行播放。
为了进一步满足用户将终端本地缓存的视频文件推送出去的需求,在上述各个实施例的基础上,本发明实施例中提供了通过每个虚拟摄像头从自身对应的缓冲区读取写入的视频文件进行播放的方式,该方式可以是通过每个虚拟摄像头从自身对应的缓冲区读取写入的视频文件发送到直播平台,通过该直播平台进行播放,该直播平台可以是当下热门的直播平台,比如虎牙、斗鱼、花椒等直播平台;也可以是通过每个虚拟摄像头从自身对应的缓冲区读取写入的视频文件发送到相机应用程序,通过该相机应用程序进行播放,该相机应用程序是终端自身携带的,这样可以使得用户可以通过该相机应用程序观看动态的视频文件,而不是简单的静态图片。
由于本发明实施例中可以通过每个虚拟摄像头从自身对应的缓冲区读取写入的视频文件发送到直播平台,通过该直播平台进行播放;也可以通过每个虚拟摄像头从自身对应的缓冲区读取写入的视频文件发送到相机应用程序,通过该相机应用程序进行播放,进一步满足了用户将终端本地缓存的视频文件推送出去的需求。
实施例5:
为了使虚拟摄像头可以更加方便高效地将本地缓存的视频文件发送到直播平台,在上述各个实施例的基础上,所述通过每个虚拟摄像头从自身对应的缓冲区读取写入的视频文件发送到直播平台包括:
通过虚拟摄像头将自身对应的缓冲区读取写入的视频文件,发送到虚拟摄像头驱动;
通过虚拟摄像头驱动将读取的视频文件发送给与直播平台对应的应用程序,通过所述应用程序发送到直播平台。
为了使虚拟摄像头可以更加方便高效地将本地缓存的视频文件发送到直播平台,本发明实施例通过虚拟摄像头将本地缓存的视频文件传给终端上的直播平台对应的应用程序,通过该应用程序将该视频文件发送到对应的直播平台,具体的过程为:通过虚拟摄像头将每个虚拟摄像头对应的缓冲区读取写入的视频文件,发送到虚拟摄像头驱动;通过虚拟摄像头驱动将读取的视频文件发送给与直播平台对应的应用程序,通过所述应用程序发送到直播平台,其中,该应用程序可以是APP。
为了实现Android系统中对摄像头的所有操作,上述的与直播平台对应的应用程序可以像使用真实的摄像头一样使用虚拟摄像头,这是由于上述的虚拟摄像头驱动是按照Linux系统下的V4L2的框架创建的,该虚拟摄像头驱动用于与Android摄像头的硬件抽象层对接,能够实现Android对摄像头的所有操作,包括对摄像头枚举、能力查询、数据获取和释放、视频播放和暂停、设置获取帧率和分辨率等接口。这样对于Android系统的终端来说,与直播平台对应的应用程序如APP可以不用修改代码,像操作实际摄像头一样操作虚拟摄像头。
上述的虚拟摄像头驱动可以根据帧率定时地从虚拟摄像头获取本地缓存的视频文件,并通过与直播平台对应的应用程序发送视频文件至直播平台,具体的步骤为现有技术,在此不再赘述。
下面通过一个具体的实施例对本发明进行详细说明。在上述各个实施例的基础上,可以在终端建立一个虚拟摄像头系统,该系统的构架如图2所示,该系统架构中包括:视频传输接口、推流应用程序、n个虚拟摄像头及其对应的缓冲区的写入地址、虚拟摄像头驱动、Hardware Abstraction Layer即硬件抽象层、Application Framework即应用框架、与直播平台对应的应用程序。
硬件抽象层包含对硬件的操作,虚拟摄像头驱动实现硬件抽象层有关对于视频文件操作的所有接口,而虚拟摄像头驱动是直接依赖linux内核的;Application Framework包含应用层的APP所需要的API接口,主要服务于APP,它们之间的层次关系如图2所示。
下面结合图2,对使用虚拟摄像头进行视频直播的方法进行详细说明,具体过程参见图3。
S301:终端加载虚拟摄像头驱动,启动对应数量的虚拟摄像头。
由于终端被启动后是没有虚拟摄像头的,因此,需要在终端启动后,加载虚拟摄像头驱动,并根据用户预先通过推流应用程序配置的摄像头的数量,开启对应数量的虚拟摄像头。
S302:获取每个视频文件的分辨率和帧率。
视频传输接口可以接收其它设备发送的每个视频文件,并发送给推流应用程序,推流应用程序接收到视频传输接口发送的每个视频文件后,获取每个视频文件的分辨率和帧率信息。
S303:将获取的每个视频文件的分辨率配置到对应的虚拟摄像头,使每个虚拟摄像头创建对应的缓冲区。
推流应用程序再将获取的每个视频文件的分辨率和帧率配置到对应的虚拟摄像头,使每个虚拟摄像头根据自身配置的分辨率信息在Linux内核空间创建对应的缓冲区,其中,该虚拟摄像头是根据预先配置的数量创建并启动的,该数量是用户在推流应用程序中配置页面上设置的。
S304:将该缓冲区映射到用户空间,获取每个虚拟摄像头缓冲区的写入地址。
由于终端通过视频传输接口获取的视频文件一般默认缓存到用户空间,用户要想通过虚拟摄像头实现直播本地缓存的视频文件,需要将虚拟摄像头对应的缓冲区映射到用户空间,具体地,推流应用程序通过mmap的方式将内核空间的每个缓冲区分别映射到用户空间,并获取每个虚拟摄像头缓冲区的写入地址。
S305:将本地缓存的对应视频文件写入到对应的缓冲区。
为了更好地直播用户想要的视频文件,用户可以通过推流应用程序选择想要直播的视频文件,该视频文件包括其他设备从视频传输接口传输给所述终端之后缓存的,该视频传输接口可以是wifi、USB、HDMI等接口。
推流应用程序可以将本地缓存的对应视频文件通过每个虚拟摄像头缓冲区的写入地址,写入到对应的缓冲区。
S306:通过直播平台对应的应用程序将该视频文件发送到直播平台。
基于上述的步骤,虚拟摄像头的初始化过程已完成。虚拟摄像头可以将自身对应的缓冲区根据读取写入的视频文件,发送到虚拟摄像头驱动,具体地,可以根据自身配置的帧率产生视频文件对应的视频帧数据,并按照设定的时间将该视频帧数据发送给虚拟摄像头驱动;通过虚拟摄像头驱动将读取的视频文件发送给与直播平台对应的应用程序,通过所述应用程序发送到直播平台,具体地,虚拟摄像头驱动通过摄像头的硬件抽象层、应用框架将读取的视频文件发送给该应用程序,详细的发送过程实现有技术,在此不再赘述。
由于本发明实施例中通过虚拟摄像头将自身对应的缓冲区读取写入的视频文件,发送到虚拟摄像头驱动;通过虚拟摄像头驱动将读取的视频文件发送给与直播平台对应的应用程序,通过该应用程序发送到直播平台,这样可以使虚拟摄像头可以更加方便高效地将本地缓存的视频文件发送到直播平台。
实施例6:
为了可以为同时直播多个视频提供便利条件,在上述各个实施例的基础上,所述通过每个虚拟摄像头从自身对应的缓冲区读取写入的视频文件发送到直播平台包括:
当存在多个虚拟摄像头时,所述应用程序按照设定的分屏模式,分屏显示每个虚拟摄像头读取的视频文件。
在上述实施例的基础上,如果存在多个虚拟摄像头,为了看方便用户同时观看或直播多个视频,用户可以通过应用程序上设定分屏模式,并按照该分屏模式,分屏显示每个虚拟摄像头读取的视频文件。用户可以通过应用程序在虚拟摄像头驱动中选择拼屏显示,即将多个虚拟摄像头推送给该虚拟摄像头驱动的视频文件拼接在一起,再发送给摄像头的硬件抽象层。具体地,用户可以通过应用程序在虚拟摄像头驱动中设置拼屏显示,即将多个虚拟摄像头的视频文件按一定的规则缩小,重新组成一帧视频帧数据,然后再将重新组合的视频帧推送给上一层的硬件抽象层,拼屏模式一般有4屏拼接和9屏拼接。
另外,为了使用户可以更加随意地调节视频文件的显示屏幕,可以在终端本地缓存的视频文件对应的视频帧数据中的指定地址填充OSD(on-screen display,屏幕菜单式调节方式)信息,该OSD信息可以是用户通过推流应用程序指定的,这样虚拟摄像头可以支持OSD等常用操作。
由于对于基于Android系统的APP而言,每个摄像头对应一个摄像头ID,因此,可以在推流直播的过程中,用户可以通过应用程序指定不同的摄像头ID,以达到快速在各个虚拟摄像头或者真实的摄像头之间进行切换,实现导播控制的功能。
为了在不修改Android系统框架的前提下,本发明实施例使用与直播平台对应的应用程序进行推流直播,在Linux的内核层设计了一个虚拟的摄像头和虚拟的音频采集设备,因此,对于基于Android系统的应用程序而言,如果使用摄像头只需要枚举获取摄像头的ID,就可以获取想要直播的视频文件,该处不同的ID对应的不同的摄像头,至于视频文件的声音,Android系统的应用程序获取声音的方式实际上是通过操作对应的声卡获取的。
由于本发明实施例中当存在多个虚拟摄像头时,所述应用程序按照设定的分屏模式,分屏显示每个虚拟摄像头读取的视频文件,这样可以为同时直播多个视频提供便利条件。
实施例7:
在上述各个实施例的基础上,本发明实施例提供了一种推流的装置,如图4所示,所述装置包括:
启动模块401,用于根据预先配置的摄像头的数量,启动对应数量的虚拟摄像头;
配置模块402,用于将获取的每个虚拟摄像头的分辨率配置到对应的虚拟摄像头,使每个虚拟摄像头创建对应的缓冲区;
推流模块403,用于获取每个虚拟摄像头缓冲区的写入地址,将本地缓存的对应视频文件写入到对应的缓冲区,通过每个虚拟摄像头从自身对应的缓冲区读取写入的视频文件进行播放。
进一步地,所述装置还包括:
映射模块,用于如果每个虚拟摄像头在内核空间的内存中创建缓冲区时,将在内核空间的每个缓冲区分别映射到用户空间。
所述推流模块,具体用于通过每个虚拟摄像头从自身对应的缓冲区读取写入的视频文件发送到直播平台,通过该直播平台进行播放;或,
通过每个虚拟摄像头从自身对应的缓冲区读取写入的视频文件发送到相机应用程序,通过该相机应用程序进行播放。
进一步地,所述推流模块,具体用于通过虚拟摄像头将自身对应的缓冲区读取写入的视频文件,发送到虚拟摄像头驱动;通过虚拟摄像头驱动将读取的视频文件发送给与直播平台对应的应用程序,通过所述应用程序发送到直播平台。
进一步地,所述推流模块,具体用于当存在多个虚拟摄像头时,所述应用程序按照设定的分屏模式,分屏显示每个虚拟摄像头读取的视频文件。
由于本发明实施例中启动模块401,用于根据预先配置的摄像头的数量,启动对应数量的虚拟摄像头;配置模块402,用于将获取的每个虚拟摄像头的分辨率配置到对应的虚拟摄像头,使每个虚拟摄像头创建对应的缓冲区;推流模块403,用于获取每个虚拟摄像头缓冲区的写入地址,将本地缓存的对应视频文件写入到对应的缓冲区,通过每个虚拟摄像头从自身对应的缓冲区读取写入的视频文件进行播放,这样既可以推送本地缓存的视频文件,又不需要复杂的推流配置操作,可以极大地满足人们想要将终端本地缓存的视频文件推送出去的需求。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (13)

1.一种推流的方法,其特征在于,所述方法包括:
终端根据预先配置的摄像头的数量,启动对应数量的虚拟摄像头;
将获取的每个虚拟摄像头的分辨率配置到对应的虚拟摄像头,使每个虚拟摄像头创建对应的缓冲区;
获取每个虚拟摄像头缓冲区的写入地址,将本地缓存的对应视频文件写入到对应的缓冲区,通过每个虚拟摄像头从自身对应的缓冲区读取写入的视频文件进行播放。
2.如权利要求1所述的方法,其特征在于,其中每个虚拟摄像头在内核空间的内存中创建缓冲区,所述每个虚拟摄像头创建对应的缓冲区之后,所述方法还包括:
将在内核空间的每个缓冲区分别映射到用户空间。
3.如权利要求1所述的方法,其特征在于,所述每个虚拟摄像头创建的缓冲区的大小是根据自身配置的分辨率及预设的视频帧率确定的。
4.如权利要求1所述的方法,其特征在于,所述本地缓存的对应视频文件包括其他设备从视频传输接口传输给所述终端之后缓存的和/或所述终端自身录制并缓存的。
5.如权利要求4所述的方法,其特征在于,所述视频传输接口包括WIFI接口、USB接口、高清晰度多媒体HDMI接口。
6.如权利要求1所述的方法,其特征在于,所述通过每个虚拟摄像头从自身对应的缓冲区读取写入的视频文件进行播放包括:
通过每个虚拟摄像头从自身对应的缓冲区读取写入的视频文件发送到直播平台,通过该直播平台进行播放;或,
通过每个虚拟摄像头从自身对应的缓冲区读取写入的视频文件发送到相机应用程序,通过相机应用程序进行播放。
7.如权利要求6所述的方法,其特征在于,所述通过每个虚拟摄像头从自身对应的缓冲区读取写入的视频文件发送到直播平台包括:
通过虚拟摄像头将自身对应的缓冲区读取写入的视频文件,发送到虚拟摄像头驱动;
通过虚拟摄像头驱动将读取的视频文件发送给与直播平台对应的应用程序,通过所述应用程序发送到直播平台。
8.如权利要求7所述的方法,其特征在于,所述通过每个虚拟摄像头从自身对应的缓冲区读取写入的视频文件发送到直播平台包括:
当存在多个虚拟摄像头时,所述应用程序按照设定的分屏模式,分屏显示从每个虚拟摄像头读取的视频文件。
9.一种推流的装置,其特征在于,所述装置包括:
启动模块,用于根据预先配置的摄像头的数量,启动对应数量的虚拟摄像头;
配置模块,用于将获取的每个虚拟摄像头的分辨率配置到对应的虚拟摄像头,使每个虚拟摄像头创建对应的缓冲区;
推流模块,用于获取每个虚拟摄像头缓冲区的写入地址,将本地缓存的对应视频文件写入到对应的缓冲区,通过每个虚拟摄像头从自身对应的缓冲区读取写入的视频文件进行播放。
10.如权利要求9所述的装置,其特征在于,所述装置还包括:
映射模块,用于如果每个虚拟摄像头在内核空间的内存中创建缓冲区时,将在内核空间的每个缓冲区分别映射到用户空间。
11.如权利要求9所述的装置,其特征在于,所述推流模块,具体用于通过每个虚拟摄像头从自身对应的缓冲区读取写入的视频文件发送到直播平台,通过该直播平台进行播放;或,
通过每个虚拟摄像头从自身对应的缓冲区读取写入的视频文件发送到相机应用程序,通过该相机应用程序进行播放。
12.如权利要求11所述的装置,其特征在于,所述推流模块,具体用于通过虚拟摄像头将自身对应的缓冲区读取写入的视频文件,发送到虚拟摄像头驱动;通过虚拟摄像头驱动将读取的视频文件发送给与直播平台对应的应用程序,通过所述应用程序发送到直播平台。
13.如权利要求12所述的装置,其特征在于,所述推流模块,具体用于当存在多个虚拟摄像头时,所述应用程序按照设定的分屏模式,分屏显示每个虚拟摄像头读取的视频文件。
CN201811251707.4A 2018-10-25 2018-10-25 一种推流的方法及装置 Active CN109168021B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811251707.4A CN109168021B (zh) 2018-10-25 2018-10-25 一种推流的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811251707.4A CN109168021B (zh) 2018-10-25 2018-10-25 一种推流的方法及装置

Publications (2)

Publication Number Publication Date
CN109168021A true CN109168021A (zh) 2019-01-08
CN109168021B CN109168021B (zh) 2021-03-19

Family

ID=64875371

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811251707.4A Active CN109168021B (zh) 2018-10-25 2018-10-25 一种推流的方法及装置

Country Status (1)

Country Link
CN (1) CN109168021B (zh)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109889875A (zh) * 2019-01-23 2019-06-14 北京奇艺世纪科技有限公司 通信方法、装置、终端设备和计算机可读介质
CN112804459A (zh) * 2021-01-12 2021-05-14 杭州星犀科技有限公司 基于虚拟摄像头的图像展示方法、装置、存储介质及电子设备
CN112804460A (zh) * 2021-01-12 2021-05-14 杭州星犀科技有限公司 基于虚拟摄像头的图像处理方法、装置、存储介质及电子设备
CN113596495A (zh) * 2021-07-28 2021-11-02 广州方硅信息技术有限公司 直播推流处理方法及其装置、设备与介质
CN113784075A (zh) * 2021-09-28 2021-12-10 统信软件技术有限公司 一种屏幕录像读取方法、系统及计算设备
CN114257831A (zh) * 2021-12-21 2022-03-29 广州播丫科技有限公司 一种多路虚拟视频源的接入管理系统及方法
CN114302199A (zh) * 2021-06-09 2022-04-08 海信视像科技股份有限公司 显示设备和数据共享方法
WO2022217416A1 (zh) * 2021-04-12 2022-10-20 苏州思萃人工智能研究所有限公司 手机多机位可切换虚拟摄像头
CN116708867A (zh) * 2023-08-07 2023-09-05 深圳市亿晟科技有限公司 一种直播数据处理方法、装置、设备及存储介质
CN117014673A (zh) * 2023-08-07 2023-11-07 深圳市九鼎创展科技有限公司 一种导播机用核心板及导播系统
CN117255245A (zh) * 2023-11-17 2023-12-19 深圳市法本信息技术股份有限公司 摄像头匹配方法、装置、终端设备以及存储介质
EP4228244A4 (en) * 2020-11-20 2024-05-01 Huawei Technologies Co., Ltd. VIDEO PROCESSING METHOD AND APPARATUS, AND STORAGE MEDIUM

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009000313A (ja) * 2007-06-21 2009-01-08 Namco Bandai Games Inc プログラム、情報記憶媒体、ゲーム機及びゲームシステム
CN101714956A (zh) * 2009-10-29 2010-05-26 北京中星微电子有限公司 一种虚拟视频系统、视频文件远程共享系统和方法
CN103841432A (zh) * 2012-11-26 2014-06-04 浙江大华技术股份有限公司 一种复合视频数据的传输方法和设备
CN104580887A (zh) * 2014-12-17 2015-04-29 深圳市比维视创科技有限公司 一种终端摄像模组图像分辨率扩展的方法、装置以及终端
CN105391985A (zh) * 2015-12-07 2016-03-09 哈尔滨工业大学深圳研究生院 一种基于嵌入式Linux的视频监控系统与方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009000313A (ja) * 2007-06-21 2009-01-08 Namco Bandai Games Inc プログラム、情報記憶媒体、ゲーム機及びゲームシステム
CN101714956A (zh) * 2009-10-29 2010-05-26 北京中星微电子有限公司 一种虚拟视频系统、视频文件远程共享系统和方法
CN103841432A (zh) * 2012-11-26 2014-06-04 浙江大华技术股份有限公司 一种复合视频数据的传输方法和设备
CN104580887A (zh) * 2014-12-17 2015-04-29 深圳市比维视创科技有限公司 一种终端摄像模组图像分辨率扩展的方法、装置以及终端
CN105391985A (zh) * 2015-12-07 2016-03-09 哈尔滨工业大学深圳研究生院 一种基于嵌入式Linux的视频监控系统与方法

Cited By (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109889875B (zh) * 2019-01-23 2021-07-16 北京奇艺世纪科技有限公司 通信方法、装置、终端设备和计算机可读介质
CN109889875A (zh) * 2019-01-23 2019-06-14 北京奇艺世纪科技有限公司 通信方法、装置、终端设备和计算机可读介质
EP4228244A4 (en) * 2020-11-20 2024-05-01 Huawei Technologies Co., Ltd. VIDEO PROCESSING METHOD AND APPARATUS, AND STORAGE MEDIUM
CN112804459A (zh) * 2021-01-12 2021-05-14 杭州星犀科技有限公司 基于虚拟摄像头的图像展示方法、装置、存储介质及电子设备
CN112804460A (zh) * 2021-01-12 2021-05-14 杭州星犀科技有限公司 基于虚拟摄像头的图像处理方法、装置、存储介质及电子设备
WO2022217416A1 (zh) * 2021-04-12 2022-10-20 苏州思萃人工智能研究所有限公司 手机多机位可切换虚拟摄像头
CN114302199A (zh) * 2021-06-09 2022-04-08 海信视像科技股份有限公司 显示设备和数据共享方法
CN113596495A (zh) * 2021-07-28 2021-11-02 广州方硅信息技术有限公司 直播推流处理方法及其装置、设备与介质
CN113596495B (zh) * 2021-07-28 2023-11-24 广州方硅信息技术有限公司 直播推流处理方法及其装置、设备与介质
CN113784075A (zh) * 2021-09-28 2021-12-10 统信软件技术有限公司 一种屏幕录像读取方法、系统及计算设备
CN113784075B (zh) * 2021-09-28 2024-05-14 统信软件技术有限公司 一种屏幕录像读取方法、系统及计算设备
CN114257831A (zh) * 2021-12-21 2022-03-29 广州播丫科技有限公司 一种多路虚拟视频源的接入管理系统及方法
CN114257831B (zh) * 2021-12-21 2023-11-24 广州播丫科技有限公司 一种多路虚拟视频源的接入管理系统及方法
CN116708867A (zh) * 2023-08-07 2023-09-05 深圳市亿晟科技有限公司 一种直播数据处理方法、装置、设备及存储介质
CN117014673A (zh) * 2023-08-07 2023-11-07 深圳市九鼎创展科技有限公司 一种导播机用核心板及导播系统
CN116708867B (zh) * 2023-08-07 2023-11-10 深圳市亿晟科技有限公司 一种直播数据处理方法、装置、设备及存储介质
CN117255245A (zh) * 2023-11-17 2023-12-19 深圳市法本信息技术股份有限公司 摄像头匹配方法、装置、终端设备以及存储介质
CN117255245B (zh) * 2023-11-17 2024-03-15 深圳市法本信息技术股份有限公司 摄像头匹配方法、装置、终端设备以及存储介质

Also Published As

Publication number Publication date
CN109168021B (zh) 2021-03-19

Similar Documents

Publication Publication Date Title
CN109168021A (zh) 一种推流的方法及装置
JP6397911B2 (ja) ビデオコンテンツを配布するビデオブロードキャストシステム及び方法
JP3202606B2 (ja) 撮像サーバ及びその方法及び媒体
WO2021135334A1 (zh) 处理直播内容的方法、装置、系统
JP2018026816A (ja) 動画録画方法およびシステム
US20120169855A1 (en) System and method for real-sense acquisition
US7626637B2 (en) Method and apparatus for capturing full-screen frames
US20100174804A1 (en) Information processing apparatus, content management method and recording medium
JP2012085301A (ja) 3次元映像信号処理方法及びこれを具現する携帯型3次元ディスプレイ装置
CN103024567A (zh) 一种移动终端视频预览的方法及系统
CN101272469A (zh) 用于教学与会场的录制系统及方法
CN113115110B (zh) 视频合成方法、装置、存储介质与电子设备
CN112165632A (zh) 视频处理方法、装置及设备
KR102162714B1 (ko) 표시 제어 방법, 단말 및 프로그램을 기록한 기록 매체
CN111683260A (zh) 基于虚拟主播的节目视频生成方法、系统和存储介质
CN103957240A (zh) 一种实时拍摄图片并进行分享的天气系统及其实现方法
CN103248941A (zh) 一种多通道视频源同步显示的方法及装置
JP2007081584A (ja) 画像表示装置または画像表示方法。
CN102780892A (zh) 三维图像处理方法及实施该方法的便携式三维显示设备
KR20060054399A (ko) 디지털 사진들의 강화된 사진 뷰잉 경험을 위한 방법 및장치
US20170125062A1 (en) Multiple views recording
KR101250721B1 (ko) 2개의 고해상도 영상 소스들 간의 전환
KR20080020789A (ko) 슬라이드 쇼 점프 기능을 구비한 영상기기 및 그 제어방법
CN106792219B (zh) 一种直播回看的方法及装置
CN116112617A (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
TA01 Transfer of patent application right

Effective date of registration: 20200108

Address after: 510663 Shenzhou Road 10, Guangzhou Science City, Guangzhou economic and Technological Development Zone, Guangzhou, Guangdong

Applicant after: Jingxin Communication System (China) Co., Ltd.

Address before: 510663 Shenzhou Road, Guangzhou Science City, Guangzhou economic and Technological Development Zone, Guangdong, 10

Applicant before: Jingxin Communication System (China) Co., Ltd.

Applicant before: Jingxin Communication System (Guangzhou) Co., Ltd.

Applicant before: Jingxin Communication Technology (Guangzhou) Co., Ltd.

Applicant before: TIANJIN COMBA TELECOM SYSTEMS CO., LTD.

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant
CP01 Change in the name or title of a patent holder

Address after: 510663 Shenzhou Road 10, Guangzhou Science City, Guangzhou economic and Technological Development Zone, Guangzhou, Guangdong

Patentee after: Jingxin Network System Co.,Ltd.

Address before: 510663 Shenzhou Road 10, Guangzhou Science City, Guangzhou economic and Technological Development Zone, Guangzhou, Guangdong

Patentee before: Comba Telecom System (China) Ltd.

CP01 Change in the name or title of a patent holder