一种基于FFmpeg的音视频传输系统及方法与流程


一种基于ffmpeg的音视频传输系统及方法
技术领域
1.本发明涉及音视频处理技术,具体涉及一种基于ffmpeg的音视频传输系统及方法。


背景技术:



2.音视频采集设备都是在固定地点通过有线传输,或通过基础网络进行无线传输。虽然现有技术条件可以满足大多数情况下的实时音视频传输,但在一些特殊作业的环境,例如边境、严寒或灾后区域,存在该地点无网络覆盖的情况,一般音视频采集设备无法实时传输音视频信息。现有的音视频传输技术过于依赖互联网络的支持,需要实时的网络支持且数据安全性差,这就需要设计一种可在无基础网络覆盖时运作的音视频传输方法。


技术实现要素:



3.本发明目的在于提供一种无线的、不依靠基础网络设施的实时音视频采集传输系统及方法。
4.实现本发明的的技术解决方案为:一种基于ffmpeg的音视频传输系统,包括音视频采集编码模块、音视频流传输模块、音视频解码模块、音视频播放模块,其中音视频采集编码模块通过摄像头实时采集音视频数据,并对采集到的音视频数据进行压缩编码封装;音视频流传输模块从摄像头获取封装的音视频流数据,通过通信电台将音视频流数据传输至自组网络,通过应用终端从自组网络拉取音视频流;音视频解码模块基于ffmpeg服务对应用终端拉取的音视频流数据进行复用解码;音视频播放模块将解码的视频数据和音频数据进行同步,并对音视频效果进行优化和展示;
5.应用终端使用rtspplayerplugin框架进行拉流,rtspplayerplugin框架封装了ffmpeg相关库,分为4层,其中:最底层提供公共基础功能,包括基础工具模块、日志模块和json转化模块;媒体核心模块层跨平台支持pc和aos,通过rtspplayer打开rtsp串流,提供码流接收功能,支持抗抖动、丢包、时延、乱序功能,提供解封装、组帧能力;通过audioplayer支持sdl和aos两种方式播放音频数据,将音频帧解析成音频pcm数据,根据需求进行采样率转换,适配播放设备;通过videoplayer支持sdl和aos两种方式播放视频数据,将视频帧解析为yuv数据,根据需求进行分辨率调整,进行视频显示设备;业务适配层对外提供统一的接口,屏蔽内部实现细节,方便后续扩展和移植;插件层按照基础平台插件规范实现,方便集成。
6.进一步的,音视频采集编码模块,通过摄像头实时采集音视频数据,并对采集到的音视频数据进行压缩编码封装,具体实现方法为:
7.摄像头采集视频数据和音频信息,视频数据编码格式为yuv,音频数据编码格式为pcm;
8.对音频数据和视频数据进行压缩编码,将图像从yuv编码为h.264,将音频从pcm编码为aac,并封装为具有“流媒体”特性的多媒体容器格式。
9.进一步的,音视频流传输模块,从摄像头获取封装的音视频流数据,通过通信电台将音视频流数据传输至自组网络,通过应用终端从自组网络拉取音视频流,具体实现方法为:
10.(f)启动应用终端内的显控软件,发送播放摄像头拍摄请求;
11.(g)显控软件发起视频调度请求,将传输方式、目标地址、视频源、传输码率信息发送给应用终端内的通信传输服务;
12.(h)传输服务接收请求,向通信电台发起视频调度请求,传输指令码、传输方式、目标地址、视频源、传输码率信息到通信电台;
13.(i)通信电台在自组网中检索与目的ip相同的电台,目的电台将相应的请求信息发送给摄像头;
14.(j)摄像头收到请求后,将封装的音视频流数据,通过rtsp协议传输到通信电台,通信电台通过自组网将数据传输至应用终端;
15.应用终端使用rtspplayerplugin框架进行拉流。
16.进一步的,音视频解码模块,基于ffmpeg服务对应用终端拉取的音视频流数据进行复用解码,具体实现方法为:
17.(c)利用rtspplayerplugin框架内的解码器解析音视频数据,调用avcodec_send_packet将复用的音频和视频rtp包分别传给对应的解码器;
18.(d)解码器去掉rtp头,获取媒体负载,进行解码,调用avcodec_receive_frame获取视频yuv数据和音频pcm数据。
19.进一步的,音视频播放模块将解码的视频数据和音频数据进行同步,并对音视频效果进行优化和展示,具体实现方法为:
20.针对显示屏的不同,调用libyuv算法对视频yuv数据的长宽比进行调整,美化画面显示效果;针对扬声器的不同,对音频pcm数据进行位深度、声道数和采样率的转换匹配,增强音频的播放效果。
21.一种基于ffmpeg的音视频传输方法,通过所述的音视频传输系统,实现基于ffmpeg的音视频传输。
22.本发明与现有技术相比,其显著优点为:1)使用rtsp协议通过自组网络进行音视频流的传输,解决了无基础网络/通信设施下的音视频传输问题。2)通过自组网络进行音视频传输,其传输信息更加安全可靠。3)在传输过程中对音、视频原始数据流进行压缩编码,封装为具有“流媒体”特性的多媒体容器格式,加快了数据传输并且保障了数据的安全。4)通过电台进行数据传输,具有很强的机动性,可以因地制宜地设置传输网络,做到随时随地采集和传输音视频信息,可任意架设组网,从而扩大音视频信息传输的距离。5)调用算法对视频yuv数据的长宽比进行调整,美化了画面显示效果,对音频pcm数据进行位深度、声道数和采样率的转换匹配,增强了音频的播放效果,满足在困难环境下,优化音视频的实时播放功能。
附图说明
23.图1为本发明的音视频传输过程原理图。
24.图2为本发明的音视频数据传输流程示意图。
25.图3为本发明的rtspplayerplugin整体框架图。
具体实施方式
26.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
27.一种基于ffmpeg的音视频传输系统,包括音视频采集编码模块、音视频流传输模块、解码模块、音视频播放模块,其中:
28.音视频采集编码模块:使用摄像头和内置拾音器实时采集音视频信息,采集的视频原始数据格式为yuv,音频原始数据格式为pcm。采集到的音视频yuv和pcm格式数据量较大,通过音视频压缩算法对数据进行压缩编码。将视频格式从yuv变为h.264,将音频格式从pcm变为aac,并将视频与音频文件封装为具有“流媒体”特性的多媒体容器格式。
29.音视频流传输模块:摄像头、通信电台、应用终端内都含有一个通信传输服务。当用户需要播放摄像头拍摄信息时,打开应用终端内的显控软件,显控软件发起视频调度请求,将传输方式、目标地址、视频源、传输码率信息发送给应用终端内的通信传输服务。传输服务收到请求后,向通信电台发起视频调度请求,将指令码、传输方式、目标地址、视频源、传输码率信息发送给通信电台,电台在自组网中寻与目的ip相同的电台,目的电台将相应的请求信息发送给摄像头,摄像头收到请求后,将采集到的实时码流,通过rtsp协议传输到通信电台,通信电台通过自组网将数据传输至应用终端,应用终端使用rtspplayerplugin框架进行拉流。
30.更进一步的,将采集到的实时码流,通过rtsp协议传输到通信电台,根据输入的rtsp地址,通过调用ffmpeg接口实现:(a)对网络串流设置缓冲区大小、传输协议、超时时间以及最大时延,超过最大时延触发丢包等来降低时延;(b)进行码流探测,设置码流探测的缓冲区大小,码流探测的最大时延等;(c)获取媒体信息,包括码流个数,码流的媒体类型,视频码流的分辨率、码率、帧率、编码格式,音频码流的采样率、采用深度、声道数、编码格式、封装格式等;(d)接着查具体视频和音频的码流信息,并创建相应的解码器和解码上下文,并对两者进行关联;(e)获取音频和视频的rtp包。
31.解码模块:将处于多媒体容器格式的音视频流解复用成为h.264视频数据和aac的音频数据,利用rtspplayerplugin框架内的解码器解析音视频数据。把收到的音频和视频rtp包,分别送给对应的解码器,解码器先去掉rtp头,拿到媒体负载,进行解码,最后拿到视频yuv数据和音频的pcm数据。
32.音视频播放模块:将解码后的音频数据和视频数据进行同步,并送到音视频显控软件进行播放。针对显示屏的不同,为避免视频画面有拉伸感,调用libyuv算法对yuv的长宽比进行调整,美化画面显示效果;针对扬声器的不同,对音频pcm数据进行位深度、声道数和采样率的转换匹配,增强音频的播放效果。
33.实施例
34.为了验证本发明方案的有效性,进行如下仿真实验。
35.基于ffmpeg的音视频传输系统及方法,采用ffmpeg服务进行音视频数据的处理,使用rtsp协议通过自组网络进行音视频流的传输,最终实现在无基础网络覆盖时进行音视
频传输的功能。
36.(一)设备组成结构说明
37.如图1所示,一种基于ffmpeg的音视频传输系统,涉及应用终端、两个或多个通信电台、摄像头等设备。应用终端与通信电台连接,摄像头与通信电台连接,通信电台处于同一自组网内。
38.应用终端:接收用户的针对摄像头实时视频的播放请求,将播放请求发送给通信电台,接收摄像头生成的流媒体播放地址,播放所述摄像头的实时视频,接收用户的取消播放请求,取消实时视频播放。
39.通信电台:接收应用终端发送的播放请求,根据播放请求在自组网内寻摄像头所连接通信电台,寻到后将音视频流信息发送给应用终端。
40.摄像头:与通信电台连接,采集音视频信息,编码、压缩、封装原始音视频数据。
41.(二)音视频数据处理传输流程
42.如图2所示,一种基于ffmpeg的音视频传输方法,包括音视频采集编码,音视频流传输,音视频解码,音视频播放四个流程。
43.(1)音视频采集编码
44.摄像头实时采集音视频数据,并对采集到的原始数据进行压缩编码,使音视频数据传输过程更加快速稳定。
45.摄像头采集音视频信息,通过摄像头内的采集软件,对单个或者多个通路进行配置和重组,实现多路不同分配置的组合。软件调用flow_manager-》configparse配置和pipe关联的flow数据。flow数据共有5种,flow1为v4l2的camera数据输入,配置宽高,帧率,数据格式。flow2为音频数据,配置音频输出的数据类型,采样率。flow3为视频编码器,配置输入端口,视频帧率,编码格式,宽高,gop,rc模式。flow4为音频编码器,设置输入源,设置输出编码格式,采样率。flow5为rtsp服务,配置音视频输入源,配置端口号。采集软件调用flow_manager-》createpipes()创建一路多媒体通道,将上述flow数据整合并开启服务来采集数据。视频原始数据格式为yuv,音频原始数据格式为pcm,数据量太大,通过编码服务,将视频格式从yuv变为h.264,将音频格式从pcm变为aac,将视频与音频文件封装为有“流媒体”特性的多媒体容器格式。
46.(2)音视频流传输
47.通信电台从摄像头获取封装的音视频流数据,通信电台将数据传输至自组网络,应用终端从自组网络拉取音视频流。
48.摄像头、通信电台、应用终端内都含有一个通信传输服务。默认情况下,当三者开机后,三者内部的传输服务开始运行,初始化一个udp线程udphsha与一个tcp线程tcphsha,两个线程监听两个不同的端口,完成与信息交互。udphsha线程负责与应用终端内的显控软件交互,tcp线程负责与设备(摄像头、通信电台、应用终端)交互,具体步骤为:
49.(a)启动应用终端内的显控软件,发送播放摄像头拍摄请求;
50.(b)显控软件发起视频调度请求,将传输方式、目标地址、视频源、传输码率信息发送给应用终端内的通信传输服务;
51.(c)应用终端内的通信传输服务接收请求,向通信电台发起视频调度请求,传输指令码、传输方式、目标地址、视频源、传输码率信息到通信电台b;
52.(d)通信电台b在自组网中检索与目的ip相同的电台,目的电台a将相应的请求信息发送给摄像头;
53.(e)摄像头收到请求后,将采集到的实时码流,通过rtsp协议传输到目的电台a,目的电台a通过自组网将数据传输至应用终端;
54.(f)在摄像头推送视频流后,应用终端使用rtspplayerplugin框架进行拉流。rtspplayerplugin是应用终端内的一个音视频插件,封装了ffmpeg相关库。
55.rtspplayerplugin框架由基础功能层、媒体核心模块层、业务适配层、插件层共4层结构组成,整体的rtspplayerplugin框架的架构如图3所示。
56.最底层提供公共基础功能,包括基础工具模块、日志模块和json转化模块;
57.媒体核心模块层跨平台支持pc和aos,rtspplayer打开rtsp串流,提供码流接收功能,支持抗抖动、丢包、时延、乱序等qos功能,提供解封装、组帧能力;audioplayer支持sdl和aos两种方式播放音频数据,将音频帧解析成音频pcm数据,根据需求进行采样率转换,适配播放设备;videoplayer同样支持sdl和aos两种方式播放视频数据,将视频帧解析为yuv数据,根据需求进行分辨率调整,进行视频显示设备;
58.业务适配层:对外提供统一的接口,屏蔽内部实现细节,方便后续扩展和移植;
59.插件层:按照基础平台插件规范实现,方便集成。
60.(3)音视频解码
61.通过ffmpeg服务对应用终端拉取的流数据进行复用解码。
62.将处于多媒体容器格式的流解复用成为h.264视频数据和aac的音频数据,利用rtspplayerplugin框架内的解码器解析音视频数据。把收到的音频和视频rtp包,调用avcodec_send_packet分别送给对应的解码器,解码器先去掉rtp头,拿到媒体负载,进行解码,最后通过调用avcodec_receive_frame拿到视频yuv数据和音频的pcm数据。
63.(4)音视频播放
64.根据输入的rtsp地址,使用url确认用户名密码信息。通过调用封装后的ffmpeg接口avformat_open_input打开网络串流并设置缓冲区大小、传进行输协议、超时时间以及最大时延,超过最大时延触发丢包等来降低时延;对码流探测,设置码流探测的缓冲区大小,码流探测的最大时延等;接着调用avformat_find_stream_info获取媒体信息,包括码流个数,码流的媒体类型,视频码流的分辨率、码率、帧率、编码格式,音频码流的采样率、采用深度、声道数、编码格式、封装格式等;接着调用av_find_best_stream查具体视频和音频的码流信息,并创建相应的解码器和解码上下文,并对两者进行关联;最后调用av_read_frame获取音频和视频的rtp包,对音频和视频进行同步。
65.将同步过后的音视频数据送到音视频显控软件进行播放。首先针对显示屏的不同,例如屏幕分辨率是1280*720,视频yuv数据的分辨率是640*480,直接显示会造成视频画面有拉伸感,需要调用算法对yuv的长宽比进行调整,美化画面显示效果;同样针对扬声器的不同,例如扬声器只支持16bit位深度,单声道,48k采样率的音频数据,而音频pcm数据的位深度是8bit、双声道、16k采样率,直接播放音频效果不佳,需要对音频pcm数据进行位深度、声道数和采样率的转换匹配,增强音频的播放效果。
66.以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛
盾,都应当认为是本说明书记载的范围。
67.以上所述实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本技术范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术的保护范围应以所附权利要求为准。

