CN102630059B - 一种实现flv视频播放的方法及装置 - Google Patents

一种实现flv视频播放的方法及装置 Download PDF

Info

Publication number
CN102630059B
CN102630059B CN201210079071.6A CN201210079071A CN102630059B CN 102630059 B CN102630059 B CN 102630059B CN 201210079071 A CN201210079071 A CN 201210079071A CN 102630059 B CN102630059 B CN 102630059B
Authority
CN
China
Prior art keywords
flv
file
player
stream
format
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
Application number
CN201210079071.6A
Other languages
English (en)
Other versions
CN102630059A (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.)
Shenzhen Skyworth Digital Technology Co Ltd
Original Assignee
Shenzhen Skyworth Digital Technology 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 Shenzhen Skyworth Digital Technology Co Ltd filed Critical Shenzhen Skyworth Digital Technology Co Ltd
Priority to CN201210079071.6A priority Critical patent/CN102630059B/zh
Publication of CN102630059A publication Critical patent/CN102630059A/zh
Priority to PCT/CN2012/086022 priority patent/WO2013139146A1/zh
Application granted granted Critical
Publication of CN102630059B publication Critical patent/CN102630059B/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/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/434Disassembling of a multiplex stream, e.g. demultiplexing audio and video streams, extraction of additional data from a video stream; Remultiplexing of multiplex streams; Extraction or processing of SI; Disassembling of packetised elementary stream
    • H04N21/4341Demultiplexing of audio and video streams

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本发明公开了一种实现FLV视频播放的方法,所述方法包括:解析流媒体FLV文件,将该FLV文件转换为android***支持的文件格式,重构所述文件格式流,所述android***支持的文件格式包括传输TS流格式;将所述重构的文件格式流提供给内置的播放器;控制所述内置的播放器播放所述重构的文件格式流。本发明还提供了一种实现播放FLV视频的装置。采用本发明实施例,可实现android***在播放应用中播放FLV视频文件,满足用户对FLV视频播放的需求。

Description

