11-4_音频转码部署
音频转码部署
1.G711编码部署
参考链接:escrichov/G711: PCM to G711 Fast Conversions
获取开源仓库源码:
git clone https://github.com/escrichov/G711.git
如果获取不了,请访问资料网盘中的01_视频教程/02_配套资源目录中获取
进入工程目录
cd G711
编译工程
make
G711编码音频文件
./example example_files/alaw.raw alaw_pcm alaw_to_pc...
11-3_音频文件格式
数字音频文件格式
文件分析软件:
VTCLab 媒体分析仪:https://media-analyzer.pro/
MediaInfo工具:MediaInfo - Download MediaInfo for Microsoft Windows
有损压缩格式:
MP3(MPEG-1 Audio Layer III):最流行的音频格式之一,具有高压缩比和良好的音质。
AAC(Advanced Audio Coding):音质优于MP3,广泛用于流媒体和移动设备。
WMA(Windows Med...
11-2_数字音频压缩编码
数字音频压缩编码
参考资料:
《心理声学模型在感知音频编码中的应用》:https://blog.csdn.net/Jianing_Wang/article/details/105779558
音频信号经过数字化处理后会面临巨大数据量给存储和传输带来的压力,为了降低传输和存储的费用,必须对数据信号进行压缩编码。所以在保证重建音频质量尽可能完整的情况下,以尽量少的比特数来表征音频信息。
1.冗余信息
无论是语音还是音乐,都存在这多种形式的冗余信息,主要包括:时间域冗余、频率域冗余、听觉冗余。
对于时间域冗余...
11-1_音频基础概念
音频基础概念
语音、音乐以及自然界的各种声音,都是由物体振动产生的。
无论是声带、乐器的弦还是击打面,当它们振动时,会引起周围空气质点的振动。由于空气具有惯性和弹性,空气质点相互作用,导致周围空气交替产生压缩和膨胀,并向外传播形成声波。
在空气中传播的声波是纵波,在纵波中,介质分子的振动方向和波前进的方向平行。
1.声音的参数
1.1 频率
频率是某一质点以中心轴为中心,1s内来回振动的次数(声波周期),单位为赫兹(Hz)。
在声学中,频率一般指正弦波信号的频率。由于任何信号都可以认为是各种频率的正弦...
10-4_实现位图数据的叠加
实现位图数据的叠加
1.叠加效果
前面我们使用overlay方式叠加纯色数据至编码通道中,这一小节我们将图片数据叠加至编码通道中,效果如下所示:
可以看到原来的红色框变成了一张图像。
2.实现步骤
我们在前面介绍中,overlay的区域叠加类型是支持位图加载的,所以我们只需要准备图像/文字的位图数据传入叠加模块即可。
2.1 准备bmp图像位图
在开始前,请注意:图像的尺寸大小需要遵循16对齐,即宽高的值需要为16的倍数。
这里我提前准备了一张96*96分辨率,32位深的BMP图像,使用下面的程序,将图...
10-3_叠加模块示例源码解析
叠加模块示例源码解析
该实例程序会演示region模块如何叠加至VI/VE,以及如果在叠加后改变叠加的色块等。示例效果如下所示:
1.VI/VENC的初始化和绑定
1.1 初始化MPP平台
memset(&pContext->mSysConf, 0, sizeof(MPP_SYS_CONF_S));
pContext->mSysConf.nAlignWidth = 32;
AW_MPI_SYS_SetConf(&pContext->mSysConf);
AW_MPI_SYS...
10-2_使用ffmpeg实现叠加
使用ffmpeg实现OSD叠加
1.使用命令实现OSD叠加
ffmpeg -i input.h264 -vf "drawbox=x=50:y=50:w=200:h=100:color=red@0.5:t=max, drawbox=x=300:y=200:w=100:h=100:color=blue@1.0:t=5, drawtext=text='2024-10-01':x=W-tw-10:y=10:fontcolor=white:fontsize=50" -c:v libx264 -f h264 outp...
10-1_叠加模块基础
叠加模块基础
用户通常需要在视频中叠加OSD(如通道号、时间戳等)以显示特定信息,并在必要时填充色块。这些叠加在视频上的OSD和遮挡在视频上的色块统称为“区域”。REGION(叠加)模块用于统一管理这些区域资源。如下图所示:
可以看到在一段视频流中使用叠加模块就可以在视频流增加图形和色块等信息。
1.叠加模块介绍
区域管理可以实现区域的创建,并叠加到视频中或对视频进行遮挡。例如,实际应用中,用户创建一个区域,通过AW_MPI_RGN_AttachToChn,将该区域叠加到某个通道(如VENC 通道)中。
...
9-3_使用MPP平台解码H264文件
使用MPP平台解码H264文件
在MPP平台下解码H264文件需要使用VDEC 模块,即视频解码模块。解码过程如下所示:
将H264码流文件传入解码模块后,会解码后生成的yuv文件。
1.主程序解析
1.1 初始化MPP平台
memset(&stContext.mSysConf, 0, sizeof(MPP_SYS_CONF_S));
stContext.mSysConf.nAlignWidth = 32;
AW_MPI_SYS_SetConf(&stContext.mSysCon...
9-2_使用ffmpeg解码H264文件
使用ffmpeg解码H264文件
参考资料:
FFmpeg编解码器文档:FFmpeg Codecs Documentation
FFMPEG结构体分析AVFormatContext: https://blog.csdn.net/leixiaohua1020/article/details/14214705
FFMPEG结构体分析:AVFrame:http://blog.csdn.net/leixiaohua1020/article/details/14214577
FFMPEG结构体分析:A...
9-1_视频解码基础
视频解码基础
参考资料:
Tang, Qiang《 Computationally efficient techniques for H.264/AVC transcoding applications》
1.视频解码简介
由于编码是将大型原始视频文件压缩的过程,那么解码(decoder)是对编码后的视频文件进行解码和解压缩的过程 。
视频解码器是一种硬件或软件,用于将编码的视频流信号转换为数字视频文件,包括音频、视频、字幕等,以便在电视、智能手机、平板电脑、计算机显示器或其他流媒体设备上播放。
视频...
8-8_MPP平台下使用RTSP实现摄像头数据推流源码解析
MPP平台下使用RTSP实现摄像头数据推流源码解析
在MPP平台的中实现RTSP摄像头实时预览的数据流向图如下所示:
对于前面的VI组件和VENC组件,我们已经学习过,这里就重点学习:获取编码后的码流如何发送给RTSP去做推流处理。
1.MPP源码
1.1 MPP平台初始化
MPP_SYS_CONF_S stSysConf;
memset(&stSysConf, 0, sizeof(MPP_SYS_CONF_S));
stSysConf.nAlignWidth = 32;
...
8-7_使用Live555实现RTSP服务器
使用live555实现RTSP服务器
参考资料:
LIVE555 流媒体:http://www.live555.com/
live555源码:http://live555.com/liveMedia/public/
live555 源代码镜像:rgaufman/live555: A mirror of the live555 source code. (github.com)
Live555描述文档地址:http://www.live555.com/liveMedia/#description
Live5...
8-6_基于嵌入式Linux平台实现RTSP协议
基于嵌入式Linux平台实现RTSP协议
参考源码:
简单的RTSP服务器:https://github.com/ImSjt/RtspServer
1.程序的编译与运行
1.获取程序源码
git clone https://github.com/ImSjt/RtspServer.git
如果获取不到,可通过课程配套源码获取!
2.进入工程目录
cd RtspServer/
3.修改Makefile
vi Makefile
修改文件中的工具链路径为全志工具链路径
CROSS_COMPILE = ...
8-5-2_编写简单RTSP协议-处理客户端请求
编写简单RTSP协议-处理客户端请求
在RTSP(实时流协议)中,处理客户端请求步骤如下:
发送请求:客户端发送RTSP请求命令,常见的请求类型包括:
OPTIONS:请求服务器支持的方法,了解服务器可用的方法。
DESCRIBE:请求服务器发送媒体描述信息(通常是SDP格式),以了解可用的媒体流及其属性。
SETUP:请求建立会话连接,准备接收音视频数据。此请求会指定传输参数,如RTP/RTCP端口、传输协议(TCP或UDP)、单播或组播等。
PLAY:请求开始播放媒体流。
PAUSE:请求暂停播放...
8-5-1_编写简单RTSP协议-主流程
编写一个简单的RTSP协议-主流程
参考资料:
简单的RTSP服务器:https://github.com/ImSjt/RtspServer
从零开始写一个RTSP服务器:https://blog.csdn.net/weixin_42462202/article/details/99068041
RootEncoder:pedroSG94/RootEncoder: RootEncoder for Android (rtmp-rtsp-stream-client-java) is a stream enco...
8-4_RTP协议与RTCP协议
RTP协议与RTCP协议
参考资料:
RFC 3551 - RTP Profile for Audio and Video Conferences with Minimal Control (ietf.org)
RFC 5506 - Support for Reduced-Size Real-Time Transport Control Protocol (RTCP): Opportunities and Consequences (ietf.org)
RFC 5761 - Multiplexing RT...
8-3_RTSP协议详解
RTSP协议详解
WIRESHARK网络抓包软件:https://www.wireshark.org/download.html
RTSP 协议的工作原理可以简化为如下如所示:
典型的流媒体框架网络体系如下所示:
1.OPTIONS
客户端向服务器端发送OPTIONS,向服务器请求可用的方法。
客户端的请求格式:
<method> <url> <version>\r\n
Cseq: x\r\n
...
\r\n
method:请求的方法。RTSP中可定义很多方法。
url:表示主机的RTSP通信...
8-2_VLC媒体播放器基础
VLC媒体播放器基础
VLC media player :官方下载:VLC media player, -VideoLAN
Github仓库:videolan/vlc:VLC 媒体播放器 (github.com)
VLC媒体播放器是一款功能强大的开源跨平台多媒体播放器,支持多种媒体格式和流媒体协议。以下是一些主要功能:
播放几乎所有格式:支持MPEG-2、MPEG-4、H.264、MKV、WebM、WMV、MP3等格式。
跨平台支持:可在Windows、Linux、Mac OS X、Unix、iOS、A...
8-1_实时流媒体传输-RTSP协议基础
实时流媒体传输-RTSP协议基础
1.RTSP概念
RTSP(Real-Time Streaming Protocol,实时流协议)是一种网络控制协议,设计用于在娱乐和会议系统中控制流媒体服务器。它允许客户端和服务器之间进行双向交互,以控制媒体流的传输。
2.RTSP的工作流程
当用户或应用程序尝试从远程源流式传输视频时,客户端设备会向服务器发送 RTSP 请求,以确定可用的操作选项,例如暂停、播放和录制。
服务器会返回它可以接受的请求类型列表。
一旦客户端知道如何发出请求,它就会将媒体描述请求发送到流媒...