# 新媒体数据发布系统的设计与实现
## 概述
因为时间原因,该项目并非我们小组完全开发完成,该项目是上一届学长留下的,我们拿下来改了一些,理解并修改部分代码后完成了答辩。该代码目前只是实现了 windows 上的音视频采集与推流,功能有限,仅供参考。
## 题目
设计一个直播平台,实现客户端推流、流媒体服务器。主要任务点:
+ 了解 AAC 压缩编码原理,选用合适的开发工具和平台。
+ 了解 Windows 核心编程和音频采集原理,通过板载声卡 Line 采集音频信号,并进行 16bit 量化。
+ 实时计算音频流的相位和电平并在界面显示和报警。
+ 了解 RTMP 协议封装原理,将实时音频流推送到流媒体或阿里云进行发布
+ 通过已有播放器完成源音频的播放试验。
+ 完成团队合作与分工。
## 实现的功能
+ 本地 windows 音视频采集
+ AAC 音频编码与 H.264 视频编码
+ RTMP 推流
+ Wowza 流媒体服务器
## 项目说明书
### 1 复杂工程问题归纳与实施方案可行性研究
#### 1.1 需求分析与复杂工程问题归纳
##### 1.1.1 需求分析
网络直播的走红是多方因素共同作用的结果。2014 年,李克强在世界互联网 大会上提出“大众创业、万众创新”,之后关于互联网的一系列的政策、措施开始 出现,推动了互联网和各个领域的融合,同时也促进了网络新形态的出现,为网络 直播的井喷奠定了基础。政策的支持带动了互联网经济的发展,越来越多的中国人 卷入网络直播,网络直播的持续走高致使民间资本纷纷跟进,投资热促使了各大直 播平台争相抢占先机。
直播是指广播电视节目的后期合成、播出同时进行的播出方式,是充分体现 广播电视媒介传播优势的播出方式。电视现场直播为在现场随着时间的发生、发 展进程同时制作和播出电视节目的不出方式。网络直播吸取和延续了互联网的优 势,利用视讯方式进行网上现场直播,把产品展示、相关会议、背景介绍、方案 测 评、网上调查、对话访谈、在线培训等内容现场发布到互联网上,利用互联网 的 直观、快速、表现形式好、内容丰富、交互性强、地域不受限制等特点,加强活动 现场的推广效果。从技术上来讲,网络的发展打破了现实和虚拟的界限,只需一部 手机就可以实现人与人之间随时、随地、随播的实时交流互动。内容生产上的随意 性让网络直播生活化,吃饭、睡觉、唱歌等日常化场景成为直播内容,扩大了市场, 满足了各类人群的不同需求;传播渠道的多样化使同一事件得以从不同视角展现 在人们面前,让人们的判断更加真实客观。
软件使用对象为非技术人员,也就是说使用该软件的用户将不具备专业性知 识。所以我们需要将所有技术层面设置进行封装处理,在用户也就是主播端进行音 视频采集,对采集到的音频数据和视频数据分别进行处理。对音频数据进行抽样, 再对其进行 PCM 编码,编码方式有多种多样,我们将结合实际用户使用体验选择 最高效的编码方式。将视频文件编码,视频格式(RGB)变为 H.264。数据流图如 图 1-1 所示;
![](https://www.writebug.com/myres/static/uploads/2021/10/26/a54d342b73e9d44543509a34c0882b8a.writebug)
图 1-1 数据流图
##### 1.1.2 复杂工程问题归纳
新媒体数据发布平台的实现难点主要体现在数据采集、音视频编码、推流和服 务器 4 个方面。
(1)数据采集:需要掌握 windows 音视频编程基础知识,包括音视频采集格 式,windows 系统提供的音视频 API,音视频编码标准等。用以实现软硬件的统一 与结合。
(2)编码:采集的音视频一般为原始的没有经过压缩,占用空间较大,音频 一般为 PCM 格式。因此需要经过编码以提高信息传输效率与音视频质量。音视频 的编码有许多的标准,如何选择标准同时兼顾软硬件的实现是一个比较关键的问 题。
(3)推流:推流主流采用 RTMP 协议,因此我们使用 RTMP 协议作为推流基 础,但是如何实现 RTMP 的推流,如何保证音视频传输是稳定性依然是一个巨大 的挑战。
#### 1.2 实施方案可行性研究
##### 1.2.1 国内外研究现状
网络直播实现了“颜值经济”向“荷尔蒙经济”的转变,传统的审美理念、认 同标准正在慢慢消解,群体不再仅仅注重外在的鲜明特质,而转向对“感觉”“状 态”“对话”的关注上,传统的社群被消解,网络直播的人们生活在虚拟的世界中。 网络直播的低门槛消解了原有的话语表达体系,完成了自我的再塑造。网络直播使 主播凭借个人魅力加冕为王,主播和粉丝、粉丝和粉丝之间的互动催生出新的消费 方式。国内有不少直播平台,如斗鱼、虎牙、花椒、企鹅电竞、bilibili 等,均含有 大量的用户。下图是进几年国内直播用户数统计。
![](https://www.writebug.com/myres/static/uploads/2021/10/26/489411298f4f3d244acce695fdc45207.writebug)
图 1-2 直播行业发展图
直播行业也创造了相当可观的收入,以下是对 2019 年直播行业收入的统计。可以看出,直播行业具有较大的潜力。如图 1-2 所示;
![](https://www.writebug.com/myres/static/uploads/2021/10/26/060027e586ef8c2fe9ebbfc748393a09.writebug)
图 1-3 直播行业收入柱状图
直播行业作为互联网衍生物,在发展初期痛点也十分明显,盈利模式单一,主 要依靠付费用户。单一的商业模式和产品种类并不能促使直播行业的稳步前行。而 在整体行业逐步成熟的背景下,“直播 +”让行业的价值进一步释放。直播 + 公益,直 播 + 电商、直播 + 音乐和直播 + 电竞纷纷成为各个平台突破=天花板的主要方式。
而相应的技术基础也逐渐成熟,由于开源运动的发展,端到端的直播实现已经 有一条完整的技术路线。开源项目如 FFmpeg、opencv 等为音视频编码提供了相当 完整的规范标准。最近几年兴起的流媒体传输协议也有比较成熟的封装。如 RTMP 协议在 FFmpeg 中有比较高层的实现,使得开发流媒体服务应用变得更加容易。
#### 1.2.2 复杂问题可行性分析
实现音视频编解码。通过使用开源的比较成熟的 FFmpeg 库和 opencv 库来做 相应的处理. FFmpeg 是一套可以用来记录、转换数字音频、视频,并能将其转化 为流的开源计算机程序。采用 LGPL 或 GPL 许可证。它提供了录制、转换以及流 化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库 libavcodec, 为了保证高可移植性和编解码质量,libavcodec 里很多 code 都是从头开发的。
推拉流的实现。推流是将输入视频数据推送至流媒体服务器,输入视频数据可 以是本地视频文件(avi,mp4,flv......),也可以是内存视频数据,或者摄像头等系统 设备,也可以是网络流 URL。FFmpeg 提供了完整的封装,能够为推流提供支撑。
表 1-1 FFmpeg 数据结构
| 数据结构 | 说明 |
| --------------- | ---------------------------------------------------------------------------------------------------------------------- |
| AVformatContext | FFmpeg 中表示 format 上下文的结构体,是主要的外部接口结构体, 包含了多媒体文件或流的基本信息,用于文件输入和输出操作。 |
| AVCodecContext | FFmpeg 中表示 codec 上下文结构体
没有合适的资源?快使用搜索试试~ 我知道了~
基于QT(C++)设计与实现的新媒体数据发布系统【100012895】
共43个文件
cpp:14个
h:12个
user:2个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 147 浏览量
2023-07-01
10:22:25
上传
评论
收藏 3.2MB ZIP 举报
温馨提示
设计一个直播平台,实现客户端推流、流媒体服务器。主要任务点:1、了解 AAC 压缩编码原理,选用合适的开发工具和平台。2、了解 Windows 核心编程和音频采集原理,通过板载声卡 Line 采集音频信号,并进行 16bit 量化。3、实时计算音频流的相位和电平并在界面显示和报警。4、了解 RTMP 协议封装原理,将实时音频流推送到流媒体或阿里云进行发布。5、通过已有播放器完成源音频的播放试验。 实现的功能:1、本地 windows 音视频采集。2、AAC 音频编码与 H.264 视频编码。3、RTMP 推流。4、Wowza 流媒体服务器。
资源推荐
资源详情
资源评论
收起资源包目录
100012895-基于QT(C++)设计与实现的新媒体数据发布系统.zip (43个子文件)
livaplat
doc
综合设计III总结报告.pdf 1.48MB
新媒体数据发布系统.pptx 1.94MB
架构设计.vsdx 123KB
LICENSE 1KB
.gitignore 335B
XRtmpStreamer
XRtmp.h 524B
XController.h 521B
XRtmpStreamer.pri 947B
XData.h 254B
XRtmpStreamer.vcxproj.filters 5KB
xrtmpstreamer.ui 6KB
XRtmpStreamer.sln 1KB
XBilateralFilter.cpp 400B
xrtmpstreamer.qrc 69B
XMediaEncode.cpp 7KB
XData.cpp 393B
XDataThread.cpp 795B
XDataThread.h 673B
XAudioRecord.h 479B
xrtmpstreamer.h 438B
XRtmpStreamer.pro.user 25KB
main.cpp 388B
XRtmp.cpp 3KB
GeneratedFiles
ui_xrtmpstreamer.h 8KB
qrc_xrtmpstreamer.cpp 1KB
Debug
moc_xrtmpstreamer.cpp 4KB
XRtmpStreamer.vcxproj 21KB
xrtmpstreamer.cpp 2KB
XBilateralFilter.h 182B
XRtmpStreamer.pro 616B
XFilter.h 380B
XVideoCapture.cpp 2KB
Mp4Streamer.cpp 6KB
XController.cpp 4KB
XFilter.cpp 517B
Mp4Streamer.h 269B
XMediaEncode.h 1KB
XAudioRecord.cpp 2KB
XVideoCapture.h 534B
ClassDiagram.cd 5KB
XRtmpStreamer.vcxproj.user 1KB
static
架构.png 63KB
README.md 43KB
共 43 条
- 1
资源评论
神仙别闹
- 粉丝: 2674
- 资源: 7640
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功