一种实现FLV视频播放的方法及装置
技术领域
本发明涉及多媒体传输技术,尤其涉及一种实现FLV视频播放的方法及装置。
背景技术
目前智能移动设备越来越普遍,并配置了智能操作***,其中android***是一种主要的智能操作***,自从面世后发展非常迅速,已成为全球移动设备智能操作***中应用最广的智能操作***,android***支持很多视频格式如3GP、MP4、TS、MKV,但还有一些视频格式无法支持如FLV,而FLV格式视频因其自身文件体积小、视频质量好、网络下载速度快成为很多视频网站的支持,由于android***却无法支持FLV格式视频的播放,这就会影响用户对视频播放的需求。
现有技术中解决android***播放FLV视频的方法,大多数都是采用在android***上移植开源媒体库ffmpeg来完成对FLV文件的解析、解码、播放。
但现有技术存在很多缺陷如在android***上移植开源媒体库ffmpeg非常复杂、在android***上播放FLV文件的硬解问题及与android标准接口对接很复杂。
发明内容
本发明实施例所要解决的技术问题在于,提供一种实现FLV视频播放的方法及装置,可实现在android***播放应用中播放FLV格式视频文件,满足用户对FLV格式视频播放的需求。
为了解决上述技术问题,本发明实施例提供了一种实现FLV视频播放的方法,包括:
解析流媒体FLV文件,将该FLV文件转换为android***支持的文件格式,重构所述文件格式流,所述android***支持的文件格式包括传输TS流格式;
将所述重构的文件格式流提供给内置的播放器;
控制所述内置的播放器播放所述重构的文件格式流。
其中,所述解析FLV文件,将该FLV文件转换为android***支持的文件格式,重构所述文件格式流的步骤包括:
接收FLV文件,所述FLV文件包括本地FLV文件和在线FLV文件;
解析所述FLV文件,对所述FLV音频数据和参数的解析;
重构所述文件格式流,得到android***支持的文件格式。
其中,所述解析所述FLV文件的步骤具体包括:
读取FLV文件头,并根据所述FLV文件头获取所述FLV文件类型;
读取音频标签audio tag,获取低开销传输复用latm头,根据所述latm头构建音频数据传输流adts头,其中,所述构建adts头是为音频解码提供参数;
读取音视频标签tag的头信息及tag数据区头,并根据所述读取的音视频tag的头信息及tag数据区头获取时间戳和时间偏移,以便于重构TS流过程数据传输流dts、显示时间戳数据流pts的计算。
其中,所述重构所述文件格式流步骤包括:
在视频数据中的关键帧的头部添加视频格式sps/pps信息,所述关键帧是指视频数据中第一帧;
在所述音视频帧添加adts头,所述adts头中帧长度包括所述adts头长度。
其中,还包括:
接收内置的播放器发送的播放控制信息,并根据所述播放控制信息对所述FLV文件进行控制。
其中,所述将所述重构的文件格式流提供给内置的播放器,包括:
建立超文本传输协议服务http server线程,控制所述http server线程向所述内置的播放器发送定制统一资源定位符URL;
控制所述http server线程接收所述内置的播放器根据所述定制URL发送的HTTP验证请求;
控制所述http server线程在验证成功时,向所述内置的播放器发送连接成功信息;
通过所述http server线程将所述重构的文件格式流提供给内置的播放器。
相应地,本发明实施例还提供了一种实现FLV视频播放的装置,包括:解析模块、连接模块、播放器,其中,
所述解析模块,用于解析接受到的FLV文件,将该FLV文件转换为android***支持的文件格式,重构所述文件格式流;
所述连接模块,用于通过http server线程根据所述解析模块重构的文件格式流,将所述重构的文件格式流提供给所述播放器;
所述播放器,用于根据所述连接模块提供的重构的文件格式流,控制播放所述重构的文件格式流。
其中,所述解析模块包括:
接收单元,用于接收FLV文件,所述FLV文件包括本地FLV文件和在线FLV文件;
解析单元,用于根据所述接收单元接收到的FLV文件,解析该FLV文件,以便重构所述文件格式流;
转换单元,用于根据所述解析单元的解析结果,将所述FLV文件转换为所述android支持的文件格式。
其中,所述解析模块还包括:
控制模块,用于接收所述播放器发送的播放控制信息,并根据所述播放控制信息对所述FLV文件进行控制。
其中,所述连接模块包括:
第二控制单元,用于控制所述http server线程向所述播放器发送定制URL;
第二接收单元,用于接收所述播放器根据所述定制URL发送的HTTP验证请求;
发送单元,用于根据所述接收单元接收到的验证请求,在确定所述验证请求成功时,向所述播放器发送连接成功信息,并将所述重构的文件格式流提供给所述的播放器。
本发明实施例所要解决的技术问题在于,提供一种实现FLV视频播放的方法及装置,有效地解决与android***接口结合以及FLV播放的硬解问题,实现了在android***播放应用中播放FLV视频,满足用户对FLV视频播放的需求。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种实现FLV视频播放的方法第一实施例的流程图;
图2是本发明实施例提供的一种实现FLV视频播放的方法第二实施例的流程图;
图3是本发明实施例提供的一种实现FLV视播放频的方法第三实施例的流程图;
图4是本发明实施例提供的一种实现FLV视频播放的装置的第一实施例的结构示意图;
图5是本发明实施例提供的一种实现FLV视频播放的装置的第二实施例的结构示意图;
图6是本发明实施例提供的一种实现FLV视频播放的装置的第三实施例的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供了一种实现FLV视频播放的方法及装置,有效地解决与android***接口的结合以及FLV播放的硬解问题,实现了在android***中播放FLV视频。
需要说明到是,本发明实施例主要是在android2.3及以上版本中实现对FLV视频播放的支持,方便开发人员在任意android***中播放FLV视频文件。
本发明实施例中实现android***播放FLV视频的技术方案需要具备的二个环境条件:第一,android***版本必须能够支持TS流的播放。第二,FLV文件中音视频所采用的编码格式必须是android***本身支持的解码格式,否则FLV文件会播放失败。
参见图1,为本发明实施例提供的实现FLV视频播放的方法第一实施例的流程图。所述方法包括:
S101,解析流媒体FLV文件,将该FLV文件转换为android***支持的文件格式,重构所述文件格式流,所述android***支持的文件格式包括传输TS流格式;
具体的,本发明实施例为了实现在android***中播放FLV视频的功能,需要改变FLV视频的文件格式,而且必须是android***能够支持的文件格式,目前android***支持的视频格式包括3GP、MP4、TS、MKVD等,本发明实施例中采用TS流格式,即为实现在android***中播放FLV视频的功能,解析所述FLV视频格式,并将所述FLV视频格式转变为TS流格式,用重构后的TS流格式作为android***的内置的播放器的源数据,也就是将所述重构的TS流提供给内置的播放器,并控制所述内置的播放器播放所述重构的TS流格式,从而完成在TS流格式的播放,事实上就完成对真正数据源FLV视频格式在android***中的播放。
本发明实施例中要完成在android***中播放FLV视频,包括对所述FLV视频的音视频数据的控制、播放控制等,首先需要一个播放主程序,而且播放主线程在真正进入视频播放过程之前还需要建立一个后台线程,所述后台线程通过提供解析转换线程用于解析所述FLV文件,将该FLV文件转换为android***支持的TS流格式,重构所述TS流的文件格式流。
S102,将所述重构的文件格式流提供给内置的播放器;
具体的,本发明实施例中为实现在android***中播放FLV视频的功能,提出在android***中将所述FLV视频格式转换成TS流格式播放的处理方案,通过后台线程解析所述FLV视频格式,将所述FLV视频格式转换为android***支持的TS流格式,并将所述重构的TS流发送给超文本传输协议服务http server线程,所述http server线程将接收到的TS格式流作为源数据提供给内置的播放器,并完成在所述内置的播放器中播放TS格式流,所述http server线程是播放主线程建立的,与播放主线程是并行的,而且和S101步骤中所述后台线程建立的FLV文件解析转换线程也是是并行的,本发明实施例通过在android***中建立的http server线程向内置的播放器提供TS流服务,从而完成android***接口对接。
所述http server线程在完成与android***中内置的播放器接口的对接后,所述android***中内置的播放器就可以不断得到所述http server线程提供的TS流数据,所述连接是指传输控制协议tcp连接,即所述http server线程建立后会接收播放主线程的tcp连接,并处理http验证请求,只有在向播放主线程返回了正确的回应,才能够将所述FLV文件解析转换线程过程中得到的TS格式流作为源数据,提供给所述android***中内置的播放器,这样就在FLV文件解析转换线程过程中的数据处理和内置的播放器播放过程中的数据播放之间建立起一个连接,使得FLV文件解析转换线程中的数据处理和内置播放器播放过程中的数据播放是并行的,二者是互不影响的。
S103,控制所述内置的播放器播放所述重构的文件格式流。
具体的,本发明实施例为了实现在android***中播放FLV视频格式,首先将FLV视频格式转变为android***能够支持的文件格式,所述android***能够支持的文件格式包括TS流格式,并通过所述http server线程将所述TS流格式作为数据源提供给所述android***内置的播放器,实现在android***播放应用中播放TS流,完成了FLV视频在android***中的播放,本发明实施例中的播放主线程在建立了http server线程后会主动联系所述http server线程的,并判断所述http server线程是否对其发出http验证请求响应正确,如果所述http server线程发出“连接正常”的响应,表示连接成功建立,则所述内置的播放器不断地接收到所述http server线程发送的TS流,并实现TS流的播放,完成了对真正数据源FLV视频文件在android***中的播放。
需要说明的是所述控制所述内置的播放器播放所述重构的文件格式流的过程包括:所述内置的播放器判断当前播放的是否是FLV视频格式,若判断为是,根据所述android***标准接口设置的URL接收所述内置的播放器根据所述定制URL发送的HTTP验证请求,如果连接请求成功后发送http验证请求,若根据HTTP标准协议发出“连接成功”,表示所述http server线程可以为所述播放主线程提供TS流,若判断为否,退出播放过程。
本发明实施例中的http server线程在完成与android***中内置的播放器的对接后,利用所述android***内置的播放器支持播放TS格式流的特点,直接从所述http server线程中接收TS流数据,这样音视频数据的解码过程是由所述android***处理,比如所述android***本身支持高级音频编码AAC,H264 AVC等音视频编码格式的硬件解码,则最终会通过android***的应用接口中完成调用,就解决所述FLV音视频数据硬解的问题,另外所述http server线程在完成与android***中内置的播放器的对接后,所述FLV视频格式的播放完全由所述android***完成,开发过程与普通媒体文件如MP4的播放相同,同时所述FLV文件解析转换线程以及提供TS流服务的http server线程与android***内置播放器数据播放过程是并行的,不会对android***内置的播放器播放TS格式流产生影响,其播放FLV视频格式的过程与播放普通媒体文件的过程相同,大大降低开发难度。
参见图2,为本发明实施例提供的实现FLV视频播放的方法第二实施例的流程图。所述方法包括:
S201,接收FLV文件,所述FLV文件包括本地FLV文件和在线FLV文件;
具体的, 本发明实施例中后台线程首先要获取FLV文件的数据,只有通过后台线程获取到所述FLV文件才能够解析转换所述FLV文件,所述获取的FLV文件包括本地FLV文件和在线FLV文件,其中所述本地FLV文件可以存储在安全数据存储卡SD卡中,所述在线FLV文件是指来自网络。
另外,本发明实施例中所述后台线程在获取FLV文件的同时接收android***内置的播放器发送的控制播放的信息,并根据该控制播放的信息对所述FLV文件进行控制。
S202,解析所述FLV文件,对所述FLV音频数据和参数的解析;
具体的,本发明实施例中所述FLV文件通常由文件头(FLV header)和很多文本体(tag)构成的,根据S201获取到的FLV文件,对所述获取到的FLV文件进行解析,所述解析包括对获取到的FLV文件的进行音频解析和视频解析,所述对FLV文件音频解析是采用高级音频编码AAC编码、所述对FLV文件的视频解析是采用标准视频编码H264 AVC编码,其中所述AAC编码最常见的格式包括音频数据传输层ADTS与低开稍音频传输复用LATM。
本发明实施例中解析所述获取到的FLV文件的过程主要包括:读取所述FLV文件头和文件体获取FLV文件的文件类型和latm帧头和sps/pps信息、通过所述获取到的latm帧头构建adts帧头,从而为对所述FLV文件的音视频解码提供参数、读取音视频tag的头信息及tag数据区头,从中获取时间戳和时间偏移信息,为重构TS流过程dts、pts的计算提供依据。
需要说明的是,为了保证后台线程在对FLV文件的解析转换过程的有效性,通常将S201步骤中的获取FLV文件的过程与S202步骤中解析FLV文件的过程结合来实现对所述FLV文件的解析转换,所述对FLV文件的解析转换是根据S202步骤中的FLV文件解析线程解析的FLV文件结构元素的大小来决定S201步骤中获取FLV文件的数据长度,这样就保证了数据读取指针始终处于FLV文件结构元素的边缘,这样既减少获取FLV文件的数据的不确定性,又能够发现FLV文件中存在的错误并能够及时进行相应的处理,避免影响整个FLV文件解析转换过程及后续的FLV文件播放。
S203,重构所述文件格式流,得到android***支持的文件格式;
具体的,根据S202步骤中对接收到FLV文件进行音视频数据及参数的解析结果,进一步重构TS流格式,即将所述FLV文件转换为所述android***支持的TS流格式,所述TS流重构的过程中包括:在所述TS流的数据中的关键帧头部添加sps/pps信息、对TS流的每个音频帧中添加adts头,所述adts头中帧长度包括adts头的长度。
S204,将所述重构的文件格式流提供给内置的播放器;
S205,控制所述内置的播放器播放所述重构的文件格式流。
本发明实施例后台线程完成对FLV视频文件的解析转换,所述对FLV视频文件的解析转换包括:提供后台线程接收FLV文件、根据所述接收到的FLV文件,解析该FLV文件,以便重构所述文件格式流,并将所述FLV文件转换为android支持的TS流格式,通过http server线程将该TS流作为数据源提供给内置的播放器,实现在android***中播放TS流,实现了对真正数据源FLV文件在android***中的播放。
参见图3,图3是本发明实施例提供的实现FLV视频播放的方法第三实施例的流程图。所述方法包括:
S301,解析流媒体FLV文件,将该FLV文件转换为android***支持的文件格式,重构所述文件格式流,所述android***支持的文件格式包括传输TS流格式;
S302,建立超文本传输协议服务http server线程,控制所述http server线程向所述内置的播放器发送定制统一资源定位符URL;
具体的,本发明实施例中的播放主线程在建立http server线程建立之后会与所述http server线程建立tcp联系,所述http server线程成功建立后会向所述内置的播放器发送定制统一资源定位符URL,所述定制的URL可以为如下格式:http://localhost:[port] 或http://127.0.0.1:[port],所述http server的URL可以通过android***标准接口完成设置。
S303,控制所述http server线程接收所述内置的播放器根据所述定制URL发送的HTTP验证请求;
具体的,本发明实施例中http server 线程是由播放主线程建立的,所述播放主线程作为http server的客户端,通过连接http server 完成与android ***内置的播放器的接口对接,所述http server线程启动后,等待所述播放主线程的tcp连接请求,并根据所述android***标准接口设置的URL接收所述内置的播放器根据所述定制URL发送的HTTP验证请求,所述http server线程根据HTTP标准协议发出“连接成功”,表示所述http server线程可以为所述播放主线程提供TS流,所述http server线程是为了在FLV文件解析转换线程的数据处理过程和FLV播放主线程的视频播放过程之间建立数据对接,使所述http server线程提供TS流服务完成与所述FLV播放主线程的接口对接。
本发明实施例中所述http server线程是实现与所述android***接口对接的关键,播放主线程通过调用媒体播放器MediaPlayer接口中的设置数据源SetDataSource(string path)设置URL,并通过定制的URL连接所述http server线程,从而建立FLV播放主线程和FLV解析转换线程之间的联系,实现了FLV播放主线程的数据播放和FLV解析转换线程的数据分析之间的数据对接。
S304,控制所述http server线程在验证成功时,向所述内置的播放器发送连接成功信息;
具体的,本发明实施例中http server 线程是由播放主线程建立的,所述http server线程启动后,等待所述播放主线程的tcp连接请求,并根据所述android***标准接口设置的URL接收所述内置的播放器根据所述定制URL发送的HTTP验证请求,所述http server线程在验证成功时,向所述内置的播放器发送连接成功信息,即所述http server线程根据HTTP标准协议发出“连接成功”,表示所述http server线程可以将所述TS流作为源数据流提供给所述android***内置的播放器。
需要说明的是,本发明实施例中播放主线程通过调用MediaPlayer接口中的SetDataSource(string path)设置URL,实现了FLV播放主线程的数据播放和FLV解析转换线程的数据分析之间的数据对接,但是真正的对接过程是在setDataSource(string path)和prepare()两个方法内部完成的,也就是涉及到android标准接口的内部实现的,因此在本发明实施例中只需要写明是通过调用MediaPlayer接口中setDataSource(string path)的方法即可,根据S304判断播放主线程的MediaPlayer播放准备成功,所述http server接收所述FLV解析转换线程重构的TS流,并将所述TS流作为源数据提供给所述FLV播放主线程,FLV播放主线程的MediaPlayer调用接口start()开始播放。
S305,通过所述http server线程将所述重构的文件格式流提供给内置的播放器。
S306, 控制所述内置的播放器播放所述重构的文件格式流。
本发明实施例在android***中建立http server线程目的就是通过http server线程在FLV文件解析转换线程和播放主线程之间建立了一个连接,使得FLV文件解析转换线程中的数据处理和播放主线程中的数据播放是并行的,二者是互不影响的,因此所述播放主线程只要完成连接http server线程就可以得到不断得到http server 线程提供的ts流,有效地与android***的控制播放接口的对接,使得FLV播放控制操作完全由播放主线程完成的,而且所述FLV文件解析转换线程、http server线程的建立不会对FLV播放主线程的播放产生影响,所述FLV播放过程与android***本身支持的3GP、MP4其他普通媒体文件的播放过程完全相同,这样就降低了开发的难度。
参见图4,图4是本发明实施例提供的一种实现FLV视频播放的装置的第一实施例的结构示意图。如图4所示,包括:解析模块10、连接模块20、播放器30,其中,
所述解析模块10,用于解析接收到的FLV文件,将该FLV文件转换为android***支持的文件格式,重构所述文件格式流;
具体的,本发明实施例中解析模块10用于解析接收到的FLV文件,并将所述FLV文件转换为android***支持的文件格式,重构所述文件格式流,就是为了实现在android***中播放FLV视频的功能,改变FLV视频的文件格式,而且必须是android***能够支持的文件格式如TS流格式,通过所述解析模块10解析得到的重构后的TS流格式作为android***的内置的播放器的源数据,完成TS流格式的播放,事实上完成FLV视频格式在android***中的播放。
所述连接模块20,用于通过http server线程接收所述解析模块10重构的文件格式流,将所述重构的文件格式流提供给所述播放器30;
具体的,本发明实施例中的连接模块20是通过http server线程接收所述解析模块10解析转换后得到的TS流,并将所述TS流作为源数据提供给所述播放器模块30,其中所述连接模块20通过http server线程接收播放主线程的tcp连接,并处理http验证请求,只有在所述验证请求得到正确的回应,所述连接模块20才能够将所述TS流作为源数据提供给播放主线程,所述播放主线程只要完成了连接http server线程就可以得到TS流,这样就在解析模块10和播放器30之间建立了一个连接,也就是所述解析模块10中对FLV文件解析转换线程中的数据处理和所述播放器的数据播放是并行的,二者是互不影响的,在本发明实施例中所述连接模块20就是通过http server线程完成与android***中播放器30完成对接,从而使得连接模块20通过http server线程将所述解析模块10中得到的TS流作为源数据提供给所述播放器30。
所述播放器30,用于根据所述连接模块20提供的重构的文件格式流,控制播放所述重构的文件格式流。
具体的,本发明实施例为了实现在android***中播放FLV视频格式,首先通过解析模块10将FLV视频格式转变为android***能够支持的TS流格式,连接模块20通过http server线程将所述TS流格式作为数据源提供给所述android***中内置的播放器30,实现在android***播放应用中播放TS流,完成了FLV视频在android***中的播放。
需要说明的是所述播放器30播放所述重构的文件格式流的过程包括:所述播放器30判断当前播放的是否是FLV视频格式,若判断为是,根据所述android***标准接口设置的URL接收所述播放器30根据所述定制URL发送的HTTP验证请求如果连接请求成功后发送http验证请求,若http根据HTTP标准协议发出“连接成功”,表示所述http server线程可以为所述播放主线程提供TS流,若判断为否,退出播放过程。本发明实施例中的播放主线程在建立了http server线程后会主动联系所述http server线程的,并判断所述http server线程是否对其发出http验证请求响应正确,如果所述http server线程发出“连接正常”的响应,表示连接成功建立,则所述内置的播放器不断地接收到所述http server线程发送的TS流,并实现TS流的播放,完成了对真正数据源FLV视频文件在android***中的播放。
本发明实施例中的连接模块20通过http server线程完成与android***中播放器30的对接后,所述播放器30直接从所述连接模块20接收TS流数据,这样音视频数据的解码过程完全由所述android***完成,解决了所述FLV音视频数据硬解的问题,并且其开发过程与普通媒体文件如MP4的播放相同,同时所述解析模块10的FLV文件解析转换线程以及提供TS流服务的连接模块20与android***中播放器30的数据播放过程是并行的,不会对android***中的播放器30播放TS格式流产生影响,其播放FLV视频格式的过程与播放普通媒体文件的过程相同,降低开发难度。
参见图5,图5是本发明实施例提供的一种实现FLV视频播放装置的第二实施例的结构示意图。如图5所示,所述实现FLV视频播放装置除包括上述第一实施例中实现播放FLV视频装置中的连接模块20、播放器30外,所述解析模块10进一步包括:接收单元101、解析单元102、转换单元103,控制单元104,其中,
所述接收单元101,用于接收FLV文件,所述FLV文件包括本地FLV文件和在线FLV文件;
具体的,接收单元101获取FLV文件,只有通过接收单元101获取到FLV文件后才能够通过后台线程解析、转换FLV文件,所述接收单元101获取的FLV文件包括本地FLV文件和在线FLV文件,其中所述本地FLV文件可以存储在安全数据存储SD卡上。
所述解析单元102,用于根据所述接收单元101接收到的接收到的FLV文件,解析该FLV文件,以便重构所述文件格式流;
具体的,在本发明实施例中解析单元102根据所述接收单元101获取到的FLV文件,对所述接收单元101接收到的FLV文件进行解析,所述解析包括对接收单元101获取到的FLV文件的音频解析和视频解析,解析单元102对接收单元101接收到的FLV文件的解析包括:读取FLV文件头获取 文件的文件类型、读取FLV文件的音频tag,获取latm帧头和sps/pps信息、再由所述获取的latm帧头构建adts帧头,从而为音频解码和视频解码提供参数、读取音视频tag的头信息及tag数据区头,从中获取时间戳和时间偏移信息,为重构TS流过程dts、pts计算提供依据。
所述转换单元103,根据所述解析单元102所解析重构的文件格式流,将所述FLV文件转换为所述android支持的文件格式。
具体的,根据所述解析单元102的解析结果,将所述接收单元101接收到的FLV文件转换为所述android支持的文件格式,也就是所述转换单元103根据所述解析单元102对所述接收单元101接收的到的FLV文件转换进行音视频数据及参数的解析结果,进一步重构TS流格式,即所述转换单元103将所述FLV文件转换为android***支持的TS流格式。
所述控制单元104,用于接收播放器30发送的播放控制信息,并根据所述播放控制信息对所述FLV文件进行控制。
需要说明的是,为了保证后台线程在对FLV文件的解析转换过程的有效性,通常将接收单元101获取FLV文件的过程和解析单元102的解析所述获取到的FLV文件的过程相结合,由解析单元102解析的FLV文件结构元素的大小决定所述接收单元101获取的FLV文件的数据长度,这样就保证了数据读取指针始终处于FLV文件结构元素的边缘,这样既减少接收单元对获取的FLV文件数据的不确定性,又能够发现所获取的FLV文件存在问题,同时避免影响整个FLV文件解析转换过程及后续的FLV文件播放。
本发明实施例分析了后台线程是如何完成对FLV视频文件的解析转换的过程,所述FLV文件解析转换过程包括接收单元101获取FLV文件、解析单元102根据所述接收单元101获取到的FLV文件,解析该获取到的FLV文件、转换单元103根据所述解析单元102的解析结果将所述FLV文件转换为所述android支持的TS流格式,并将所述TS流为数据源提供给FLV播放主线程,即在android***播放应用中播放该TS流,这样也就是完成了对真正数据源FLV文件在android***中的播放。
参见图6,图6是本发明实施例提供的一种实现FLV视频播放装置的第三实施例的结构示意图。如图6所示,所述实现FLV视频播放装置除包括上述第一上述例中实现FLV视频播放装置中的解析模块10、播放器30外,所述连接模块20进一步包括:第二控制单元201、第二接收单元202、发送单元203,其中,
所述第二控制单元201,用于控制所述http server线程向所述播放器30发送定制URL;
具体的,本发明实施例中的连接模块20通过http server线程完成与android***中播放器30的对接后,所述播放器30在所述连接模块20建立http server线程之后会与所述连接模块20建立tcp联系,并通过控制单元201向所述播放器模块20发送定制统一资源定位符URL,所述定制的URL可以为如下格式:http://localhost:[port] 或http://127.0.0.1:[port],所述向所述播放器模块20发送的定制统一资源定位符URL 可以通过android***标准接口完成设置。
所述第二接收单元202,用于接收所述播放器模块30根据所述定制URL发送的HTTP验证请求;
具体的,本发明实施例中的http server线程是由所述播放器30建立的,所述播放器30作为连接r模块20的客户端,通过http server 线程完成与android ***中的播放器30接口对接,所述连接模块20在http server线程启动后,等待所述播放器30的tcp连接请求,并通过所述第二接收单元202接收所述播放器30根据所述定制URL发送的HTTP验证请求,所述连接模块20根据HTTP标准协议发出“连接成功”,表示所述连接模块20可以为所述播放器30提供TS流,使所述连接模块20提供TS流服务完成与所述播放器30的接口对接。
所述发送单元203,用于根据所述接收单元202接收到的验证请求,在确定所述验证请求成功时,向所述播放器30发送连接成功信息,并将所述重构的文件格式流提供给所述播放器模块30。
具体的,本发明实施例中所述http server线程是连接模块20实现与所述android***中播放器30接口对接的关键, 所述连接模块20在http server线程启动后,等待所述播放器30的tcp连接请求,并根据所述接收单元202接收到的所述播放器30根据所述定制URL发送的HTTP验证请求,在确定所述验证请求成功时,通过所述发送单元203向所述播放器30发送连接成功信息,即所述连接模块20根据HTTP标准协议发出“连接成功”,表示所述连接模块20可以将所述TS流作为源数据流提供给所述android***中的播放器30,并将所述播放器模块30中实现播放TS格式流。
本发明实施例的连接模块20通过http server线程接收播放器30的tcp连接,并处理http验证请求,只有在所述验证请求得到正确的回应,所述连接模块20才能够将所述TS流作为源数据提供给播放器30,通过连接模块20在解析模块10的解析转换过程和播放器模块30的播放过程之间建立了一个连接,也就是说解析模块10的文件解析转换线程中的数据处理和播放器30的数据播放是并行的,二者是互不影响的,因此所述播放器30只要完成连接连接模块20就可以得到不断得到连接模块20提供的ts流,这样就有效地与android***的播放器30接口的对接,使得FLV播放制操作完全由播放器30完成的,而且所述FLV文件解析转换线程、http server线程的建立不会对所述播放器30播放FLV视频格式的播放产生影响,所述FLV播放过程与android***本身支持的3GP、MP4其他普通媒体文件的播放过程完全相同,这样就降低了开发的难度。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的硬件平台的方式来实现,当然也可以全部通过硬件来实施。基于这样的理解,本发明的技术方案对背景技术做出贡献的全部或者部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
以上所揭露的仅为本发明一种较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。

