直播:现有的ISMA方式,流程如下:

视频采集-->视频编码-->RTP打包-->UDP组播;

音频采集-->音频编码-->RTP打包-->UDP组播;

上面是MP4live的工作流程。

直播:MPEG TS流方式,流程如下:

视频采集-->视频编码-->

音频采集-->音频编码-->TS打包-->RTP打包-->UDP组播

上面是TS流的工作流程。

点播:ISMA方式

分别读取文件中的音频和视频数据,分别打包到RTP,分别发送出去。

点播:TS流方式

分别读取文件中的音频和视频数据,打包成TS流,封装到RTP中,然后发送出去。

现在有如下事情需要做:

1.        2010年9月30日搭建环境,测试Darwin服务器是否支持TS流,测试环境如下:

VLC-->Darwin-->VLC

a. 我们分成两步达到这个目标:首先试验VLC1-->VLC2

VLC流化的配置,可以通过图形界面配置,也可以通过命令行控制。

VLC1从Darwin服务器请求了媒体数据,然后打包成为TS流,并发送出去,VLC2接收TS流数据,播放;

整个过程走的通,抓包证明中间确实是TS流。

当然,也存在问题,就是图形会出现马赛克,猜测是因为B帧的PTS,和DTS有问题。

还有一个问题是:不能生成sdp文件,因为我们要实现第二步。

b.  VLC-->Darwin-->VLC

Darwin服务器需要一个SDP文件来描述媒体源。

2.         问题:VLC在流化过程中,不能生成sdp文件,需要解决这个问题?

错误的写法:

vlc -vvv --extraintf=logger rtsp://115.182.51.78/tv/XingKongDianYing.sdp :sout=#duplicate{dst=rtp{dst=224.1.2.3,mux=ts,port=1234,sdp="file://c:/test.sdp"}}

正确的写法:

vlc -vvv --extraintf=logger rtsp://115.182.51.78/tv/XingKongDianYing.sdp :sout=#duplicate{dst=rtp{dst=224.1.2.3,mux=ts,port=1234,sdp="file://10.57.26.88/guoq/test_100.sdp"}}

3.         问题:VLC在流化过程中,图像质量很差,定位问题?

查看日志,发现:

mux_ts warning: packet with too strange dts (dts=23955930833,old=23956030944,pcr=23956030944)

mux_ts warning: packet with too strange dts (dts=23956097687,old=23956197798,pcr=23956197798)

mux_ts warning: packet with too strange dts (dts=23956231175,old=23956364663,pcr=23956364663)

mux_ts warning: packet with too strange dts (dts=23956398030,old=23956531518,pcr=23956531518)

mux_ts warning: packet with too strange dts (dts=23956564885,old=23956698373,pcr=23956698373)

mux_ts warning: packet with too strange dts (dts=23956731739,old=23956831861,pcr=23956831861)

mux_ts warning: packet with too strange dts (dts=23956898593,old=23956998715,pcr=23956998715)

mux_ts warning: packet with too strange dts (dts=23956278439,old=23957011060,pcr=23956931970)

mux_ts warning: packet with too strange dts (dts=23957044802,old=23957132191,pcr=23957132191)

问题如何解决,现在还不知道。

而且,使用图形界面配置串流的时候,图像有马赛克。可能有问题。

4.         直播的方案:

a)         如果解决了问题3,那么直播流化TS,可以通过架设方案完成;

b)        如果不能解决问题3,那么直播流化TS,需要开发方案;可以考虑在MP4live中间加TS流化的代码。

建议采用方案b,因为我们要改写pid等一些信息,需要符合联通的要求,这些是无法通过配置vlc来解决的。

5.         点播文件的方案:

a)         MP4文件转化为TS文件,然后看Darwin是否能够读取并流化;

b)        MP4文件给Darwin,Darwin读取,然后转为TS流,流化;

经过试验证实:Darwin服务器不支持流化TS类型。在RTSP命令中Describe阶段,返回514错误码:unsupported media type.

Request: DESCRIBE rtsp://10.57.26.88/test.ts RTSP/1.0/r/n

Method: DESCRIBE

URL: rtsp://10.57.26.88/test.ts

Response: RTSP/1.0 415 Unsupported Media Type/r/n

Status: 415

那么现在的方案有如下两个选择:

a)         读MP4,出TS流;

