matlab读取.ts流数据问题

先说结论:

一定要用fread 'rb' 二进制的形式读取!
fid=fopen(filename,'rb');

因为要做gnuradio,然后TS流的包比较稳定,都是188bytes(第一个字节为0x47 = 71D),固首先研究单TS流的传输,这个时候找了一个github上的ts流文件http://www.w6rz.net/overflowqpsk_276_45.ts
这个文件大概200M左右,然后读取,首先用fileread进行读取,
读取.ts流文件
可以看到a的大小大概160M
检验一下是不是对的,首先a大概只有170M的数据,而且我们来看同步字节的位置, 0x47 = 71D 对应ASCII里面的“G”;
利用find查找
可以发现不对,按道理应该在189、377的位置上发现“G”,但是差了几个,具体原因不知道为啥,因为这个视频是可以播放的,所以他本身肯定没有问题,就只能怀疑读取文件的过程出了问题。
这个时候本来想到单纯读取二进制文件看一看会不会成功,
故使用

fid=fopen('overflowqpsk_276_45.ts','rb');
c = fread(fid);
 b = find(c(1:2000)==71)

结果如下图:
可以看到这个数据是对的
c大概是200M的数据
因为0x47=71D。可以看到1+188*i的地方都出现了71(其他地方出现了是数据中刚好也是),而且此次数据c的大小为200M左右符合文件大小。故得出结论,使用fread二进制方法读取

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值