Claims (10)

1.一种实现FLV视频播放的方法,其特征在于,包括:
解析流媒体FLV文件,将该FLV文件转换为android***支持的文件格式,重构所述文件格式流,所述android***支持的文件格式包括传输TS流格式,其中,所述FLV文件中音视频所采用的编码格式是所述android***本身支持的解码格式;
将所述重构的文件格式流提供给内置的播放器;
控制所述内置的播放器播放所述重构的文件格式流。
2.如权利要求1所述的方法,其特征在于,所述解析FLV文件,将该FLV文件转换为android***支持的文件格式,重构所述文件格式流的步骤包括:
接收FLV文件,所述FLV文件包括本地FLV文件和在线FLV文件;
解析所述FLV文件,对所述FLV音频数据和参数的解析;
重构所述文件格式流,得到android***支持的文件格式。
3.如权利要求2所述的方法,其特征在于,所述解析所述FLV文件的步骤具体包括:
读取FLV文件头,并根据所述FLV文件头获取所述FLV文件类型;
读取音频标签audio tag,获取低开销传输复用latm头,根据所述latm头构建音频数据传输流adts头,其中,所述构建adts头是为音频解码提供参数;
读取音视频标签tag的头信息及tag数据区头,并根据所述读取的音视频tag的头信息及tag数据区头获取时间戳和时间偏移,以便于重构TS流过程数据传输流dts、显示时间戳数据流pts的计算。
4.如权利要求2所述的方法,其特征在于,所述重构所述文件格式流步骤包括:
在视频数据中的关键帧的头部添加视频格式sps/pps信息,所述关键帧是指视频数据中第一帧;
在所述音视频帧添加adts头,所述adts头中帧长度包括所述adts头长度。
5.如权利要求2所述的方法,其特征在于,还包括:
接收内置的播放器发送的播放控制信息,并根据所述播放控制信息对所述FLV文件进行控制。
6.如权利要求1所述的方法,其特征在于,所述将所述重构的文件格式流提供给内置的播放器,包括:
建立超文本传输协议服务http server线程,控制所述http server线程向所述内置的播放器发送定制统一资源定位符URL;
控制所述http server线程接收所述内置的播放器根据所述定制URL发送的HTTP验证请求;
控制所述http server线程在验证成功时,向所述内置的播放器发送连接成功信息;
通过所述http server线程将所述重构的文件格式流提供给内置的播放器。
7.一种实现FLV视频播放的装置,其特征在于,包括:解析模块、连接模块、播放器,其中,
所述解析模块,用于解析接受到的FLV文件,将该FLV文件转换为android***支持的文件格式,重构所述文件格式流,其中,所述FLV文件中音视频所采用的编码格式是所述android***本身支持的解码格式;
所述连接模块,用于通过http server线程接收所述解析模块重构的文件格式流,将所述重构的文件格式流提供给所述播放器;
所述播放器,用于根据所述连接模块提供的重构的文件格式流,控制播放所述重构的文件格式流。
8.如权利要求7所述的装置,其特征在于,所述解析模块包括:
接收单元,用于接收FLV文件,所述FLV文件包括本地FLV文件和在线FLV文件;
解析单元,用于根据所述接收单元接收到的FLV文件,解析该FLV文件,以便重构所述文件格式流;
转换单元,用于根据所述解析单元的解析结果,将所述FLV文件转换为所述android支持的文件格式。
9.如权利要求8所述的装置,其特征在于,所述解析模块还包括:
控制模块,用于接收所述播放器发送的播放控制信息,并根据所述播放控制信息对所述FLV文件进行控制。
10.如权利要求7所述的装置,其特征在于,所述连接模块包括:
第二控制单元,用于控制所述http server线程向所述播放器发送定制URL;
第二接收单元,用于接收所述播放器根据所述定制URL发送的HTTP验证请求;
发送单元,用于根据所述接收单元接收到的验证请求,在确定所述验证请求成功时,向所述播放器发送连接成功信息,并将所述重构的文件格式流提供给所述的播放器。
CN201210079071.6A 2012-03-23 2012-03-23 一种实现flv视频播放的方法及装置 Active CN102630059B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201210079071.6A CN102630059B (zh) 2012-03-23 2012-03-23 一种实现flv视频播放的方法及装置
PCT/CN2012/086022 WO2013139146A1 (zh) 2012-03-23 2012-12-06 一种实现flv视频播放的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210079071.6A CN102630059B (zh) 2012-03-23 2012-03-23 一种实现flv视频播放的方法及装置