技术特征:


1.一种基于ffmpeg的音视频传输系统,其特征在于,包括音视频采集编码模块、音视频流传输模块、音视频解码模块、音视频播放模块,其中音视频采集编码模块通过摄像头实时采集音视频数据,并对采集到的音视频数据进行压缩编码封装;音视频流传输模块从摄像头获取封装的音视频流数据,通过通信电台将音视频流数据传输至自组网络,通过应用终端从自组网络拉取音视频流;音视频解码模块基于ffmpeg服务对应用终端拉取的音视频流数据进行复用解码;音视频播放模块将解码的视频数据和音频数据进行同步,并对音视频效果进行优化和展示;应用终端使用rtspplayerplugin框架进行拉流,rtspplayerplugin框架封装了ffmpeg相关库,分为4层,其中:最底层提供公共基础功能,包括基础工具模块、日志模块和json转化模块;媒体核心模块层跨平台支持pc和aos,通过rtspplayer打开rtsp串流,提供码流接收功能,支持抗抖动、丢包、时延、乱序功能,提供解封装、组帧能力;通过audioplayer支持sdl和aos两种方式播放音频数据,将音频帧解析成音频pcm数据,根据需求进行采样率转换,适配播放设备;通过videoplayer支持sdl和aos两种方式播放视频数据,将视频帧解析为yuv数据,根据需求进行分辨率调整,进行视频显示设备;业务适配层对外提供统一的接口,屏蔽内部实现细节,方便后续扩展和移植;插件层按照基础平台插件规范实现,方便集成。2.根据权利要求1所述的基于ffmpeg的音视频传输系统,其特征在于,音视频采集编码模块,通过摄像头实时采集音视频数据,并对采集到的音视频数据进行压缩编码封装,具体实现方法为:摄像头采集视频数据和音频信息,视频数据编码格式为yuv,音频数据编码格式为pcm;对音频数据和视频数据进行压缩编码,将图像从yuv编码为h.264,将音频从pcm编码为aac,并封装为具有“流媒体”特性的多媒体容器格式。3.根据权利要求1所述的基于ffmpeg的音视频传输系统,其特征在于,音视频流传输模块,从摄像头获取封装的音视频流数据,通过通信电台将音视频流数据传输至自组网络,通过应用终端从自组网络拉取音视频流,具体实现方法为:(a)启动应用终端内的显控软件,发送播放摄像头拍摄请求;(b)显控软件发起视频调度请求,将传输方式、目标地址、视频源、传输码率信息发送给应用终端内的通信传输服务;(c)传输服务接收请求,向通信电台发起视频调度请求,传输指令码、传输方式、目标地址、视频源、传输码率信息到通信电台;(d)通信电台在自组网中检索与目的ip相同的电台,目的电台将相应的请求信息发送给摄像头;(e)摄像头收到请求后,将封装的音视频流数据,通过rtsp协议传输到通信电台,通信电台通过自组网将数据传输至应用终端;应用终端使用rtspplayerplugin框架进行拉流。4.根据权利要求1所述的基于ffmpeg的音视频传输系统,其特征在于,音视频解码模块,基于ffmpeg服务对应用终端拉取的音视频流数据进行复用解码,具体实现方法为:(a)利用rtspplayerplugin框架内的解码器解析音视频数据,调用avcodec_send_packet将复用的音频和视频rtp包分别传给对应的解码器;
(b)解码器去掉rtp头,获取媒体负载,进行解码,调用avcodec_receive_frame获取视频yuv数据和音频pcm数据。5.根据权利要求1所述的基于ffmpeg的音视频传输系统,其特征在于,音视频播放模块将解码的视频数据和音频数据进行同步,并对音视频效果进行优化和展示,具体实现方法为:针对显示屏的不同,调用libyuv算法对视频yuv数据的长宽比进行调整,美化画面显示效果;针对扬声器的不同,对音频pcm数据进行位深度、声道数和采样率的转换匹配,增强音频的播放效果。6.一种基于ffmpeg的音视频传输方法,其特征在于,通过权利要求1-5任一项所述的音视频传输系统,实现基于ffmpeg的音视频传输。

技术总结


本发明公开了一种基于FFmpeg的音视频传输系统及方法,基于FFmpeg服务对采集的原始音频数据和视频数据进行压缩编码;封装编码后的音视频数据为具有“流媒体”特性的多媒体容器格式;基于RTSP协议,将封装后的音视频流传输值应用终端;应用终端将处于多媒体容器格式的流解复用成为视频数据和的音频数据;使用FFmpeg服务对复用后的音视频数据进行解码;基于应用终端的系统平台,执行音视频同步操作并通过应用终端的显控系统进行播放。本发明可移植性强,FFmpeg服务提供丰富的音视频处理函数接口,有利于二次开发,并且通过RTSP协议,解决了自组网络下的数据传输。了自组网络下的数据传输。了自组网络下的数据传输。


技术研发人员:

钱敏 牛颖 王浩然 宋国娟 张晓阳

受保护的技术使用者:

苏州空天信息研究院

技术研发日:

2022.11.14

技术公布日:

2023/2/23

本文发布于:2024-09-22 19:33:08,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/59418.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:音视频   数据   终端   音频
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议