TS码流解析-1-判断包长

本文记录了在机顶盒业务中解析TS码流的初步任务——判断包长度是188字节还是204字节。通过读取文件、查找0x47标识符并分析包头来确定包长。这是一个基于C语言的经验分享。
摘要由CSDN通过智能技术生成

前言

最近刚入职,公司是做机顶盒业务的,首要任务是要解TS码流,特意前来记录下编写的步骤,留些脚印来证明自己从事过该行业!!!!对于什么是TS流以及其他的相关知识,我这里就不赘述了。

任务一

给你一个TS流的文件,让你判断该包长是188字节还是204字节。一般来说,TS码流都是由一个个TS包组成的,每个包都是以0x47开始,204字节的是在188字节的基础多了16个字节的校验码。

思路

1.读取文件
2.读取字节
3.判断读取到的字节是否为0x47,是,记录当前位置save_position,执行4,否,执行2
4.读取下一个188或204包长的头字节,头字节是否为0x47,是,累计次数++,次数>10,执行5,次数<10,执行4,否,移动到save_position,执行3
5.返回包长长度

代码

//用于对0x47的判断次数,进入之前保存位置,出来之后重置读取的位置
static int check_times(FILE *ts_file, const int package_length, long int *offset)
{
   
    int loop = 1;
    int return_value = 1;

    *offset = ftell(ts_file);
    /*---------------------------------------------------------*/
    /* Starting at 0x47 is there enough size to check 10 times?*/
    /*---------------------------------------------------------*/
    if (fseek(ts_file, package_length * 10 - 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值