Publications (2)

Publication Number Publication Date
CN102630059A CN102630059A (zh) 2012-08-08
CN102630059B true CN102630059B (zh) 2015-09-30

Family

ID=46588197

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210079071.6A Active CN102630059B (zh) 2012-03-23 2012-03-23 一种实现flv视频播放的方法及装置

Country Status (2)

Country Link
CN (1) CN102630059B (zh)
WO (1) WO2013139146A1 (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102929559B (zh) * 2012-09-20 2015-07-22 深圳市亚特尔科技有限公司 一种提供文件的方法及文件提供***
CN103702240A (zh) * 2013-12-06 2014-04-02 乐视网信息技术(北京)股份有限公司 一种视频播放的方法和设备
CN104717446B (zh) * 2013-12-12 2017-10-24 中国航空工业集团公司第六三一研究所 多视频格式向itu656协议pal制式的自动转换方法
CN104717444B (zh) * 2013-12-12 2017-11-24 中国航空工业集团公司第六三一研究所 多视频格式向VESA协议1920X1440分辨率75Hz帧率视频的自动转换方法
CN104754349A (zh) * 2013-12-25 2015-07-01 炫一下(北京)科技有限公司 硬解码音视频的方法及装置
CN106686443A (zh) * 2015-11-10 2017-05-17 中兴通讯股份有限公司 一种媒体播放方法、终端及***
CN108184137A (zh) * 2017-12-29 2018-06-19 北京奇虎科技有限公司 一种流媒体flv文件的定位播放方法和装置
CN110858919A (zh) * 2018-08-24 2020-03-03 北京字节跳动网络技术有限公司 媒体文件播放过程中的数据处理方法、装置及存储介质
CN110858923B (zh) * 2018-08-24 2022-09-06 北京字节跳动网络技术有限公司 分段媒体文件生成方法、装置及存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102123279A (zh) * 2010-12-28 2011-07-13 乐视网信息技术(北京)股份有限公司 一种分布式实时转码方法与***

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100094728A1 (en) * 2008-09-12 2010-04-15 James Denning Method and system for distributing media content and processing payments and/or voluntary data collection
CN101415069B (zh) * 2008-10-22 2010-07-14 清华大学 一种服务器及其在线播放视频的发送方法
WO2011090715A2 (en) * 2009-12-28 2011-07-28 Akamai Technologies, Inc. Edge server for format-agnostic streaming architecture
CN102075528B (zh) * 2010-12-27 2014-12-10 上海聚欣网络科技有限公司 一种播放多种封装格式的网络多媒体文件的方法与设备
CN102118428B (zh) * 2010-12-29 2012-12-26 天脉聚源(北京)传媒科技有限公司 一种播放流媒体的方法和***

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102123279A (zh) * 2010-12-28 2011-07-13 乐视网信息技术(北京)股份有限公司 一种分布式实时转码方法与***

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
王奎澎,刘建辉.FLV文件格式及其嵌入式应用.《计算机***应用》.2010,第19卷(第3期),190-193. *

Also Published As

Publication number Publication date
CN102630059A (zh) 2012-08-08
WO2013139146A1 (zh) 2013-09-26

Similar Documents

Publication Publication Date Title
CN102630059B (zh) 一种实现flv视频播放的方法及装置
CN101697549B (zh) 流媒体的展示方法、***以及流媒体管理服务器
KR20180050961A (ko) 멀티미디어 수신 장치에서 디코딩을 수행하는 방법 및 멀티미디어 장치
CN101060623B (zh) 运动图像再现设备和方法
US9369508B2 (en) Method for transmitting a scalable HTTP stream for natural reproduction upon the occurrence of expression-switching during HTTP streaming
CN102045338A (zh) 内容再现***、内容再现装置、程序及内容再现方法
CN105052160A (zh) 用于向客户端设备流传输媒体内容的方法和装置
CN102656857B (zh) 一种启动阶段的流媒体数据获取、发送方法及装置
CN110545483B (zh) 网页中切换分辨率播放媒体文件的方法、装置及存储介质
KR101780782B1 (ko) 클라우드 스트리밍 서비스 제공 방법 및 이를 위한 장치
CN102625193B (zh) 一种借助辅助文件实现多媒体文件网络播放的方法
CN103024528A (zh) 在移动终端上实现流媒体数据发送的方法及移动终端
CN102891997A (zh) 用于快速播放的音视频多媒体文件格式、播放方法及装置
US20120207454A1 (en) Streaming service and playback device using svc server
CN112995698A (zh) 一种视频播放方法、客户端、服务平台及智能会议***
KR101397551B1 (ko) Http에 기초한 동적 적응적 스트리밍 시스템
CN118192926A (zh) 即时播放帧(ipf)的生成、传输及处理的方法、设备及***
US6940901B2 (en) Apparatus and method for information processing
CN104919809A (zh) 内容服务器和内容分配法
CN106254907B (zh) 一种直播视频合成方法及装置
CN112243158A (zh) 媒体文件处理方法、装置及电子设备
CN106303754A (zh) 一种音频数据播放方法及装置
US11716503B2 (en) Method for managing multimedia content, and device for carrying out said method
KR20120118616A (ko) 예약녹화된 방송을 출력하는 장치 및 그 제어 방법
US20070003229A1 (en) Content recording apparatus, content reproducing apparatus, and method for recording parameter information

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C53 Correction of patent for invention or patent application
CB02 Change of applicant information

Address after: 518000 Guangdong city of Shenzhen province Nanshan District Gao Xin Road Building A14, SKYWORTH

Applicant after: Shenzhen Skyworth Digital Technology Co., Ltd.

Address before: 518000 Guangdong city of Shenzhen province Nanshan District Gao Xin Road Building A14, SKYWORTH

Applicant before: Shenzhen Skyworth Digital Technology Co., Ltd.

COR Change of bibliographic data

Free format text: CORRECT: APPLICANT; FROM: SKY-WORTH DIGITAL TECHNOLOGY CO., LTD.;SHENZHEN CITY TO: SHENZHEN SKYWORTH DIGITAL TECHNOLOGY CO., LTD.

C14 Grant of patent or utility model
GR01 Patent grant