b)        读TS文件,出TS流;

6.         研究TS流的开源代码

a)         MPEG4IP中的mpeg2t;

提取TS流的。

b)        VLC中的mux_ts;

c)        Live555中有没有可供借鉴的?

testMPEG2TransportStreamer.cpp

d)        libtsmux,一个开源的C库

e)         MP4Box,GPAC。

Mp4fileàTS file, or RTP, or UDP.

f)         tstools

esmerge.c

7.         直播TS流方案

视频采集-->视频编码-->

音频采集-->音频编码-->TS打包-->RTP打包-->UDP组播

8.         点播TS流方案

Darwin服务器读取TS文件,打包成为RTP数据,发送出去。

9.         MP4文件转换为TS文件

vlc -vvv --extraintf=logger d:/11.mp4 :sout=#std{access=file,mux=ts,dst=d:/11.ts}

10.         MP4文件转换为TS流

vlc -vvv --extraintf=logger d:/11.mp4:sout=#duplicate{dst=rtp{dst=224.1.2.3,mux=ts,port=1234,sdp="file://10.57.26.88/guoq/test_100.sdp"},dst=display}

11.     做一个测试程序

从MP4文件中读出视频数据,音频数据,打包到TS流,并封装成RTP包,发送出去;使用VLC可以接收并播放。

在《IPTV支持TS流的开发过程》中,会描述这个测试程序是如何开发的。

目标:从MP4文件中读出音视频数据,打包到TS流,保存成为TS文件。使用VLC或者暴风影音可以播放该文件。

1. 读取MP4文件,取得其中的音视频数据;

可以使用MPEG4IP中的库,引入头文件mp4.h,连接libmp4v2.so;写法可以参考MP4creator。

顺序取得音频帧,和视频帧,对它们按照播放时间做两路归并排序。

播放时间的计算:

audio_play_time = audio_timestamp*1000/audio_timescale;

video_play_time = video_timestamp*1000/video_timescale;

2. 这时候取到的是ES流,ES打包成为PES包,PES打包成为TS包。其实,我们漏下了一点东西要说,ES在打包成为PES之前,需要做一点事情:

视频ES,如果是第一帧,那么需要加入VideoStreamHeader,每一种编码格式,比如H.264,或者MP4,都不相同。每一种编码格式都需要取得自己独特的VideoStreamHeader。

音频ES,每一帧的音频,都需要加入AudioStreamHeader,每一种编码格式,比如AAC,都需要单独取得。

a. H.264,定义个uchar H264_delimeter[4]={0x00, 0x00, 0x00, 0x01};

第一个是H264_delimeter[4],0x09, 0xE0;

第二个是H264_delimeter[4],SeqHeader;

第三个是H264_delimeter[4],PictHeader;

b. mp4, mp2, mp1,MP4GetTrackESConfiguration;

c. AAC音频,放置7个字节的ADTS固定头信息;其中要设置每一帧音频数据的长度,所以每一帧都需要改变。

3. ES-->PES

需要构造PES头,需要打标PTS和DTS;

4. PES-->TS

需要构造TS头,需要打标PCR,需要对PES分成小于188的几块,长度通常是184,或者184-8;8个字节是PCR信息。

当然,对整个TS流来说,需要一个PAT表,告诉我们有几路节目program;

还需要几个PMT表,PMT表告诉我们,这个节目里面包含的几个ES流。

