【文件属性】:
文件名称:将TS流文件发送到以太网络上(源码)
文件大小:18KB
文件格式:RAR
更新时间:2012-12-17 08:53:44
TS
一个小工具,将TS流文件发送到以太网络上。
支持使用UDP或者RTP协议。
根据TS流的PCR值跟踪时间同步发送。
我用的GetTickCount进行发送时间同步,线程按照10毫秒进行轮回,按照Win32系统普通线程切换时间,应该可以保证到10毫秒左右的同步精度。
但听人提过使用GetTickCount进行时间同步,长时间会有时间漂移现象,而且误差会逐渐累加,直到客户端缓冲溢出。对方提出的解决方案是使用GPS卫星时间同步...
个人以为GetTickCount是使用Win32底层的某个高精度时间结果。在微观上不是很精确,但是宏观上应该是很精确。
我实际曾经使用这个工具,发送过同一个文件三天三夜,客户端使用VideoLan进行在线播放,缓冲设置300ms,没有发现VideoLan缓冲有溢出的情况。
如果这种同步方式,长时间发送,确实有精度问题,希望有同志给出例证和解决方案(除了使用GPS卫星时间以外的方案...)。以便我改进。
demo中根据以太网通常的MTU值直接按7个TS包进行封装:
SetGetTsPacketDataCB(GetTsPacketData, NULL, TS_PACKET_SIZE_MIN*7);
如果是其他网络类型,需要根据网络的MTU值调整TS包数量。
【文件预览】:
SendTs2Ip
----StdAfx.cpp(296B)
----SourceTsFile.cpp(6KB)
----VBuffer.h(8KB)
----VBufferT.h(2KB)
----SendTs2Ip.sln(883B)
----Rtp.h(780B)
----SendTs2Ip.vcproj(7KB)
----Rtp.cpp(3KB)
----string_t.h(2KB)
----SourceTsFile.h(1KB)
----TLock.h(738B)
----ReadMe.txt(1KB)
----Socket.cpp(4KB)
----StdAfx.h(936B)
----Socket.h(1KB)
----Udp.h(531B)
----SendTs2Ip.vcproj.SB-4198B7C3284E.cc.user(1KB)
----SendTs2Ip.cpp(3KB)
----Udp.cpp(4KB)
----SendTs2Ip.dsw(541B)
----SendTs2Ip.dsp(5KB)
网友评论
- 有问题 基本上用不了
- 谢谢,需要仔细专研
- 都是c++写的,不是c的,不过有点帮助。
- 就是想要的,可以了解TS流的发送,不错!
- 楼主,编译不通过,有问题呀。
- 有编译错误啊楼主!
- 8个积分啊,还不能用啊
- 可以用,经过修改为多线程的,可以同时发送几十路流,但是码率没法控制所以实时解码接不出来。但可以作为存储压力测试的工具,也算是不错的工具。
- 可以正常使用,不错
- 很好的传送TS文件的源代码 ,十分感谢!
- 为什么我编译有三个错误,谁能告诉我怎么解决? E:\\SendTs2Ip\SendTs2Ip\string_t.h(67) : error C2061: syntax error : identifier 'PCTSTR' E:\\SendTs2Ip\SendTs2Ip\string_t.h(72) : error C2065: 'pszFormat' : undeclared identifier E:\\SendTs2Ip\SendTs2Ip\string_t.h(74) : error C2065: '_vsctprintf' : undeclared identifier
- 谢谢 需要参考一下 学习研究
- 工程的代码量不大,可以提供给想要控制发送TS文件时间的弟兄有些用处,参考一下~
- 下来后,发现跟自己想要的有点出入。。。整体上来说还行。
- 对于发送ts流文件可以参考!
- 很好的传送TS文件的源代码
- 比较郁闷,使用VC编译的c++程序,可以发送TS流,要搬到linux下费了好大劲,代码写的不错
- 已经编译通过,可以发送ts流,用vlc接收没问题