本文讲解rtspplayer播放器实现。通过自己写代码,播放网络rtsp码流。

rtspplayer 工作过程


rtsp播放器的工作过程,如上图所示。具体步骤如下:

  1. 接收网络数据,得到rtsp码流。我们可以通过ffmpeg来接收rtsp码流。
  2. rtsp解封装,得到h264码流。一般可以利用ffmpeg进行rtsp的解封装。
  3. 解码h264码流,得到yuv数据。这一步,可以利用ffmpeg里面的软件解码,libx264解码,也可以利用GPU的硬件解码。
  4. 将yuv数据,转换成rgb数据。这一步,可以利用ffmpeg的软件转换。也可以使用GPU的硬件转换。GPU硬件里面,有2个模块可以完成这个工作,一是解码的Post Process模块,二是OpenGL Shader的yuv转RGB。
  5. 将rgb数据,显示出来。这一步,可以通过OpenGL显示出来。也可以通过Qt的QImage显示出来。或者如果采用了硬件解码的话,建议使用硬件解码配套的显示方式,显示出来。

rtspplayer软件设计

可以通过线程和队列,来实现rtspplayer的软件设计。

  1. 创建一个数据接收线程。数据接收线程,负责接收网络数据,将rtsp码流,存放在rtsp码流队列中。
  2. 创建一个解封装线程。解封装线程,从rtsp码流队列,拿到rtsp码流数据,然后解封装,得到h264码流,存放在h264码流队列中。
  3. 创建一个解码线程。解码线程从h264码流队列中,拿到h264码流,然后进行解码,结果存放在yuv队列中。
  4. 创建一个yuv转rgb线程。该线程从yuv队列中,拿到yuv数据,转换成rgb数据,并存放在rgb队列中。
  5. 创建一个显示线程。这个显示线程,一般也是程序的主线程。这个线程从rgb队列中拿数据,然后显示出来。

以上多个线程,从程序开始创建,一直循环,直到程序退出结束。实际情况,可以根据软硬件性能,可以将几个线程合并成1个线程。但是不建议把数据接收线程和其他线程合并,否则可能会因为数据处理慢,导致数据接收丢了数据。也不建议把显示线程和其他线程合并,否则可能会出现界面操作卡顿。而且要注意,这里的队列,要使用线程安全队列。

rtspplayer软件实现

TODO…

rtspplayer播放器实现相关推荐

  1. 播放器 potplayer rtsp播放器

    目录 potplayer: 播放比例设置: html5_rtsp_player: GitHub - Streamedian/html5_rtsp_player: Play RTSP stream fr ...

  2. 单片AT89C2051 + SD卡 + 3310LCD = 音乐播放器

    http://www.amobbs.com/thread-4503884-1-1.html 这个小玩意,采用 ATMEL 的传统51MCU作主控制芯片,加上SD卡和显示屏,就可以作简单的音乐播放器了, ...

  3. android手机播放pc音乐播放器,最强手机音乐播放器?Foobar2K安卓版体验

    说到最强大的PC音乐播放器,相信很多朋友,特别是HiFi发烧友,会把选票投给Foobar2000.的确,在PC平台上,Foobar2000的优势非常巨大.例如它能够自由定制界面,虽然原生界面很简陋,但 ...

  4. ios手机怎么连接adb命令_手机蓝牙怎么连接汽车蓝牙放音乐,车载蓝牙播放器怎么用...

    手机蓝牙怎么连接汽车蓝牙音乐?车载蓝牙播放器怎么用?针对这两个问题,我们为大家分享下操作指南,如下: 1.把手机蓝牙和车载蓝牙都打开,且处于可发现状态: 2.在手机的蓝牙界面,点击"搜索设备 ...

  5. html5的在线播放页面,整理5款html5网页播放器,总有一款适合你吧

    整理了5款html5网页播放器,总有一款适合你吧. 酷播云HTML5倍速功能视频播放器 介绍: 重要提示:本播放器为酷播云在线产品,用户可以免费注册使用,下载包仅提供代码使用示例及演示,并非播放器的下 ...

  6. java 3gpp转mp3_Android音频以及音频播放器开发实例

    Android 系统支持三种不同来源的音频播放: 1)本地资源 存储在应用程序中的资源,例如存储在 RAW 文件夹下的媒体文件,只能被当前应用程序访问. 2)外部资源 存储在文件系统中的标准媒体文件, ...

  7. android 音频增益_参考级音频播放器!七彩虹发布Pocket HIFI U6:4999亲民价

    作为国产HiFi音频的老牌厂商,七彩虹去年年中推出了新旗舰播放器Pocket HIFI U8,时隔一年U系旗下第二款参考级播放器又来了,型号为"Pocket HIFI U6",将于 ...

  8. 第8章系统服务(简易音频播放器的实现)

    开发一个简易音乐播放器,要求实现: 综合使用Service,BroadCast,ContentProvider等组件实现后台播放. 播放和暂停.上一首.下一首.停止: 后台播放功能, 按下返回键退出应 ...

  9. X5同层播放器应用实践

    移动端浏览器中的video元素是比较特别的,早期无论是在iOS还是Android的浏览器中,它都位于页面的最顶层,无法被遮挡.后来,这个问题在iOS下得到了解决.但是对Android的大部分浏览器来说 ...

  10. android采用MVP完整漫画APP、钉钉地图效果、功能完善的音乐播放器、仿QQ动态登录效果、触手app主页等源码...

    Android精选源码 一个可以上拉下滑的Ui效果,觉得好看可以学学 APP登陆页面适配 一款采用MVP的的完整漫画APP源码 android实现钉钉地图效果源码 一个使用单个文字生成壁纸图片的app ...

最新文章

  1. 几种经典的居中技巧(垂直和水平居中)
  2. 从小到大排列的数组中查找x,若x存在则删除,若不存在则添加,修改后的数组仍然有序
  3. C# 连接SQL数据库字符串
  4. 【新品发布】山海软件生产线pspl,包含了一个开源的混淆器
  5. 电商仓储管理水平的五大标准
  6. [51nod1376] 最长递增子序列的数量
  7. 基于Ruby的watir-webdriver自动化测试方案与实施(四)
  8. 常州彪马机器人_PUMA560型机器人
  9. 计算机科学与量子信息处理,量子计算交叉学科
  10. PHP 数组排序函数sort,rsort,ksort,krsort,asort,arsort区别
  11. Java:Overriding与Overloading
  12. 忘记using namespace std;
  13. 使用U-Net分割方法进行癌症诊断
  14. 计算机主机有异响,电脑主机有异响怎么办?电脑主板有异响的原因和解决方法...
  15. matlab tfrstft工具箱,toolbox matlab时间序列分析工具箱 - 下载 - 搜珍网
  16. (转帖) cglib和jdk的区别
  17. ubuntu 中 vi 编辑文件上下左右删除键毫无作用肿么办!(上上下下左右左右BABA)
  18. 关于 蓝天显卡 异形卡 的改inf文件上驱动说明
  19. 水泊梁山好汉们的排名技巧
  20. 二级干线熔接机选什么好?TFN FT-3 二级干线专用光纤熔接机

热门文章

  1. 【数据库】数据库课程设计一一疫苗接种数据库
  2. 色彩构成与搭配——人对色彩的感觉
  3. 如何求有序数组绝对值最小的数
  4. 学生信息管理系统python面向对象_Python学员管理系统【面向对象实现】
  5. Java Simon--性能瓶颈分析工具
  6. java http put请求方式_HttpClient HTTP PUT请求方法示例
  7. rocketdock 打不开 有进程
  8. python基础编码规范_Python语言的基本语法和编码规范.ppt
  9. ROS学习笔记8 —— 状态机在ROS中的实现
  10. 【2014-3】day3 T1 五彩斑斓