CN104702973A - 一种基于Android系统的实时播放视频的方法和系统 - Google Patents
一种基于Android系统的实时播放视频的方法和系统 Download PDFInfo
- Publication number
- CN104702973A CN104702973A CN201410853557.XA CN201410853557A CN104702973A CN 104702973 A CN104702973 A CN 104702973A CN 201410853557 A CN201410853557 A CN 201410853557A CN 104702973 A CN104702973 A CN 104702973A
- Authority
- CN
- China
- Prior art keywords
- video data
- layer
- framworks
- data
- video
- 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.)
- Pending
Links
Landscapes
- Television Signal Processing For Recording (AREA)
Abstract
本发明适用于数据传输领域,提供了一种基于Android系统的实时播放视频的方法和系统,所述方法包括:获取待播放视频数据包,并将所述视频数据包解包为视频数据,所述视频数据包为基于实时传输协议的视频数据包;通过预设的LocalSocket采用内存映射的方式将所述视频数据从Android系统的Java层发送到Framworks层;通过Framworks层的播放器播放所述视频数据。本发明实施例,使得视频播放不仅速度快,而且效率高,且稳定。
Description
技术领域
本发明属于数据传输领域,尤其涉及一种基于Android系统的实时播放视频的方法和系统。
背景技术
传统的可视电话,是在服务器端或客户端创建一个RTSP Server,通过播放文件、缓存视频,或RTSP等方式,间接播放远端发来的视频数据。这种间接播放视频数据的方法,往往会导致视频的延迟,并浪费大量的系统资源。
发明内容
鉴于此,本发明提供一种基于Android系统的实时播放视频的方法和系统,以解决现有技术会使视频播放出现延迟的技术问题。
本发明实施例是这样实现的,一种基于Android系统的实时播放视频的方法,所述方法包括以下步骤:
获取待播放视频数据包,并将所述视频数据包解包为视频数据,所述视频数据包为基于实时传输协议的视频数据包;
通过预设的LocalSocket将所述视频数据从Java层发送到Framworks层;
通过Framworks层的播放器播放所述视频数据。
本发明实施例还提供一种基于Android系统的机顶盒数据的播放系统,所述系统包括:
视频数据获取单元,用于获取待播放视频数据包,并将所述视频数据包解包为视频数据,所述视频数据包为基于实时传输协议的视频数据包;
视频数据发送单元,用于通过预设的LocalSocket将所述视频数据获取单元获取的视频数据从Java层发送到Framworks层;
视频数据播放单元,用于通过Framworks层的播放器播放所述视频数据发送单元发送的视频数据。
本发明实施例,获取待播放视频数据包,将视频数据包解包为视频数据,通过预设的LocalSocket将所述视频数据从Java层发送到Framworks层,通过Framworks层的播放器播放视频数据,由于LocalSocket直接使用内存映射的方式传输视频数据,因此Java层与Framworks层之间的数据传输不仅速度快,而且效率高,且稳定。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的基于Android系统的实时播放视频方法的流程图;
图2是本发明实施例提供的基于Android系统的实时播放视频系统的结构图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。
实施例一
如图1所示为本发明实施例提供的基于Android系统的实时播放视频方法的流程图,所述方法包括以下步骤:
步骤S101,获取待播放视频数据包,并将所述视频数据包解包为视频数据,所述视频数据包为基于实时传输协议的视频数据包。
在本发明实施例中,进行实时播放视频的终端创建一个线程接收待播放的视频数据包,并将该视频数据包解包为视频数据,该视频数据包为基于实时传输协议的视频数据包,该视频数据的格式包括但不限于:h.264、h.263。
步骤S102,通过预设的LocalSocket采用内存映射的方式将所述视频数据从Android系统的JJava层发送到Framworks层。
在本发明实施例中,进行实时播放视频的终端在获取了视频数据之后,通过预设的套接字LocalSocket将视频数据从Java层发送到Framworks层。所述通过预设的LocalSocket将所述视频数据从Java层发送到Framworks层的步骤,具体为:
1、根据所述LocalSocket建立所述Java层与所述Framworks层的通信连接,所述Java层为LocalSocket服务器端,所述Framworks层为LocalSocket客户端。
在本发明实施例中,进行实时播放视频的终端通过在本地预设的LocalSocket建立Java层与Framworks层的通信连接,其中,Java层作为连接的服务器端(即视频数据发送端),Framworks层作为连接的客户端(即视频数据接收端),Framworks层调用socket_local_client创建一个本地socket,并连接到远端LocalSocket服务器(Java层),由于LocalSocket直接使用内存映射的方式传输视频数据,因此Java层与Framworks层之间的数据传输不仅速度快,而且效率高,且稳定。
2、通过所述通信连接将所述视频数据发送到所述Framworks层。
在本发明实施例中,在建立了通信连接之后,进行实时播放视频的终端将视频数据从Java层发送到Framworks层,优选的,视频数据传输过程允许丢包,传输模式采用非阻塞的传输模式。
步骤S103,通过Framworks层的播放器播放所述视频数据。
在本发明实施例,在Framworks层接收了视频数据之后,进行实时播放视频的终端调用Framworks层的播放器播放该视频数据,优选的,该播放器为MediaPlayer。所述通过Framworks层的播放器播放所述视频数据,具体为:
通过在所述播放器添加对所述视频数据的缓存播放所述视频数据。
在本发明实施例中,以MediaPlayer为例,MediaPlayer数据源格式为:uri(http,RTSP),文件套接字(FileDescriptor)。
本方法扩展MediaPlayer setDataSource(const char*uri)接口,添加对视频数据的缓存,增加一个播放socket数据流的方法。
扩展后的uri格式如下:
"socket://"+SOCKET_NAME+"/?video=h264&framesize=28000"
本发明实施例,获取待播放视频数据包,将视频数据包解包为视频数据,通过预设的LocalSocket将所述视频数据从Java层发送到Framworks层,通过Framworks层的播放器播放视频数据,由于LocalSocket直接使用内存映射的方式传输视频数据,因此Java层与Framworks层之间的数据传输不仅速度快,而且效率高,且稳定。
作为本发明的一个可选实施例,在所述通过预设的LocalSocket将所述视频数据从Java层发送到Framworks层的步骤之前,所述方法还包括以下步骤:
创建用于所述Java层与所述Framworks层进行通信的LocalSocket。
实施例二
如图2所示为本发明实施例提供的基于Android系统的实时播放视频系统的结构图,为了便于说明,仅示出与本发明实施例相关的部分,包括:
视频数据获取单元201,用于获取待播放视频数据包,并将所述视频数据包解包为视频数据,所述视频数据包为基于实时传输协议的视频数据包。
在本发明实施例中,视频数据获取单元201创建一个线程接收待播放的视频数据包,并将该视频数据包解包为视频数据,该视频数据包为基于实时传输协议的视频数据包,该视频数据的格式包括但不限于:h.264、h.263。
视频数据发送单元202,用于通过预设的LocalSocket采用内存映射的方式将所述视频数据获取单元201获取的视频数据从Android系统的Java层发送到Framworks层。
在本发明实施例中,进行实时播放视频的终端在获取了视频数据之后,通过预设的套接字LocalSocket将视频数据从Java层发送到Framworks层。所述视频数据发送单元202,包括:
通信连接建立子单元2021,用于根据所述LocalSocket建立所述Java层与所述Framworks层的通信连接,所述Java层为LocalSocket服务器端,所述Framworks层为LocalSocket客户端。
在本发明实施例中,通信连接建立子单元2021通过在本地预设的LocalSocket建立Java层与Framworks层的通信连接,其中,Java层作为连接的服务器端(即视频数据发送端),Framworks层作为连接的客户端(即视频数据接收端),Framworks层调用socket_local_client创建一个本地socket,并连接到远端LocalSocket服务器(Java层),由于LocalSocket直接使用内存映射的方式传输视频数据,因此Java层与Framworks层之间的数据传输不仅速度快,而且效率高,且稳定。
视频数据发送子单元2022,用于通过所述通信连接建立子单元2021建立的通信连接将所述视频数据发送到所述Framworks层。
在本发明实施例中,在建立了通信连接之后,视频数据发送子单元2022将视频数据从Java层发送到Framworks层,优选的,视频数据传输过程允许丢包,传输模式采用非阻塞的传输模式。
视频数据播放单元203,用于通过Framworks层的播放器播放所述视频数据发送单元202发送的视频数据。
在本发明实施例,在Framworks层接收了视频数据之后,视频数据播放单元203调用Framworks层的播放器播放该视频数据,优选的,该播放器为MediaPlayer。所述视频数据播放单元203包括:
缓存子单元2031,用于通过在所述播放器添加对所述视频数据的缓存播放所述视频数据。
在本发明实施例中,以MediaPlayer为例,MediaPlayer数据源格式为:uri(http,RTSP),文件套接字(FileDescriptor)。
本方法扩展MediaPlayer setDataSource(const char*uri)接口,添加对视频数据的缓存,增加一个播放socket数据流的方法。
扩展后的uri格式如下:
"socket://"+SOCKET_NAME+"/?video=h264&framesize=28000"
本发明实施例,获取待播放视频数据包,将视频数据包解包为视频数据,通过预设的LocalSocket将所述视频数据从Java层发送到Framworks层,通过Framworks层的播放器播放视频数据,由于LocalSocket直接使用内存映射的方式传输视频数据,因此Java层与Framworks层之间的数据传输不仅速度快,而且效率高,且稳定。
作为本发明的一个可选实施例,在所述视频数据发送单元202发送视频数据之前,所述系统还包括:
LocalSocket创建单元204,用于创建用于所述Java层与所述Framworks层进行通信的LocalSocket。
本领域普通技术人员可以理解为上述实施例二所包括的各个单元只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
本领域普通技术人员还可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以在存储于一计算机可读取存储介质中,所述的存储介质,包括ROM/RAM、磁盘、光盘等。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种基于Android系统的实时播放视频的方法,其特征在于,所述方法包括以下步骤:
获取待播放视频数据包,并将所述视频数据包解包为视频数据,所述视频数据包为基于实时传输协议的视频数据包;
通过预设的LocalSocket采用内存映射的方式将所述视频数据从Android系统的Java层发送到Framworks层;
通过Framworks层的播放器播放所述视频数据。
2.如权利要求1所述的方法,其特征在于,在所述通过预设的LocalSocket采用内存映射的方式将所述视频数据从Android系统的Java层发送到Framworks层的步骤之前,所述方法还包括以下步骤:
创建用于所述Java层与所述Framworks层进行通信的LocalSocket。
3.如权利要求1~2任一项所述的方法,其特征在于,所述通过预设的LocalSocket采用内存映射的方式将所述视频数据从Android系统的Java层发送到Framworks层的步骤,具体为:
根据所述LocalSocket建立所述Java层与所述Framworks层的通信连接,所述Java层为LocalSocket服务器端,所述Framworks层为LocalSocket客户端;
通过所述通信连接将所述视频数据发送到所述Framworks层。
4.如权利要求1~2任一项所述的方法,其特征在于,所述通过Framworks层的播放器播放所述视频数据,具体为:
通过在所述播放器添加对所述视频数据的缓存播放所述视频数据。
5.一种基于Android系统的实时播放视频的系统,其特征在于,所述系统包括:
视频数据获取单元,用于获取待播放视频数据包,并将所述视频数据包解包为视频数据,所述视频数据包为基于实时传输协议的视频数据包;
视频数据发送单元,用于通过预设的LocalSocket采用内存映射的方式将所述视频数据获取单元获取的视频数据从Android系统的Java层发送到Framworks层;
视频数据播放单元,用于通过Framworks层的播放器播放所述视频数据发送单元发送的视频数据。
6.如权利要求5所述的系统,其特征在于,在所述视频数据发送单元发送视频数据之前,所述系统还包括:
LocalSocket创建单元,用于创建用于所述Java层与所述Framworks层进行通信的LocalSocket。
7.如权利要求5~6任一项所述的系统,其特征在于,所述视频数据发送单元,包括:
通信连接建立子单元,用于根据所述LocalSocket建立所述Java层与所述Framworks层的通信连接,所述Java层为LocalSocket服务器端,所述Framworks层为LocalSocket客户端;
视频数据发送子单元,用于通过所述通信连接建立子单元建立的通信连接将所述视频数据发送到所述Framworks层。
8.如权利要求5~6所述的系统,其特征在于,所述视频数据播放单元,包括:
缓存子单元,用于通过在所述播放器添加对所述视频数据的缓存播放所述视频数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410853557.XA CN104702973A (zh) | 2014-12-31 | 2014-12-31 | 一种基于Android系统的实时播放视频的方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410853557.XA CN104702973A (zh) | 2014-12-31 | 2014-12-31 | 一种基于Android系统的实时播放视频的方法和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104702973A true CN104702973A (zh) | 2015-06-10 |
Family
ID=53349683
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410853557.XA Pending CN104702973A (zh) | 2014-12-31 | 2014-12-31 | 一种基于Android系统的实时播放视频的方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104702973A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108965756A (zh) * | 2018-07-24 | 2018-12-07 | 安徽康能电气有限公司 | 一种基于视频成像的配网可视化监测装置 |
CN110175081A (zh) * | 2019-05-30 | 2019-08-27 | 睿云联(厦门)网络通讯技术有限公司 | 一种针对Android音频播放的优化系统及其方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102291580A (zh) * | 2011-07-28 | 2011-12-21 | 南京联慧通信技术有限公司 | 基于Android系统的视频传输方法 |
US20140036158A1 (en) * | 2012-08-02 | 2014-02-06 | Mstar Semiconductor, Inc. | Sensing method on sensing device by smart terminal and smart terminal using the same |
-
2014
- 2014-12-31 CN CN201410853557.XA patent/CN104702973A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102291580A (zh) * | 2011-07-28 | 2011-12-21 | 南京联慧通信技术有限公司 | 基于Android系统的视频传输方法 |
US20140036158A1 (en) * | 2012-08-02 | 2014-02-06 | Mstar Semiconductor, Inc. | Sensing method on sensing device by smart terminal and smart terminal using the same |
Non-Patent Citations (3)
Title |
---|
ANDROID之情殇: "在Android上使用LocalSocket实现上层Java和底层C++的通信", 《ANDROID中LOCALSOCKET使用》 * |
个人文档2013: "Android利用LocalSocket实现Java端进程与C端进程之间的IPC", 《HTTP://WWW.DOCIN.COM/P-938708388.HTML&ISPAY=1》 * |
谷木幽月: "Android中LocalSocket使用", 《HTTPS://WENKU.BAIDU.COM/VIEW/C831AA6E48D7C1C708A14558.HTML?FROM=SEARCH》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108965756A (zh) * | 2018-07-24 | 2018-12-07 | 安徽康能电气有限公司 | 一种基于视频成像的配网可视化监测装置 |
CN110175081A (zh) * | 2019-05-30 | 2019-08-27 | 睿云联(厦门)网络通讯技术有限公司 | 一种针对Android音频播放的优化系统及其方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10110393B2 (en) | Protocol switching over multi-network interface | |
US8966131B2 (en) | System method for bi-directional tunneling via user input back channel (UIBC) for wireless displays | |
CN102685123B (zh) | 一种基于云存储发布流媒体的装置、系统及方法 | |
CN102694831B (zh) | 移动终端流媒体数据补偿方法与系统、内容分发网络 | |
CN101883097A (zh) | 服务器设备共享客户端设备屏幕的实现方法及装置 | |
KR20160067126A (ko) | 콘텐트 전달을 위한 방법 및 장치 | |
US10498783B2 (en) | Non-DSG mechanisms for aligning client devices with their multicast data flows in a DOCSIS network environment | |
WO2015165395A1 (en) | Video playback method and apparatus | |
CN104168453A (zh) | 一种实现视频监控流媒体应用系统的方法 | |
CN104254007A (zh) | 一种音频处理方法及装置 | |
WO2013185514A1 (zh) | 一种播放流媒体的系统和方法 | |
CN103686429A (zh) | 一种实现云媒体共享播放的音频系统及方法 | |
CN104702973A (zh) | 一种基于Android系统的实时播放视频的方法和系统 | |
US9871840B2 (en) | Electronic apparatus and method for transferring contents on cloud system to device connected to DLNA | |
US20130080501A1 (en) | Method for transmitting real-time video data over network | |
CN102594769A (zh) | 一种传输网络媒体数据的方法和系统 | |
WO2018019167A1 (zh) | 基于机顶盒的直播共享方法及系统 | |
CN104301757B (zh) | 基于云技术的家庭ktv点播方法及点播系统 | |
CN103731339A (zh) | 数字生活网络联盟系统及系统中在线多媒体资源共享方法 | |
CN105163144A (zh) | 在线网络视频p2p传输方法 | |
CN101753975B (zh) | 卡拉ok播控方法和系统 | |
CN102307196A (zh) | 一种网络传输实时视频数据的方法 | |
CN101984622A (zh) | 基于实时传输协议的双向音频映射系统及方法 | |
Wei et al. | Applications of a Streaming Video Server in a mobile phone live streaming system | |
CN104661049A (zh) | 传输流的传输方法和系统、流媒体服务器和终端 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20150610 |
|
RJ01 | Rejection of invention patent application after publication |