代码之家  ›  专栏  ›  技术社区  ›  Sai Raghuram Kaligotla

我需要从示例MPEG-TS文件中获取PID

  •  -4
  • Sai Raghuram Kaligotla  · 技术社区  · 7 年前

    我需要从一个示例MPEG-TS文件中获取PID,我已经尝试使用 fopen() 得到了十六进制格式的数据。现在我一直在寻找整个数据中的PID字节。有人能帮我吗?

    我使用了以下代码:

    #include <stdio.h>
    #include <string.h>
    
    void main()
    {
    
    FILE *myfile;
    
    FILE *output;
    
    int i=0,j;
    
    unsigned int buffer;
    
     int o;
     myfile=fopen("screen.ts","rb");
     output = fopen("output2.txt","w");
     do{
         o=fread(&buffer, 2, 1, myfile);
        if(o!=1)
        break;         
        printf("%d: ",i);     
        printf("%x\n",buffer);
        fprintf(output,"%x ",buffer);
        i++;
       }while(1);
    
       }
    

    我从文件中获得了数据,现在我需要定位数据中的“PID”字节。

    2 回复  |  直到 7 年前
        1
  •  5
  •   aergistal    7 年前

    enter image description here

    考虑一个指针 p p[0] == 0x47 .

    PID是一个13位无符号整数,可以存储在 uint16_t ((p[1] & 0x1f) << 8) | p[2] .

    重复

        2
  •  2
  •   Jabberwocky    7 年前

    我建议看两件事:

    1. this one . 这应该会提示您如何打包这些信息。

    2. FFMPEG源代码通过 github . 他们有一个MPEG-TS解析器,这应该给你一个如何开始的提示。