IPTV支持TS流的方案形成过程相关推荐

  1. 音视频基础之复合流解析:TS流格式的讲解

    前言: 今天还是搞双十一活动,价格是440(不包括开发板,开发板自己买,这个我多次说了,具体可以看这篇文章:RV1126多路码流功能),周二恢复500,主要是我自己平时要上班,没有时间搞双十一活动,所 ...

  2. 截播服务器如何查看输入信号状态,TS流字幕插播广告截播方案介绍 ppt课件.ppt...

    文档介绍: TS流字幕插播广告截播方案介绍2009年7月技术方案交流TS流字幕插播广告截播方案介绍整体方案介绍关键模块技术介绍不同信号种类的插.截播方案系统优势TS流字幕插播广告截播方案介绍字幕机IP ...

  3. 截获视频网站 ts流 视频 网络嗅探 IPTV OTT 数据流 音视频数据 码流 ts 流

    忽然想把最近的技术总结一下.做ts流 IP数据流也有5年之久了.接触了大大小小的项目.例如网络嗅探 通过sniffer 获取IP包.ts 码流分析等.今天把二者结合起来可以应用到手机终端.或者工程仪表 ...

  4. 网络流媒体(四)———TS流

    1. 数字视频压缩MPEG-2标准 MPEG-2是MPEG(Moving Picture Experts Group,运动图像专家组)组织制定的视频和音频有损压缩标准之一,它的正式名称为"基 ...

  5. 单机和分布式场景下,有哪些流控方案?

    简介:不同的场景下所需的流控算法不尽相同,那应该如何选择适用的流控方案呢?本文分享单机及分布式流控场景下,简单窗口.滑动窗口.漏桶.令牌桶.滑动日志等几种流控算法的思路和代码实现,并总结了各自的复杂度 ...

  6. DVB中TS流数据解析

    引  言 数字生活方式是现代文明的一个重要标志.在与人们工作生活密切相关的电脑.手机和电视三大信息平台中,电脑和手机已实现了数字化和网络化,为人们带来了多姿多彩的资讯和娱乐服务,也为相关企业带来了巨额 ...

  7. H264和音频流打包成TS流 (MPEG2-TS)

    技术在于交流.沟通,转载请注明出处并保持作品的完整性. 原文:https://blog.csdn.net/hiwubihe/article/details/80865920 [本系列相关文章] H26 ...

  8. 校园IPTV数字电视教学直播系统方案-淮安生态文旅区实验小学

    校园IPTV数字电视教学直播系统方案-淮安生态文旅区实验小学 一.校园IPTV数字电视教学直播系统简述 淮安生态文旅区实验小学,坐落在素有"运河之都"美誉的淮安市.学校占地72亩, ...

  9. 上海南芯SC8701支持50W无线车载方案

    --产品描述: 上海南芯SC8701支持50W无线车载方案,南芯SC8701是一个同步4开关降压升压控制器,它可以有效地输出电压,无论是高.低或等于输入电压.同时也支持非常宽的输入和输出电压范围,上海 ...

最新文章

  1. C#textbox只能输入数字和英文句号
  2. AI视觉组仙人一步之高级玩法——从Python回归C语言
  3. python项目-马哥教育官网-专业Linux培训班,Python培训机构
  4. 摄像头动态锁定(Python)
  5. 成功解决 bs4\__init__.py:219: UserWarning: b'.' looks like a filename, not markup. You should probably
  6. U3D 文档 GPU INSTANCING
  7. pgsql数据库默认配置事务类型_PostgreSQL数据库事务出现未知状态的处理方法
  8. android权限 启动失败,Android 6.0打开失败:EACCES(权限被拒绝)
  9. 发生地震等灾难,死难者的存款会怎么处理?
  10. python串口数据绘图_使用Python串口实时显示数据并绘图的例子
  11. oracle:oracle基础知识(一)
  12. 06:校门外的树【一维数组】
  13. 遍历枚举,添加进DropDownist
  14. Java - HashSet源码解析
  15. C# 事件和Unity3D
  16. Windows Server 2003 SP2 企业版 ISO 下载
  17. 使用qq邮箱作为程序客户端自动发送邮件
  18. winpe装双系统linux_winPE+ubuntu双系统U盘制作
  19. Netty系列之Netty高性能之道
  20. 亚马逊云科技帮助德比软件轻松应对爆发的增长

热门文章

  1. scrcpy使用教程:Android电脑投屏利器
  2. 【资料分享】心理咨询技术书单① | 认知行为疗法(CBT技术)5大著作
  3. 荣誉系统排名是整个服务器,魔兽世界怀旧服:PVP荣誉系统简介,大元帅/高阶督军必备...
  4. a40i 全志 芯片手册_全志A40i怎么样 A40i芯片参数介绍
  5. 舆情监控数据采集 Scrapy 标准化爬虫数据采集模板
  6. 动环监测哪个比较好?国内一线动环监控系统厂家排名
  7. 一个可以用自己的声音唱歌或哼哼找歌曲的网站
  8. 易基因|ISME J:细菌ChIP-seq揭示外源基因沉默子对根瘤菌适应性演化的调控机制
  9. 装win10测试软件,这个系统比较高级:测试告诉你有必要重装一个Win10工作站版吗?...
  10. awakeFromNib