CN113709518B - 一种基于rtsp协议的视频实时传输模式设计方法 - Google Patents
一种基于rtsp协议的视频实时传输模式设计方法 Download PDFInfo
- Publication number
- CN113709518B CN113709518B CN202110974375.8A CN202110974375A CN113709518B CN 113709518 B CN113709518 B CN 113709518B CN 202110974375 A CN202110974375 A CN 202110974375A CN 113709518 B CN113709518 B CN 113709518B
- Authority
- CN
- China
- Prior art keywords
- video
- data
- stream
- module
- decoding
- 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
Links
- 230000005540 biological transmission Effects 0.000 title claims abstract description 70
- 238000000034 method Methods 0.000 title claims abstract description 45
- 238000013461 design Methods 0.000 title claims abstract description 14
- 238000012545 processing Methods 0.000 claims abstract description 38
- 238000004891 communication Methods 0.000 claims abstract description 25
- 238000012958 reprocessing Methods 0.000 claims abstract description 7
- 230000006870 function Effects 0.000 claims description 38
- 230000008569 process Effects 0.000 claims description 26
- 230000007246 mechanism Effects 0.000 claims description 9
- 230000008859 change Effects 0.000 claims description 6
- 238000012544 monitoring process Methods 0.000 claims description 6
- 230000006378 damage Effects 0.000 claims description 3
- 230000009191 jumping Effects 0.000 claims description 3
- 238000004064 recycling Methods 0.000 claims description 2
- 238000005516 engineering process Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/234—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/65—Network streaming protocols, e.g. real-time transport protocol [RTP] or real-time control protocol [RTCP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/75—Media network packet handling
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/80—Responding to QoS
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/141—Setup of application sessions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/163—In-band adaptation of TCP data exchange; In-band control procedures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/164—Adaptation or special uses of UDP protocol
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing 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/44—Processing 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/60—Network 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/63—Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
- H04N21/643—Communication protocols
- H04N21/6437—Real-time Transport Protocol [RTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/80—Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
- H04N21/85—Assembly of content; Generation of multimedia applications
- H04N21/858—Linking data to content, e.g. by linking an URL to a video object, by creating a hotspot
- H04N21/8586—Linking data to content, e.g. by linking an URL to a video object, by creating a hotspot by using a URL
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明涉及一种基于RTSP协议的视频实时传输模式设计方法,属于视频编解码领域。本发明提供上层用户命令接口,视频处理模块板卡通过udp通信接收上层用户指令;根据用户命令指令进行视频实时收发;从网络接收用户发送的原始视频数据并按照RTSP协议获取视频数据,通过用户指定的参数进行视频解码模块的设置,该模块解码后的数据经过视频处理模块传输到视频输出模式显示,同时视频处理模块还将数据传输到视频编码模块进行视频再次加工;接收到用户停止指令后,将编解码模块的绑定关系解除并清除系统资源;接收到用户退出程序指令后,退出主循环流程。本发明有效地减少视频传输中丢帧和花屏现象。
Description
技术领域
本发明属于视频编解码领域,具体涉及一种基于RTSP协议的视频实时传输模式设计方法。
背景技术
Hi3559AV100是专业的8K Ultra HD Mobile Camera SOC,它提供了8K30/4K120广播级图像质量的数字视频录制,支持多路Sensor输入,支持H.265编码输出或影视级的RAW数据输出,并集成高性能ISP处理,同时采用先进低功耗工艺和低功耗架构设计,为用户提供了卓越的图像处理能力。
Hi3559AV100支持业界领先的多路4K Sensor输入,多路ISP图像处理,支持HDR10高动态范围技术标准,并支持多路全景硬件拼接。在支持8K30/4K120视频录制下,Hi3559AV100提供硬化的6-Dof数字防抖,减少了对机械云台的依赖。视频输入单元VI(Video Input),可以通过MIPI Rx(包含MIPI、LVDS、HiSPi、SLVS_EC)接口、BT.656/601、BT.1120接口和DC(Digital Camera)接收视频数据,存入指定的内存区域。VI内嵌ISP图像处理单元,可以直接对接外部原始数据(BAYER RGB数据)。典型的编码流程包括了输入图像的接收、图像内容的遮挡和覆盖、图像的编码、以及码流的输出等过程。解码过程则是编码的逆过程。
传统的视频推拉流过程,常因为网络时延或者其他问题出现视频丢帧花屏的现象,对视频的收发设置也无法满足实时需求。为了解决linux系统下的视频实时传输问题,提出一种基于RTSP协议的视频实时传输模式设计方法。
发明内容
(一)要解决的技术问题
本发明要解决的技术问题是如何提供一种基于RTSP协议的视频实时传输模式设计方法,以解决linux系统下的视频实时传输问题。
(二)技术方案
为了解决上述技术问题,本发明提出一种基于RTSP协议的视频实时传输模式设计方法,该方法包括如下步骤:
S1、提供上层用户命令接口
视频处理模块板卡通过udp通信接收上层用户指令,指令类型如下:
视频传输开始;
视频传输结束;
退出程序;
S2、根据用户命令指令进行视频实时收发
首先,主函数初始化udp通信,然后,进入通讯主循环,在主循环中遍历查询用户命令字内容,根据不同工作模式进行不同工作流程;
S21、视频传输流程
该流程从网络接收用户发送的原始视频数据并按照RTSP协议获取视频数据,通过用户指定的参数进行视频解码模块的设置,该模块解码后的数据经过视频处理模块传输到视频输出模式显示,同时视频处理模块还将数据传输到视频编码模块进行视频再次加工,该过程通过用户指定的参数进行视频编码模块的设置,接收视频处理模块传输的数据,将处理加工后的数据按照RTSP协议规则发送;
S22、视频通信停止设置
接收到用户停止指令后,将编解码模块的绑定关系解除并清除系统资源;
S23、主循环停止设置
接收到用户退出程序指令后,退出主循环流程。
进一步地,所述步骤S1中的视频传输开始指令包括设置传输的视频编解码类型,分辨率大小,传输的端口,视频传输结束指令用于停止视频的发送和接收过程,销毁和回收视频传输过程的资源,退出程序指令用于停止应用程序。
进一步地,所述步骤S2首先,主函数初始化udp通信,然后,进入通讯主循环,在主循环中遍历查询用户命令字内容,根据不同工作模式进行不同工作流程具体包括:
首先,主函数初始化udp通信线程;设定UDP套接字,创建UDP接收线程;在线程入口函数中遍历查询是否退出网络接收任务,如果是则退出入口函数的循环,如果不是则从网络套接字接收网络报文,分析报文合法性并解析命令字;启动锁机制对报文提取的命令字内容进行变量写操作,防止与主循环读操作冲突;
然后,进入传输主循环;在主循环中遍历查询用户命令字内容,根据不同工作模式进行不同工作流程。
进一步地,所述步骤S21具体包括如下步骤:
S211、启动视频接收任务;
S212、启动视频解码任务;
S213、绑定视频解码模块和视频处理模块、视频处理模块和视频输出模块,创建好绑定关系的模块能自动化形成流水线处理视频数据;视频解码模块的数据发送到视频处理模块进行再次处理,视频处理模块进行再加工的数据输出到视频输出模块进行显示可查看拉流回来的原始视频图像;视频解码模块用于视频叠加、缩放功能;
S214、启动视频发送任务。
进一步地,所述步骤S211具体包括如下步骤:
S21101、使用ffmpeg动态库函数av_dict_set配置视频流传输过程属性;
S21102、注册ffmpeg上下文环境format_ctx,初始化ffmpeg内部组件;
S21103、对网络功能进行全局初始化;
S21104、使用avformat_open_input库函数打开媒体文件的url地址,并进行解析,如果打开错误则报错退出该过程等待下次视频传输,否则进入下一步;
S21105、使用avformat_find_stream_info库函数读取媒体文件的数据包获取视频流信息,获取成功则退出该过程等待下次视频传输,否则进入下一步;
S21106、初始化视频流video_stream_index和音频流索引audio_stream_index;
S21107、循环遍历上下文环境format_ctx中的获取的流数据包个数,直到所有流数据包遍历完成进入第S21112步;
S21108、判断当前流数据类型是否为音频流,如果是则进行下一步,否则进行第S21110步;
S21109、记录音频流的索引号,并保存在audio_stream_index标记中;
S21110、判断当前流数据类型是否为视频流,如果是则进行下一步,否则返回到S21107步;
S21111、记录视频流的索引号,并保存在video_stream_index标记中;
S21112、判断视频流索引video_stream_index是否为初始值,如果是则退出本次视频传输过程,否则进入下一步;
S21113、判断视频流索引video_stream_index是否为初始值,如果是则提示没有音频流,否则进入下一步;
S21114、使用av_packet_alloc库函数动态申请数据包packet对象;
S21115、进入视频流传输循环;
S21116、申请互斥锁资源,获取退出标志,释放互斥锁资源;
S21117、查看退出标识是否为真,如果是,则退出该传输循环过程,如果不是则进行下一步;
S21118、使用av_read_frame函数从数据包中读取完整图像帧信息,读取成功则进入下一步,否则跳转到S21116步;
S21119、判断图像帧序号和步骤S21111中记录的视频流序号一致时,进行下一步,如果不是则进行第S21123步;
S21120、判断数据包中的数据是否不为null且大小不为0,如果是则进行下一步,不是则进行第S21123步;
S21121、创建解码通道对象,设置该次解码任务的协议类型、图像数据格式(帧模式或者流模式);
S21122、将图像帧存入环形缓冲区并从环形缓冲区取帧发送给解码任务;
S21123、释放数据包对象资源;
S21124、释放上下文环境资源。
进一步地,所述步骤S212具体包括如下步骤:
S21201、创建解码通道对象,设置通道属性和参数;
S21202、获取从视频接收任务中发送的图像帧;
S21203、区分当前解码的格式;
S21204、设置发送码流的格式;
S21205、启动解码模块,创建线程循环发送图像帧到解码模块进行解码。
进一步地,所述步骤S214具体包括:
S21401、设置服务器信息属性;
S21402、设定视频发送环形缓存池和TCP监听端口,创建线程循环监听外界的TCP连接请求,并建立TCP连接;
S21403、创建监控环形缓存池数据线程,并根据数据创建TCP会话;
S21404、根据编码模块、编码模式、通道号、编码协议类型、图像大小、编码模式启动编码任务;
S21405、当监听到TCP连接建立后就启动视频发送任务:将上一个步骤的环形缓存区数据按照RTSP协议发送出去。
进一步地,所述步骤S21404具体包括如下步骤:
根据通道号、编码协议类型、图像大小、编码模式创建编码通道;
绑定视频处理模块和视频编码模块;
启动编码模块;
根据通道号从编码通道接收图像数据,具体步骤如下:
获取编码通道句柄,以文件形式打开句柄;
查询编码通道状态,如果状态为正常则进行下一步,否则退出;
查询通道内目前数据包个数,根据个数动态申请内存控件;
从数据包中获取单个图像帧数据;
将图像帧数据写入到环形缓存区;
释放图像帧对象和数据包对象空间。
进一步地,所述步骤S22具体包括如下步骤:
S221、循环等待接收到用户停止指令,将视频传输的全局变量标识进行关闭锁操作后再进行写操作,然后打开锁操作;
S222、在视频通信线程中启动锁机制监听该标识的改变状态,根据状态值启动线程销毁流程;
S223、将编解码模块和视频处理模块、输出模块的绑定关系解除并清除板卡系统资源;
S224、将视频接收和发送的线程终止,并清除网络资源。
进一步地,所述步骤S23具体包括如下步骤:
S231、循环等待接收到用户退出程序指令;
S232、将退出应用程序的全局变量标识进行关闭锁操作后再进行写操作,然后打开锁操作;
S233、在主线程中启动锁机制监听该标识的改变状态,退出主循环流程,不再接收用户的任何指令。
(三)有益效果
本发明提出一种基于RTSP协议的视频实时传输模式设计方法,采用上述操作步骤,本发明可以解决linux系统下视频的传输问题,该方法已经经过了实验检验。结果标明,该方案可以实现在linux系统下视频的传输功能,有效地减少视频传输中丢帧和花屏现象。
附图说明
图1为本发明基于RTSP协议的视频实时传输模式设计流程图;
图2为视频数据流图。
具体实施方式
为使本发明的目的、内容和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。
本发明属于linux系统下视频编解码技术,在系统为linux的应用场景下,针对海思Hi3559AV100芯片特点,并结合编解码器特性和RTSP协议特点,设计实现了一种基于RTSP协议的视频实时传输模式设计方案。本发明提供用户上层指令接口,对视频进行编码类型、分辨率、码率可控,对接收的视频进行解码显示,同时进行编码发送,实现视频的推拉流过程。
本发明的目的是在linux平台下,解决视频实时传输问题。
为实现上述目的,本发明采取以下技术方案。
S1、提供上层用户命令接口
视频处理模块板卡通过udp通信接收上层用户指令。指令类型如下:
视频传输开始;
视频传输结束;
退出程序。
S2、根据用户命令指令进行视频实时收发
首先,主函数初始化udp通信。然后,进入通讯主循环。在主循环中遍历查询用户命令字内容,根据不同工作模式进行不同工作流程。
S21、视频传输流程
该流程从网络接收用户发送的原始视频数据并按照RTSP协议获取视频数据。通过用户指定的参数进行视频解码模块的设置,该模块解码后的数据经过视频处理模块传输到视频输出模式显示,同时视频处理模块还将数据传输到视频编码模块进行视频再次加工。该过程通过用户指定的参数进行视频编码模块的设置,接收视频处理模块传输的数据,将处理加工后的数据按照RTSP协议规则发送。
S22、视频通信停止设置
接收到用户停止指令后,将编解码模块的绑定关系解除并清除系统资源。
S23、主循环停止设置
接收到用户退出程序指令后,退出主循环流程。
通过以上步骤,可以实现linux系统下的视频实时传输功能。
结合图1,为了解决linux系统下视频传输问题,我们采用基于RTSP协议的设计方法。下面我们对本发明的内容作进一步描述。
S1、提供上层用户命令接口
视频处理模块板卡通过udp通信接收上层用户指令。指令类型如下:
S11、视频传输开始;
视频传输开始指令包括设置传输的视频编解码类型,分辨率大小,传输的端口。
S12、视频传输结束;
停止视频的发送和接收过程,销毁和回收视频传输过程的资源。
S13、退出程序。
停止应用程序。
S2、根据用户命令指令进行视频实时收发
首先,主函数初始化udp通信线程。设定UDP套接字,创建UDP接收线程。在线程入口函数中遍历查询是否退出网络接收任务,如果是则退出入口函数的循环,如果不是则从网络套接字接收网络报文,分析报文合法性并解析命令字。启动锁机制对报文提取的命令字内容进行变量写操作,防止与主循环读操作冲突。
然后,进入传输主循环。在主循环中遍历查询用户命令字内容,根据不同工作模式进行不同工作流程。
S21、视频传输流程
流程创建视频接收任务从网络接收用户发送的原始视频数据并按照RTSP协议获取视频数据。启动视频解码任务,通过用户指定的参数进行视频解码模块的设置,该模块解码后的数据经过视频处理模块传输到视频输出模式显示。同时,创建视频发送任务,通过用户指定的参数进行视频编码模块的设置,接收视频处理模块传输的数据,将处理后的数据按照RTSP协议规则发送给视频客户端。具体步骤如下:
S211、启动视频接收任务,具体操作如下:
S21101、使用ffmpeg动态库函数av_dict_set配置视频流传输过程属性;
S21102、注册ffmpeg上下文环境format_ctx,初始化ffmpeg内部组件;
S21103、对网络功能进行全局初始化;
S21104、使用avformat_open_input库函数打开媒体文件的url地址,并进行解析,如果打开错误则报错退出该过程等待下次视频传输,否则进入下一步;
S21105、使用avformat_find_stream_info库函数读取媒体文件的数据包获取视频流信息,获取成功则退出该过程等待下次视频传输,否则进入下一步;
S21106、初始化视频流video_stream_index和音频流索引audio_stream_index;
S21107、循环遍历上下文环境format_ctx中的获取的流数据包个数,直到所有流数据包遍历完成进入第S21112步;
S21108、判断当前流数据类型是否为音频流,如果是则进行下一步,否则进行第S21110步;
S21109、记录音频流的索引号,并保存在audio_stream_index标记中;
S21110、判断当前流数据类型是否为视频流,如果是则进行下一步,否则返回到S21107步;
S21111、记录视频流的索引号,并保存在video_stream_index标记中;
S21112、判断视频流索引video_stream_index是否为初始值,如果是则退出本次视频传输过程,否则进入下一步;
S21113、判断视频流索引video_stream_index是否为初始值,如果是则提示没有音频流,否则进入下一步;
S21114、使用av_packet_alloc库函数动态申请数据包packet对象;
S21115、进入视频流传输循环;
S21116、申请互斥锁资源,获取退出标志,释放互斥锁资源;
S21117、查看退出标识是否为真,如果是,则退出该传输循环过程,如果不是则进行下一步;
S21118、使用av_read_frame函数从数据包中读取完整图像帧信息,读取成功则进入下一步,否则跳转到S21116步;
S21119、判断图像帧序号和步骤S21111中记录的视频流序号一致时,进行下一步,如果不是则进行第S21123步;
S21120、判断数据包中的数据是否不为null且大小不为0,如果是则进行下一步,不是则进行第S21123步;
S21121、创建解码通道对象,设置该次解码任务的协议类型、图像数据格式(帧模式或者流模式);
S21122、将图像帧存入环形缓冲区并从环形缓冲区取帧发送给解码任务;
S21123、释放数据包对象资源;
S21124、释放上下文环境资源;
S212、启动视频解码任务,步骤如下:
S21201、创建解码通道对象,设置通道属性和参数;
S21202、获取从视频接收任务中发送的图像帧;
S21203、区分当前解码的格式;
S21204、设置发送码流的格式;
S21205、启动解码模块,创建线程循环发送图像帧到解码模块进行解码;
S213、绑定视频解码模块和视频处理模块、视频处理模块和视频输出模块(前者是数据源,后者是数据接收者),创建好绑定关系的模块能自动化形成流水线处理视频数据。视频解码模块的数据发送到视频处理模块进行再次处理,视频处理模块进行再加工的数据输出到视频输出模块进行显示可查看拉流回来的原始视频图像。视频解码模块用于视频叠加、缩放等进一步地功能。
S214、启动视频发送任务。
S21401、设置服务器信息属性;
S21402、设定视频发送环形缓存池和TCP监听端口,创建线程循环监听外界的TCP连接请求,并建立TCP连接;
S21403、创建监控环形缓存池数据线程,并根据数据创建TCP会话;
S21404、根据编码模块、编码模式、通道号、编码协议类型、图像大小、编码模式启动编码任务。具体操作如下:
根据通道号、编码协议类型、图像大小、编码模式创建编码通道;
绑定视频处理模块和视频编码模块;
启动编码模块;
根据通道号从编码通道接收图像数据,具体步骤如下:
获取编码通道句柄,以文件形式打开句柄;
查询编码通道状态,如果状态为正常则进行下一步,否则退出;
查询通道内目前数据包个数,根据个数动态申请内存控件;
从数据包中获取单个图像帧数据;
将图像帧数据写入到环形缓存区;
释放图像帧对象和数据包对象空间;
S21405、当监听到TCP连接建立后就启动视频发送任务:将上一个步骤的环形缓存区数据按照RTSP协议发送出去。
S22、视频通信停止
S221、循环等待接收到用户停止指令,将视频传输的全局变量标识进行关闭锁操作后再进行写操作,然后打开锁操作。
S222、在视频通信线程中启动锁机制监听该标识的改变状态,根据状态值启动线程销毁流程;
S223、将编解码模块和视频处理模块、输出模块的绑定关系解除并清除板卡系统资源;
S224、将视频接收和发送的线程终止,并清除网络资源。
S23、应用程序停止
S231、循环等待接收到用户退出程序指令;
S232、将退出应用程序的全局变量标识进行关闭锁操作后再进行写操作,然后打开锁操作。
S233、在主线程中启动锁机制监听该标识的改变状态,退出主循环流程,不再接收用户的任何指令。
利用上述技术方案,采用上述操作步骤,本发明可以解决linux系统下视频的传输问题,该方法已经经过了实验检验。结果标明,该方案可以实现在linux系统下视频的传输功能,有效地减少视频传输中丢帧和花屏现象。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。
Claims (4)
1.一种基于RTSP协议的视频实时传输模式设计方法,其特征在于,该方法包括如下步骤:
S1、提供上层用户命令接口
视频处理模块板卡通过udp通信接收上层用户指令,指令类型如下:
视频传输开始;
视频传输结束;
退出程序;
S2、根据用户命令指令进行视频实时收发
首先,主函数初始化udp通信,然后,进入通讯主循环,在主循环中遍历查询用户命令字内容,根据不同工作模式进行不同工作流程;
S21、视频传输流程
该流程从网络接收用户发送的原始视频数据并按照RTSP协议获取视频数据,通过用户指定的参数进行视频解码模块的设置,该模块解码后的数据经过视频处理模块传输到视频输出模式显示,同时视频处理模块还将数据传输到视频编码模块进行视频再次加工,该过程通过用户指定的参数进行视频编码模块的设置,接收视频处理模块传输的数据,将处理加工后的数据按照RTSP协议规则发送;
S22、视频通信停止设置
接收到用户停止指令后,将编解码模块的绑定关系解除并清除系统资源;
S23、主循环停止设置
接收到用户退出程序指令后,退出主循环流程;
其中,
所述步骤S2首先,主函数初始化udp通信,然后,进入通讯主循环,在主循环中遍历查询用户命令字内容,根据不同工作模式进行不同工作流程具体包括:
首先,主函数初始化udp通信线程;设定UDP套接字,创建UDP接收线程;在线程入口函数中遍历查询是否退出网络接收任务,如果是则退出入口函数的循环,如果不是则从网络套接字接收网络报文,分析报文合法性并解析命令字;启动锁机制对报文提取的命令字内容进行变量写操作,防止与主循环读操作冲突;
然后,进入传输主循环;在主循环中遍历查询用户命令字内容,根据不同工作模式进行不同工作流程;
所述步骤S21具体包括如下步骤:
S211、启动视频接收任务;
S212、启动视频解码任务;
S213、绑定视频解码模块和视频处理模块、视频处理模块和视频输出模块,创建好绑定关系的模块能自动化形成流水线处理视频数据;视频解码模块的数据发送到视频处理模块进行再次处理,视频处理模块进行再加工的数据输出到视频输出模块进行显示,可查看拉流回来的原始视频图像;视频解码模块用于视频叠加、缩放功能;
S214、启动视频发送任务;
所述步骤S211具体包括如下步骤:
S21101、使用ffmpeg动态库函数av_dict_set配置视频流传输过程属性;
S21102、注册ffmpeg上下文环境format_ctx,初始化ffmpeg内部组件;
S21103、对网络功能进行全局初始化;
S21104、使用avformat_open_input库函数打开媒体文件的url地址,并进行解析,如果打开错误则报错退出该过程等待下次视频传输,否则进入下一步;
S21105、使用avformat_find_stream_info库函数读取媒体文件的数据包获取视频流信息,获取成功则退出该过程等待下次视频传输,否则进入下一步;
S21106、初始化视频流video_stream_index和音频流索引audio_stream_index;
S21107、循环遍历上下文环境format_ctx中的获取的流数据包个数,直到所有流数据包遍历完成进入第S21112步;
S21108、判断当前流数据类型是否为音频流,如果是则进行下一步,否则进行第S21110步;
S21109、记录音频流的索引号,并保存在audio_stream_index标记中;
S21110、判断当前流数据类型是否为视频流,如果是则进行下一步,否则返回到S21107步;
S21111、记录视频流的索引号,并保存在video_stream_index标记中;
S21112、判断视频流索引video_stream_index是否为初始值,如果是则退出本次视频传输过程,否则进入下一步;
S21113、判断视频流索引video_stream_index是否为初始值,如果是则提示没有音频流,否则进入下一步;
S21114、使用av_packet_alloc库函数动态申请数据包packet对象;
S21115、进入视频流传输循环;
S21116、申请互斥锁资源,获取退出标志,释放互斥锁资源;
S21117、查看退出标识是否为真,如果是,则退出该传输循环过程,如果不是则进行下一步;
S21118、使用av_read_frame函数从数据包中读取完整图像帧信息,读取成功则进入下一步,否则跳转到S21116步;
S21119、判断图像帧序号和步骤S21111中记录的视频流序号一致时,进行下一步,如果不是则进行第S21123步;
S21120、判断数据包中的数据是否不为null且大小不为0,如果是则进行下一步,不是则进行第S21123步;
S21121、创建解码通道对象,设置该次解码任务的协议类型、图像数据格式、帧模式或者流模式;
S21122、将图像帧存入环形缓冲区并从环形缓冲区取帧发送给解码任务;
S21123、释放数据包对象资源;
S21124、释放上下文环境资源;
所述步骤S214具体包括:
S21401、设置服务器信息属性;
S21402、设定视频发送环形缓存池和TCP监听端口,创建线程循环监听外界的TCP连接请求,并建立TCP连接;
S21403、创建监控环形缓存池数据线程,并根据数据创建TCP会话;
S21404、根据编码模块、编码模式、通道号、编码协议类型、图像大小、编码模式启动编码任务;
S21405、当监听到TCP连接建立后就启动视频发送任务:将上一个步骤的环形缓存区数据按照RTSP协议发送出去;
所述步骤S22具体包括如下步骤:
S221、循环等待接收到用户停止指令,将视频传输的全局变量标识进行关闭锁操作后再进行写操作,然后打开锁操作;
S222、在视频通信线程中启动锁机制监听该标识的改变状态,根据状态值启动线程销毁流程;
S223、将编解码模块和视频处理模块、输出模块的绑定关系解除并清除板卡系统资源;
S224、将视频接收和发送的线程终止,并清除网络资源;
所述步骤S23具体包括如下步骤:
S231、循环等待接收到用户退出程序指令;
S232、将退出应用程序的全局变量标识进行关闭锁操作后再进行写操作,然后打开锁操作;
S233、在主线程中启动锁机制监听该标识的改变状态,退出主循环流程,不再接收用户的任何指令。
2.如权利要求1所述的基于RTSP协议的视频实时传输模式设计方法,其特征在于,所述步骤S1中的视频传输开始指令包括设置传输的视频编解码类型,分辨率大小,传输的端口,视频传输结束指令用于停止视频的发送和接收过程,销毁和回收视频传输过程的资源,退出程序指令用于停止应用程序。
3.如权利要求1所述的基于RTSP协议的视频实时传输模式设计方法,其特征在于,所述步骤S212具体包括如下步骤:
S21201、创建解码通道对象,设置通道属性和参数;
S21202、获取从视频接收任务中发送的图像帧;
S21203、区分当前解码的格式;
S21204、设置发送码流的格式;
S21205、启动解码模块,创建线程循环发送图像帧到解码模块进行解码。
4.如权利要求1所述的基于RTSP协议的视频实时传输模式设计方法,其特征在于,所述步骤S21404具体包括如下步骤:
根据通道号、编码协议类型、图像大小、编码模式创建编码通道;
绑定视频处理模块和视频编码模块;
启动编码模块;
根据通道号从编码通道接收图像数据,具体步骤如下:
获取编码通道句柄,以文件形式打开句柄;
查询编码通道状态,如果状态为正常则进行下一步,否则退出;
查询通道内目前数据包个数,根据个数动态申请内存控件;从数据包中获取单个图像帧数据;
将图像帧数据写入到环形缓存区;
释放图像帧对象和数据包对象空间。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110974375.8A CN113709518B (zh) | 2021-08-24 | 2021-08-24 | 一种基于rtsp协议的视频实时传输模式设计方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110974375.8A CN113709518B (zh) | 2021-08-24 | 2021-08-24 | 一种基于rtsp协议的视频实时传输模式设计方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113709518A CN113709518A (zh) | 2021-11-26 |
CN113709518B true CN113709518B (zh) | 2023-11-28 |
Family
ID=78654333
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110974375.8A Active CN113709518B (zh) | 2021-08-24 | 2021-08-24 | 一种基于rtsp协议的视频实时传输模式设计方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113709518B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116055768B (zh) * | 2022-12-30 | 2023-08-15 | 南斗六星系统集成有限公司 | 一种精准确定视频观看时长的方法及系统 |
CN116095196A (zh) * | 2023-02-03 | 2023-05-09 | 深圳市灰度科技有限公司 | 一种数据透传方法、装置、设备及介质 |
CN118450517A (zh) * | 2023-12-29 | 2024-08-06 | 荣耀终端有限公司 | 资源配置方法及设备 |
Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102006516A (zh) * | 2010-10-18 | 2011-04-06 | 中山大学 | 一种基于有线电视双向接入的数字家庭内容服务传输方法 |
CN104202656A (zh) * | 2014-09-16 | 2014-12-10 | 国家计算机网络与信息安全管理中心 | 网络音频mp3流乱序分段解码方法 |
CN104202659A (zh) * | 2014-09-16 | 2014-12-10 | 国家计算机网络与信息安全管理中心 | 网络视频流乱序分段解码方法 |
CN105049806A (zh) * | 2015-07-30 | 2015-11-11 | 河海大学 | 嵌入式视频监控系统的设计方法 |
WO2016197865A1 (zh) * | 2015-06-11 | 2016-12-15 | 阿里巴巴集团控股有限公司 | 数据传输方法、装置和智能电视系统 |
CN106331733A (zh) * | 2016-09-28 | 2017-01-11 | 广东科学技术职业学院 | 一种桌面云终端音视频数据实时处理方法及系统 |
WO2017084467A1 (zh) * | 2015-11-18 | 2017-05-26 | 腾讯科技(深圳)有限公司 | 一种视频流的处理方法、装置和系统 |
KR20170114219A (ko) * | 2016-04-05 | 2017-10-13 | 한화테크윈 주식회사 | 웹브라우저 상에서 미디어 스트림을 재생하는 방법 및 장치 |
CN108055595A (zh) * | 2017-12-26 | 2018-05-18 | 合肥中科云巢科技有限公司 | 视频图像的重定向方法、计算机可读存储介质 |
CN108616722A (zh) * | 2018-04-18 | 2018-10-02 | 中南大学 | 一种嵌入式高清视频采集与数据流传输系统 |
CN110022297A (zh) * | 2019-03-01 | 2019-07-16 | 广东工业大学 | 一种高清视频直播系统 |
CN110855996A (zh) * | 2019-09-30 | 2020-02-28 | 中国船舶重工集团公司第七0九研究所 | 一种基于fpga的图像编解码与网络传输的方法与装置 |
CN112261460A (zh) * | 2020-10-19 | 2021-01-22 | 天津津航计算技术研究所 | 一种基于pcie的多路视频解码方案设计方法 |
CN112565627A (zh) * | 2020-11-30 | 2021-03-26 | 天津津航计算技术研究所 | 一种基于位图叠加的多路视频集中显示设计方法 |
-
2021
- 2021-08-24 CN CN202110974375.8A patent/CN113709518B/zh active Active
Patent Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102006516A (zh) * | 2010-10-18 | 2011-04-06 | 中山大学 | 一种基于有线电视双向接入的数字家庭内容服务传输方法 |
CN104202656A (zh) * | 2014-09-16 | 2014-12-10 | 国家计算机网络与信息安全管理中心 | 网络音频mp3流乱序分段解码方法 |
CN104202659A (zh) * | 2014-09-16 | 2014-12-10 | 国家计算机网络与信息安全管理中心 | 网络视频流乱序分段解码方法 |
WO2016197865A1 (zh) * | 2015-06-11 | 2016-12-15 | 阿里巴巴集团控股有限公司 | 数据传输方法、装置和智能电视系统 |
CN105049806A (zh) * | 2015-07-30 | 2015-11-11 | 河海大学 | 嵌入式视频监控系统的设计方法 |
WO2017084467A1 (zh) * | 2015-11-18 | 2017-05-26 | 腾讯科技(深圳)有限公司 | 一种视频流的处理方法、装置和系统 |
KR20170114219A (ko) * | 2016-04-05 | 2017-10-13 | 한화테크윈 주식회사 | 웹브라우저 상에서 미디어 스트림을 재생하는 방법 및 장치 |
CN106331733A (zh) * | 2016-09-28 | 2017-01-11 | 广东科学技术职业学院 | 一种桌面云终端音视频数据实时处理方法及系统 |
CN108055595A (zh) * | 2017-12-26 | 2018-05-18 | 合肥中科云巢科技有限公司 | 视频图像的重定向方法、计算机可读存储介质 |
CN108616722A (zh) * | 2018-04-18 | 2018-10-02 | 中南大学 | 一种嵌入式高清视频采集与数据流传输系统 |
CN110022297A (zh) * | 2019-03-01 | 2019-07-16 | 广东工业大学 | 一种高清视频直播系统 |
CN110855996A (zh) * | 2019-09-30 | 2020-02-28 | 中国船舶重工集团公司第七0九研究所 | 一种基于fpga的图像编解码与网络传输的方法与装置 |
CN112261460A (zh) * | 2020-10-19 | 2021-01-22 | 天津津航计算技术研究所 | 一种基于pcie的多路视频解码方案设计方法 |
CN112565627A (zh) * | 2020-11-30 | 2021-03-26 | 天津津航计算技术研究所 | 一种基于位图叠加的多路视频集中显示设计方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113709518A (zh) | 2021-11-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113709518B (zh) | 一种基于rtsp协议的视频实时传输模式设计方法 | |
US11412021B2 (en) | Method and device for media streaming between server and client using RTP/RTSP standard protocol | |
CN110430441B (zh) | 一种云手机视频采集方法、系统、装置及存储介质 | |
TWI606419B (zh) | 經由遠端圖形處理服務串流顯像內容的圖形伺服器以及方法 | |
CN107370714A (zh) | 面向云渲染的高效通讯方法 | |
WO2024022317A1 (zh) | 视频流的处理方法及装置、存储介质、电子设备 | |
WO2021057697A1 (zh) | 视频编解码方法和装置、存储介质及电子装置 | |
CN105451004B (zh) | 智能机顶盒及其支持视频通信监控的媒体处理系统和方法 | |
CN110300278A (zh) | 视频传输方法和设备 | |
CN113938470A (zh) | 一种浏览器播放rtsp数据源的方法、装置以及流媒体服务器 | |
CN113727114A (zh) | 一种可转码的视频解码方法 | |
CN115865884A (zh) | 一种网络摄像头数据访问装置、方法、网络摄像头和介质 | |
WO2023216798A1 (zh) | 音视频的转码装置、方法、设备、介质及产品 | |
WO2022116822A1 (zh) | 沉浸式媒体的数据处理方法、装置和计算机可读存储介质 | |
CN114009030B (zh) | 视频解码的方法、装置及可读介质 | |
CN103297666B (zh) | 基于通用即插即用实现视频监控的方法、装置及系统 | |
CN113784094A (zh) | 视频数据处理方法、网关、终端设备及存储介质 | |
Ji et al. | A smart Android based remote monitoring system | |
CN111225275A (zh) | 一种基于视频流的屏幕显示方法、装置和系统 | |
CN105812922A (zh) | 多媒体文件数据的处理方法及系统、播放器和客户端 | |
CN115842919B (zh) | 一种基于硬件加速的视频低延迟传输方法 | |
CN113938457B (zh) | 一种云手机应用远程摄像头的方法、系统和设备 | |
CN111355933B (zh) | 一种Gstreamer框架适时检测方法及服务器 | |
CN109495793B (zh) | 一种弹幕写入方法、装置、设备及介质 | |
KR101231009B1 (ko) | 네트워크 비디오 서버 및 이의 비디오 제어 방법 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |