首页 > 其他分享 >关于DASH直播实现的笔记

关于DASH直播实现的笔记

时间:2022-12-29 16:13:15浏览次数:57  
标签:播放器 dash mpd m4v 笔记 server DASH 直播 服务器发送

1. dash是什么

关于介绍百度一下就好了,以下是相关介绍

https://it3q.com/article/78

2. 关于dash的开源代码

https://github.com/ireader/media-server

我参照的相关例子是media-server\libdash\test\dash-dynamic-test.cpp,这是用一个flv文件作为输入进行的dash实现

flv解析可以参照:https://www.cnblogs.com/musicfans/archive/2012/11/07/2819291.html

编译好之后,可以直接跑一下开源的例子,例子显示会一卡一卡的,是因为http请求数据速度 < 生成视频片段的速度,导致会丢一些数据,同步做的不好。

3. 海思上实现dash直播

1)fmp4的生成

首先海思上venc出来的数据不同于flv封装好的数据,需要知道其中的差异,然后再将venc编码好的数据封装成dash所需要的格式

venc出来的数据叫annex-b,本人配置的是h265的编码

转换其实media-server那边也有相关的例子,media-server\libmov\test\mov_writer_h265.c

实际上annex-b转fmp4只需用到了media-server\libflv\source下的mpeg4-annexbtomp4.c和hevc-annexbtomp4.c上面的接口

关于HVCC的生成这边也有相关的例子:

hevc-annexbtomp4.c --》void hevc_annexbtomp4_test(void)

到这里应该可以实时将venc编码出来的h265数据装换成fmp4

2)数据的传输

数据传输采用的是http,流程如下:

播放器请求.mpd,服务器发送.mpd

播放器请求init.m4v,服务器发送init.m4v

播放器请求.mpd,服务器发送.mpd

播放器请求time.m4v,服务器发送time.m4v

播放器请求.mpd,服务器发送.mpd

播放器请求time.m4v,服务器发送time.m4v

黄色部分循环

4. 关于我遇到的问题

1)花屏

  因为linux和liteos对于venc编码出来的数据处理不同,具体看海思提供的demo

2)编码速度快于播放器请求数据的速度,因为我用了队列在存储转换得到的fmp4,播放太慢就会导致队列满了,丢弃掉一些数据,画面看起来一卡一卡的  

  大概率是pts/dts不对,我看media-server上的例子pts基本是1s,因为不太清楚里面的实现,我把帧率改成30,一个GOP刚好就1s,一个GOP存储成一个fmp4片段,结果就好了很多

标签:播放器,dash,mpd,m4v,笔记,server,DASH,直播,服务器发送
From: https://www.cnblogs.com/Just-a-calm-programmer/p/17012634.html

相关文章

  • Web前端学习笔记2——表格
    表格的基本语法以及标签表格示例1:table标签就是表格的标签,用来建立一个表格tr标签表示行,一个<tr></tr>标签就是一行td标签表示数据单元格的内容,可以理解为列th标签为......
  • 自签名证书笔记
    参考文章HowtoCreateSelf-SignedCertificatesusingOpenSSL证书链中的一个或多个中间证书丢失的解决办法:导入中间证书openssl-pkcs12HTTP转HTTPS—使用OpenSSL......
  • Springcloud学习笔记39--拦截器Interceptor详细使用
    原文链接:https://www.cnblogs.com/luckyplj/p/15839125.html1.拦截器Interceptor定义拦截器是在面向切面编程中应用的,就是在你的service或者一个方法前调用一个方法,或者......
  • Jupyter笔记[4]-目标检测
    需求在python中进行目标检测Haar级联Haar级联是一种基于特征的对象检测算法,用于从图像中检测对象。Cascade函数在大量正负图像上进行训练以进行检测。该算法不需......
  • 【深入理解LTE-A】学习笔记 - 上行同步过程
    1、为什么需要上行同步正交多址接入技术要求:不同UE的来自同一子帧但不同频域资源RB的信号到达enodeb的时间是对齐的,为了保证不同的UE到达nodeb后不会互相干扰,nodeb必须要......
  • Android笔记--图像显示
    imageView具体实现:注意:图片名称应当为小写的英文字母与数字的结合,当然,二者可以只存在其一图片的放置的比例:(通过scaleType属性设置)ImageButtonImageButton和Butto......
  • 直播app开发搭建,计算视频上传所需时间
    直播app开发搭建,计算视频上传所需时间 <!DOCTYPEhtml><html><head>  <metacharset="UTF-8">  <metahttp-equiv="X-UA-Compatible"content="IE=edge">  ......
  • 直播系统app源码,元素水平垂直居中
    直播系统app源码,元素水平垂直居中  position:absolute; top:45%; left:50%; transform:translate(-50%,-50%);​以上就是直播系统app源码,元素水平垂直居......
  • 视频直播系统源码,const声明关键字是哪一个
    视频直播系统源码,const声明关键字是哪一个const声明的变量也具有块级作用域。 if(1){      consta=20    if(1){      consta......
  • OpenCV自学笔记13. 训练自己的分类器
    训练自己的分类器本小节使用的图片为:最近在项目中遇到了一个问题,需要识别图像中的红色圆形。Hough变换的效果还可以,但是存在计算量大等问题,因此,还需要一种更为准确的方法,识......