CN102098513A - 无线视频实时传输方法 - Google Patents
无线视频实时传输方法 Download PDFInfo
- Publication number
- CN102098513A CN102098513A CN 201010596446 CN201010596446A CN102098513A CN 102098513 A CN102098513 A CN 102098513A CN 201010596446 CN201010596446 CN 201010596446 CN 201010596446 A CN201010596446 A CN 201010596446A CN 102098513 A CN102098513 A CN 102098513A
- Authority
- CN
- China
- Prior art keywords
- hardware
- ffmpeg
- processing unit
- video
- transmission method
- 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
Images
Landscapes
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
一种无线视频实时传输方法,包括以下步骤:将硬件视频处理单元注册进开源软件FFmpeg中,作为FFmpeg的硬件编解码器;将FFmpeg的硬件编解码器嵌入进开源软件Linphone中;用户空间应用层通过调用Linphone,进一步调用嵌入其中的FFmpeg的硬件编解码器,将视频编解码过程交由硬件视频处理单元处理。本发明的无线视频实时传输方法对于自带有硬件视频编解码模块的设备来说,可以交给硬件视频编解码模块完成视频数据的压缩编解码任务,减轻了CPU的负担,提高了压缩效率。
Description
技术领域
本发明属于无线Mesh网络通信领域,是基于ARM(Advanced RISC Machines)处理器和嵌入式Linux操作系统的无线视频实时传输方法。尤指一种基于linphone、FFmpeg及硬件视频编解码模块的无线视频实时传输方法。
背景技术
无线网格网WMN (Wireless Mesh Network)是一种新型的无线宽带接入网络,具有带宽资源有限特点,视频实时传输业务在无线环境中的应用仍面临巨大的挑战。因为数字化后的视频信号数据量很大,对于存储和传输都带来很大的负担,尤其是在无线信道环境中,由于带宽有限,无线频率资源宝贵,需要一种高效的压缩编码方法支持。
当前,视频信号压缩编解码处理的方案有软件和硬件两种。随着计算机体系结构以及集成电路设计制造技术的快速发展,通用处理器的处理能力得到了显著的提升,在软件方面的视频处理技术发展迅速。但是,视频数据量大的特点使得CPU大量的被用来处理视频的编解码,在多任务同时执行时候,CPU的负担很重。近年来,在硬件方面,随着超大规模集成电路片上系统SoC(System on Chip)技术的不断发展,基于嵌入式处理器和专用硬件配合工作的编解码器成为设计的主流。很多芯片设计公司推出了带有硬件视频编解码单元的产品。嵌入式处理器软件灵活性,加上专用硬件视频编解码器高效的性能,不仅能够解脱CPU的负担,又能达到高效的视频编解码效率。
然而,众多芯片公司生产的带有硬件视频编解码单元的产品只能结合各自开发的嵌入式处理器软件,无线视频实时传输方式不统一,不具备通用性,因此需要一种适用于所有的具有硬件编解码模块的ARM处理器的无线视频实时传输方法。
发明内容
本发明的目的在于,提供一种基于Linphone、FFmpeg及硬件编解码模块的无线视频实时传输方法,该传输方法适用于所有带有硬件视频编解码模块的ARM处理器。
本发明的目的在于,提供一种基于Linphone、FFmpeg及硬件编解码模块的无线视频实时传输方法,适用于带有视频编解码模块的ARM开发板,解决了软件视频编解码占用大量CPU资源的问题,具有高效的视频编解码效率。
为达到上述目的,本发明采用如下技术手段:
一种无线视频实时传输方法,其特征在于包括以下步骤:将硬件视频处理单元注册进开源软件FFmpeg中,作为FFmpeg的硬件编解码器;将FFmpeg的硬件编解码器嵌入进开源软件Linphone中;用户空间应用层通过调用Linphone,进一步调用嵌入其中的FFmpeg硬件编解码器,将视频编解码过程交由硬件视频处理单元处理。
将硬件视频处理单元注册进开源软件FFmpeg包括以下步骤:在FFmpeg中添加硬件视频处理单元库函数文件;在所述的库函数中添加头文件,声明FFmpeg调用硬件视频处理单元所需的编解码器接口函数,实现在FFmpeg中分别添加编解码器。
在FFmpeg中添加编码器包括以下步骤:初始化硬件视频处理单元编码器接口函数;编码一帧图像;关闭硬件视频处理单元编码器接口函数。
在X264.c文件中添加硬件视频处理单元编码器接口函数。
在FFmpeg中添加解码器包括以下步骤:初始化硬件视频处理单元解码器接口函数;解码一帧图像;关闭硬件视频处理单元解码器接口函数。
在H264.c文件中添加硬件视频处理单元解码器接口函数。
通过交叉编译将FFmpeg的硬件编解码器嵌入进开源软件Linphone中,设置Linphone传输视频信号,并指定传输路径为FFmpeg路径。
Linphone基于会话初始协议及实时传输协议开发。
硬件视频处理单元选用i.mx27微处理器。
本发明的有益效果在于:本发明的无线视频实时传输方法适用于所有带有硬件视频编解码模块的ARM处理器,具有通用性,所有的具有硬件编解码模块的产品都可以使用这种方法完成在无线环境中的视频实时传输。此外,视频实时传输具有大数据量、时延敏感的特点,对于自带有硬件视频编解码模块的设备来说,可以交给硬件视频编解码模块完成视频数据的压缩编解码任务,减轻了CPU的负担,提高了压缩效率。
附图说明
图1是本发明视频实时传输方法的步骤流程图。
图2是本发明视频实时传输系统软件架构图。
图3是本发明基于i.m27处理器实现视频实时传输系统软件架构图。
具体实施方式
下面结合附图及实施例对本发明的发明内容作进一步的描述。
本发明以飞思卡尔(Freescale)公司推出的i.mx27微处理器为例说明,i.mx27微处理器基于ARM926EJ-S内核,片内集成了硬件视频处理单元VPU,支持的编解码格式有H.264、MPEG4、H.263,能够处理的分辨率有720x480@30fps、720x576@25fps、640x480@30fps。本发明应用于该处理器,通过添加VPU 硬件H.264编解码器进入FFmpeg,然后linphone对FFmpeg的调用来实现无线视频实时传输。H.264是一种视频编解码标准,就是将视频数据压缩编码,以减少数据量太大的问题,相应地,在接收端进行相应地解码。
Linphone和FFmpeg是一种开源软件架构,Linphone中的视频处理过程是由嵌入其中的开源软件FFmpeg完成,FFmpeg支持多种编解码格式。
本发明是将i.mx27微处理器中的视频处理单元VPU注册进开源软件FFmpeg中,当做它的一个编解码器,再把FFmpeg编译进另一个开源软件Linphone中,用户空间应用层调用Linphone时就自动调用了嵌入其中的FFmpeg的硬件编解码器VPU,这样,整个视频编解码过程就交给了硬件编解码器来处理,不占用CPU资源。
图1为本发明视频实时传输方法的步骤流程图,图2为本发明视频实时传输系统软件架构图,图3为本发明基于i.m27处理器实现视频实时传输系统软件架构图,以下结合图1、2、3具体说明本发明视频实时传输的过程。
步骤一:将硬件视频处理单元VPU注册进开源软件FFmpeg中,作为FFmpeg的硬件编解码器。
FFmpeg是一个集录制、转换、音/视频编码解码功能为一体的完整的开源解决方案。FFmpeg支持MPEG4、FLV等多种编码,AVI、OGG、ASF等多种解码。encoder/decoder和muxer/demuxer是以函数指针的方式作为开放的公共接口。
首先,在FFmpeg中添加VPU的库函数,主要是在libavcodec文件夹下添加mx27文件夹,里面有vpu_lib.h、vpu_lib.c、vpu_codec.h、vpu_codec.c、vpu_io.c、vpu_io.h、vpu_display.c、vpu_display.h等库函数文件。
其次,分别添加VPU硬件编码器和VPU硬件解码器。
添加头文件#include "mx27/vpu_codec.h"。头文件vpu_codec.h中声明了FFmpeg调用硬件VPU所需的接口函数。包括初始化VPU编码器vpu_ff_EncodeInit(AVCodecContext *avctx)、关闭VPU编码器函数int vpu_ff_EncodeClose(void)、编码一帧函数vpu_ff_EncodePicture(AVCodecContext *avctx, unsigned char *buf, int buf_size, void *data)、解码一帧函数vpu_ff_DecodePicture(AVCodecContext *avctx, FRAME_BUF **pfb,uint8_t *buf, int buf_size)、初始化解码器函数vpu_ff_DecodeInit(AVCodecContext *avctx)关闭解码器函数vpu_ff_DecodeClose(void)。
(1)添加VPU硬件编码器
添加VPU硬件编码器是在libavcodec/libx264.c函数中。FFmpeg在发送端相当于一个录制机,录制视频,然后把视频进行压缩编码,使用VPU硬件编码器就是在这里注册进去的。编码器通过下面接口注册进入FFmpeg:
AVCodec libx264_encoder = {
.name = "libx264",
.type = CODEC_TYPE_VIDEO,
.id = CODEC_ID_H264,
.priv_data_size = 10,
.init = X264_init,
.encode = X264_frame,
.close = X264_close,
.capabilities = CODEC_CAP_DELAY,
.pix_fmts = (enum PixelFormat[]) { PIX_FMT_YUV420P, -1 }
};
其中,X264_init是初始化编码器接口函数,X264_frame是编码一帧图像接口函数,X264_close是关闭编码器接口函数。类似地,将VPU的编码相关库函数添加进入相应地接口函数。具体是在X264_init()编码器初始化中,添加函数vpu_ff_EncodeInit()进行VPU编码器的初始化操作;在编码接口函数X264_frame()中添加VPU编码函数vpu_ff_EncodePicture(),编码一帧图像;在关闭编码器接口函数X264_close()中调用VPU编码器关闭函数vpu_ff_EncodeClose(),关闭VPU编码器。
(2)添加VPU硬件解编码器
VPU硬件解码器在文件h264.c文件中添加。
注册H.264进入FFmpeg的解码器。添加VPU硬件解码器是在libavcodec/h264.c函数中,解码器通过以下接口注册进入FFmpeg:
AVCodec h264_decoder = {
"h264",
CODEC_TYPE_VIDEO,
CODEC_ID_H264,
sizeof(H264Context),
decode_init,
NULL,
decode_end,
decode_frame,
CODEC_CAP_DR1 | CODEC_CAP_TRUNCATED | CODEC_CAP_DELAY,
.flush= flush_dpb,
};
其中decode_init是解码器初始化接口函数,decode_end是结束解码调用接口函数,decode_frame是解码调用接口函数。相应地,将VPU的解码相关库函数添加进入相应的接口函数。具体是在decode_init()解码器初始化中,添加函数vpu_ff_DecodeInit()进行VPU解码器的初始化;在解码函数decode_frame()添加VPU解码函数vpu_ff_DecodePicture(),VPU解码一帧图像;在关闭解码器函数decode_end()中调用VPU解码器关闭函数vpu_ff_DecodeClose(),关闭VPU解码器。
这样,在使用H264编解码视频时,就调用了VPU,使用硬件编解码器完成视频编解码。
步骤二:将FFmpeg的硬件编解码器嵌入进开源软件Linphone中。
将FFmpeg的硬件编解码器嵌入Linphone是通过交叉编译实现的,也就是把该Linphone程序移植到开发板上,使该程序在开发板上运行起来进行编译。
通过交叉编译将FFmpeg的硬件编解码器嵌入进开源软件Linphone中,设置Linphone可传输视频信号,并指定传输路径为FFmpeg路径。编译Linphone的./configure,指定选项--enable-video ,并设定--with-FFmpeg=FFmpeg_PATH。其中,FFmpeg_PATH是FFmpeg路径,这样就把FFmpeg编译到Linphone中了。由于在步骤一中已将硬件视频处理单元VPU注册进开源软件FFmpeg中作为FFmpeg的硬件编解码器,因此,在编译FFmpeg时,就将FFmpeg的硬件编解码器嵌入进了开源软件Linphone中。
步骤三:用户空间应用层通过调用Linphone,进一步调用嵌入其中的FFmpeg的硬件编解码器,将视频编解码过程交由硬件视频处理单元处理。
Linphone是一种基于WEB的IP电话工具,运行于Linux和Windows xp下。通过Linphone可以通过呼叫在互联网上的其他人的IP来与其自由地进行声音、视频通信,也可以进行即时文本信息传送。Linphone是遵从SIP(Session Initiation Protocol) 会话初始协议及RTP(Real-time Transport Protocol)实时传输协议开发的,它需要和支持SIP协议的电话或者代理服务器进行相互操作。
Linphone软件的实现需要很多依赖库,跟视频编解码有关的依赖库主要是FFmpeg;跟音频编解码有关的库主要是libogg、speex;跟传输有关的库主要是libosip2和libeXosip2。音频的编解码和传输是使用的linphone自带的编解码方案和传输方式完成。
另外,本发明完成了基于i.mx27微处理器的ARM-Linux音视频应用程序的交叉编译、移植与在无线环境中的传输测试。
本发明的无线视频实时传输方法适用于所有带有硬件视频编解码模块的ARM处理器,具有通用性,所有的具有硬件编解码模块的产品都可以使用这种方法完成在无线环境中的视频实时传输。此外,视频实时传输具有大数据量、时延敏感的特点,对于自带有硬件视频编解码模块的设备来说,可以交给硬件视频编解码模块完成视频数据的压缩编解码任务,减轻了CPU的负担,提高了压缩效率。
Claims (9)
1.一种无线视频实时传输方法,其特征在于包括以下步骤:
将硬件视频处理单元注册进开源软件FFmpeg中,作为FFmpeg的硬件编解码器;
将FFmpeg的硬件编解码器嵌入进开源软件Linphone中;
用户空间应用层通过调用Linphone,进一步调用嵌入其中的FFmpeg硬件编解码器,将视频编解码过程交由硬件视频处理单元处理。
2.如权利要求1所述的无线视频实时传输方法,其特征在于,将硬件视频处理单元注册进开源软件FFmpeg包括以下步骤:
在FFmpeg中添加硬件视频处理单元库函数文件;
在所述的库函数中添加头文件,声明FFmpeg调用硬件视频处理单元所需的编解码器接口函数,实现在FFmpeg中分别添加编解码器。
3.如权利要求2所述的无线视频实时传输方法,其特征在于,在FFmpeg中添加编码器包括以下步骤:
初始化硬件视频处理单元编码器接口函数;
编码一帧图像;
关闭硬件视频处理单元编码器接口函数。
4.如权利要求3所述的无线视频实时传输方法,其特征在于:在X264.c文件中添加硬件视频处理单元编码器接口函数。
5.如权利要求2所述的无线视频实时传输方法,其特征在于,在FFmpeg中添加解码器包括以下步骤:
初始化硬件视频处理单元解码器接口函数;
解码一帧图像;
关闭硬件视频处理单元解码器接口函数。
6.如权利要求5所述的无线视频实时传输方法,其特征在于:在H264.c文件中添加硬件视频处理单元解码器接口函数。
7.如权利要求1所述的无线视频实时传输方法,其特征在于:通过交叉编译将FFmpeg的硬件编解码器嵌入进开源软件Linphone中,设置Linphone传输视频信号,并指定传输路径为FFmpeg路径。
8.如权利要求7所述的无线视频实时传输方法,其特征在于:Linphone基于会话初始协议及实时传输协议开发。
9.如权利要求8所述的无线视频实时传输方法,其特征在于:硬件视频处理单元选用i.mx27微处理器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010596446 CN102098513A (zh) | 2010-12-20 | 2010-12-20 | 无线视频实时传输方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010596446 CN102098513A (zh) | 2010-12-20 | 2010-12-20 | 无线视频实时传输方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102098513A true CN102098513A (zh) | 2011-06-15 |
Family
ID=44131351
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201010596446 Pending CN102098513A (zh) | 2010-12-20 | 2010-12-20 | 无线视频实时传输方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102098513A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102929654A (zh) * | 2012-09-21 | 2013-02-13 | 福建天晴数码有限公司 | 一种在游戏中内嵌视频播放的方法 |
CN104104913A (zh) * | 2014-07-14 | 2014-10-15 | 华侨大学 | 一种基于安卓系统的智能分布式视频采集系统 |
CN104869474A (zh) * | 2014-02-24 | 2015-08-26 | 风网科技(北京)有限公司 | 一种可扩展的移动流媒体系统及其应用方法 |
CN104994390A (zh) * | 2015-06-30 | 2015-10-21 | 湖南基石通信技术有限公司 | 一种嵌入式视频处理器、系统及构建方法 |
CN105872755A (zh) * | 2015-12-07 | 2016-08-17 | 乐视云计算有限公司 | 视频播放方法及装置 |
CN106899308A (zh) * | 2017-01-19 | 2017-06-27 | 中国科学院信息工程研究所 | 一种软硬件结合的自适应实时gzip数据解压缩方法及系统 |
CN107147916A (zh) * | 2017-06-09 | 2017-09-08 | 苏州蜗牛数字科技股份有限公司 | 一种在传输层上传输h.265编码视频数据的方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101295263A (zh) * | 2008-06-23 | 2008-10-29 | 北京中星微电子有限公司 | 多媒体工程及对第三方库文件进行编译的系统和方法 |
CN101329758A (zh) * | 2008-07-30 | 2008-12-24 | 优视动景(北京)技术服务有限公司 | 一种多媒体数据跨进程处理系统 |
-
2010
- 2010-12-20 CN CN 201010596446 patent/CN102098513A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101295263A (zh) * | 2008-06-23 | 2008-10-29 | 北京中星微电子有限公司 | 多媒体工程及对第三方库文件进行编译的系统和方法 |
CN101329758A (zh) * | 2008-07-30 | 2008-12-24 | 优视动景(北京)技术服务有限公司 | 一种多媒体数据跨进程处理系统 |
Non-Patent Citations (1)
Title |
---|
《电子产品世界》 20090930 缐晓林等 基于i.MX27的网络音视频通信的实现 , * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102929654A (zh) * | 2012-09-21 | 2013-02-13 | 福建天晴数码有限公司 | 一种在游戏中内嵌视频播放的方法 |
CN102929654B (zh) * | 2012-09-21 | 2015-09-23 | 福建天晴数码有限公司 | 一种在游戏中内嵌视频播放的方法 |
CN104869474A (zh) * | 2014-02-24 | 2015-08-26 | 风网科技(北京)有限公司 | 一种可扩展的移动流媒体系统及其应用方法 |
CN104104913A (zh) * | 2014-07-14 | 2014-10-15 | 华侨大学 | 一种基于安卓系统的智能分布式视频采集系统 |
CN104994390A (zh) * | 2015-06-30 | 2015-10-21 | 湖南基石通信技术有限公司 | 一种嵌入式视频处理器、系统及构建方法 |
CN105872755A (zh) * | 2015-12-07 | 2016-08-17 | 乐视云计算有限公司 | 视频播放方法及装置 |
WO2017096885A1 (zh) * | 2015-12-07 | 2017-06-15 | 乐视控股(北京)有限公司 | 视频播放方法及装置 |
CN106899308A (zh) * | 2017-01-19 | 2017-06-27 | 中国科学院信息工程研究所 | 一种软硬件结合的自适应实时gzip数据解压缩方法及系统 |
CN106899308B (zh) * | 2017-01-19 | 2020-05-22 | 中国科学院信息工程研究所 | 一种软硬件结合的自适应实时gzip数据解压缩方法及系统 |
CN107147916A (zh) * | 2017-06-09 | 2017-09-08 | 苏州蜗牛数字科技股份有限公司 | 一种在传输层上传输h.265编码视频数据的方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102098513A (zh) | 无线视频实时传输方法 | |
TWI725299B (zh) | 圖片檔處理方法、設備及儲存介質 | |
CN110115835B (zh) | 基于Android系统的云游戏运行方法及服务器 | |
TW201914300A (zh) | 一種影像資料的編碼、解碼方法及裝置 | |
CN102074257A (zh) | 软硬件结合解码的通用多媒体播放设备及其播放方法 | |
JPH11177946A (ja) | 符号化装置、符号化方法、復号装置、復号方法、および、提供媒体 | |
JP2010524379A (ja) | エンコーダ及びデコーダの低複雑度を伴うビデオ符号化のための高精度動きベクトル | |
CN105491387B (zh) | 一种基于Intel、AMD和Nvidia三平台的H264硬件编码系统 | |
CN102131084A (zh) | 音视频流媒体rtmp推送装置和音视频流媒体rtmp推送方法 | |
CN103916678A (zh) | 多媒体数据转码方法、转码设备及多媒体数据播放系统 | |
CN102802024A (zh) | 在服务器端实现的转码方法以及转码系统 | |
CN104980682A (zh) | 一种智能动态高清视频传输系统 | |
CN106550242B (zh) | Ip实时媒体流的转换方法和装置 | |
CN111083450A (zh) | 车机端图像远程输出方法、装置及系统 | |
US11323706B2 (en) | Method and apparatus for aspect-ratio dependent filtering for intra-prediction | |
CN111885412B (zh) | Hdmi信号传屏方法及无线传屏器 | |
CN109743643B (zh) | 楼宇对讲系统的处理方法及装置 | |
CN112073586A (zh) | 一种从安卓系统获取通话录音数据的方法和系统 | |
CN1933595A (zh) | 家庭内视频监控系统及基于手机的视频采集传输方法 | |
CN102223537B (zh) | 基于压缩感知的多视角分布式视频编解码系统及其方法 | |
CN114024787B (zh) | 智能家居的远程控制方法、装置、设备和存储介质 | |
CN212137851U (zh) | 一种支持hevc解码的视频输出设备 | |
Wei et al. | Applications of a Streaming Video Server in a mobile phone live streaming system | |
WO2016107174A1 (zh) | 多媒体文件数据的处理方法及系统、播放器和客户端 | |
CN103269356A (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 | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20110615 |