rtspplayer播放器实现
本文讲解rtspplayer播放器实现。通过自己写代码,播放网络rtsp码流。
rtspplayer 工作过程
rtsp播放器的工作过程,如上图所示。具体步骤如下:
- 接收网络数据,得到rtsp码流。我们可以通过ffmpeg来接收rtsp码流。
- rtsp解封装,得到h264码流。一般可以利用ffmpeg进行rtsp的解封装。
- 解码h264码流,得到yuv数据。这一步,可以利用ffmpeg里面的软件解码,libx264解码,也可以利用GPU的硬件解码。
- 将yuv数据,转换成rgb数据。这一步,可以利用ffmpeg的软件转换。也可以使用GPU的硬件转换。GPU硬件里面,有2个模块可以完成这个工作,一是解码的Post Process模块,二是OpenGL Shader的yuv转RGB。
- 将rgb数据,显示出来。这一步,可以通过OpenGL显示出来。也可以通过Qt的QImage显示出来。或者如果采用了硬件解码的话,建议使用硬件解码配套的显示方式,显示出来。
rtspplayer软件设计
可以通过线程和队列,来实现rtspplayer的软件设计。
- 创建一个数据接收线程。数据接收线程,负责接收网络数据,将rtsp码流,存放在rtsp码流队列中。
- 创建一个解封装线程。解封装线程,从rtsp码流队列,拿到rtsp码流数据,然后解封装,得到h264码流,存放在h264码流队列中。
- 创建一个解码线程。解码线程从h264码流队列中,拿到h264码流,然后进行解码,结果存放在yuv队列中。
- 创建一个yuv转rgb线程。该线程从yuv队列中,拿到yuv数据,转换成rgb数据,并存放在rgb队列中。
- 创建一个显示线程。这个显示线程,一般也是程序的主线程。这个线程从rgb队列中拿数据,然后显示出来。
以上多个线程,从程序开始创建,一直循环,直到程序退出结束。实际情况,可以根据软硬件性能,可以将几个线程合并成1个线程。但是不建议把数据接收线程和其他线程合并,否则可能会因为数据处理慢,导致数据接收丢了数据。也不建议把显示线程和其他线程合并,否则可能会出现界面操作卡顿。而且要注意,这里的队列,要使用线程安全队列。
rtspplayer软件实现
TODO…
rtspplayer播放器实现相关推荐
- 播放器 potplayer rtsp播放器
目录 potplayer: 播放比例设置: html5_rtsp_player: GitHub - Streamedian/html5_rtsp_player: Play RTSP stream fr ...
- 单片AT89C2051 + SD卡 + 3310LCD = 音乐播放器
http://www.amobbs.com/thread-4503884-1-1.html 这个小玩意,采用 ATMEL 的传统51MCU作主控制芯片,加上SD卡和显示屏,就可以作简单的音乐播放器了, ...
- android手机播放pc音乐播放器,最强手机音乐播放器?Foobar2K安卓版体验
说到最强大的PC音乐播放器,相信很多朋友,特别是HiFi发烧友,会把选票投给Foobar2000.的确,在PC平台上,Foobar2000的优势非常巨大.例如它能够自由定制界面,虽然原生界面很简陋,但 ...
- ios手机怎么连接adb命令_手机蓝牙怎么连接汽车蓝牙放音乐,车载蓝牙播放器怎么用...
手机蓝牙怎么连接汽车蓝牙音乐?车载蓝牙播放器怎么用?针对这两个问题,我们为大家分享下操作指南,如下: 1.把手机蓝牙和车载蓝牙都打开,且处于可发现状态: 2.在手机的蓝牙界面,点击"搜索设备 ...
- html5的在线播放页面,整理5款html5网页播放器,总有一款适合你吧
整理了5款html5网页播放器,总有一款适合你吧. 酷播云HTML5倍速功能视频播放器 介绍: 重要提示:本播放器为酷播云在线产品,用户可以免费注册使用,下载包仅提供代码使用示例及演示,并非播放器的下 ...
- java 3gpp转mp3_Android音频以及音频播放器开发实例
Android 系统支持三种不同来源的音频播放: 1)本地资源 存储在应用程序中的资源,例如存储在 RAW 文件夹下的媒体文件,只能被当前应用程序访问. 2)外部资源 存储在文件系统中的标准媒体文件, ...
- android 音频增益_参考级音频播放器!七彩虹发布Pocket HIFI U6:4999亲民价
作为国产HiFi音频的老牌厂商,七彩虹去年年中推出了新旗舰播放器Pocket HIFI U8,时隔一年U系旗下第二款参考级播放器又来了,型号为"Pocket HIFI U6",将于 ...
- 第8章系统服务(简易音频播放器的实现)
开发一个简易音乐播放器,要求实现: 综合使用Service,BroadCast,ContentProvider等组件实现后台播放. 播放和暂停.上一首.下一首.停止: 后台播放功能, 按下返回键退出应 ...
- X5同层播放器应用实践
移动端浏览器中的video元素是比较特别的,早期无论是在iOS还是Android的浏览器中,它都位于页面的最顶层,无法被遮挡.后来,这个问题在iOS下得到了解决.但是对Android的大部分浏览器来说 ...
- android采用MVP完整漫画APP、钉钉地图效果、功能完善的音乐播放器、仿QQ动态登录效果、触手app主页等源码...
Android精选源码 一个可以上拉下滑的Ui效果,觉得好看可以学学 APP登陆页面适配 一款采用MVP的的完整漫画APP源码 android实现钉钉地图效果源码 一个使用单个文字生成壁纸图片的app ...
最新文章
- 几种经典的居中技巧(垂直和水平居中)
- 从小到大排列的数组中查找x,若x存在则删除,若不存在则添加,修改后的数组仍然有序
- C# 连接SQL数据库字符串
- 【新品发布】山海软件生产线pspl,包含了一个开源的混淆器
- 电商仓储管理水平的五大标准
- [51nod1376] 最长递增子序列的数量
- 基于Ruby的watir-webdriver自动化测试方案与实施(四)
- 常州彪马机器人_PUMA560型机器人
- 计算机科学与量子信息处理,量子计算交叉学科
- PHP 数组排序函数sort,rsort,ksort,krsort,asort,arsort区别
- Java:Overriding与Overloading
- 忘记using namespace std;
- 使用U-Net分割方法进行癌症诊断
- 计算机主机有异响,电脑主机有异响怎么办?电脑主板有异响的原因和解决方法...
- matlab tfrstft工具箱,toolbox matlab时间序列分析工具箱 - 下载 - 搜珍网
- (转帖) cglib和jdk的区别
- ubuntu 中 vi 编辑文件上下左右删除键毫无作用肿么办!(上上下下左右左右BABA)
- 关于 蓝天显卡 异形卡 的改inf文件上驱动说明
- 水泊梁山好汉们的排名技巧
- 二级干线熔接机选什么好?TFN FT-3 二级干线专用光纤熔接机