rtpdump.cpp
上传用户:hjq518
上传日期:2021-12-09
资源大小:5084k
文件大小:2k
源码类别:

Audio

开发平台:

Visual C++

  1. // rtpdump.cpp : Defines the entry point for the console application.
  2. //
  3. #include "StdAfx.h"
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. #include <memory.h>
  7. #ifdef WIN32
  8. #include <Winsock2.h>
  9. #else
  10. #include <netinet/in.h>
  11. #endif
  12. int main(int argc, char* argv[])
  13. {
  14.   unsigned int bufsize, pacno=0, temp32;
  15.   unsigned short temp16;
  16.   unsigned char buf[65000];
  17.   int i, intime;
  18.   FILE *f;
  19.   if (argc != 2)
  20.   {
  21.     printf ("Usage: %s <H.264 RTP packet file>n", argv[0]);
  22.     return -1;
  23.   }
  24.   if (NULL == (f = fopen (argv[1], "rb")))
  25.   {
  26.     printf ("%s: cannot open H.264 packet file %s for readingn", argv[0], argv[1]);
  27.     return -2;
  28.   }
  29.   while (1)
  30.   {
  31.     if (4 != fread (&bufsize, 1, 4, f))
  32.       return 0;
  33.     if (4 != fread (&intime, 1, 4, f))
  34.     {
  35.       printf ("Panic, cannot read timestamp, old software version file?n");
  36.       return -1;
  37.     }
  38.     printf ("nnpacket #%4d containing %5d bytesn", pacno++, bufsize);
  39.     if (bufsize != fread (buf, 1, bufsize, f))
  40.     {
  41.       printf ("Problems while reading buffer, exitn");
  42.       return -3;
  43.     }
  44.     for (i=0; i< 25; i++)
  45.       printf ("%02x ", buf[i]);
  46.     printf ("n");
  47.     printf ("Version (V): %dn", (buf[0] >> 6) & 0x03);
  48.     printf ("Padding (P): %dn", (buf[0] >> 5) & 0x01);
  49.     printf ("Extension (X): %dn", (buf[0] >> 4) & 0x01);
  50.     printf ("CSRC count (CC): %dn", (buf[0] >> 0) & 0x0F);
  51.     printf ("Marker bit (M): %dn", (buf[1] >> 7) & 0x01);
  52.     printf ("Payload Type (PT): %dn", (buf[1] >> 0) & 0x7F);
  53.     memcpy (&temp16, &buf[2], 2);
  54.     printf ("Sequence Number: %dn", ntohs(temp16));
  55.     memcpy (&temp32, &buf[4], 4);
  56.     printf ("Timestamp: %dn", ntohl(temp32));
  57.     memcpy (&temp32, &buf[8], 4);
  58.     printf ("SSRC: %dn", ntohl(temp32));
  59.     printf ("First Byte: 0x%xn", buf[12]);
  60.   }
  61. }