关闭

流媒体直播问题

627人阅读 评论(0) 收藏 举报

 流媒体直播问题

问题: 微软的ASF直播流 比如mms://202.96.114.251/lstv丽水电视台网络直播,按正常的解析非直播mms协议或rtsp协议流程解析保存文件头部分->解析媒体数据包->构造简单索引对象,将会出现不能拖放,为了解决这个问题我对比flashget的做法,发现他对头只做了三部分的修改:

1, File Properties Object(修改的为红色)

Field name

Field type

Size (bits)

Object ID

GUID

128

Object Size

QWORD

64

File ID

GUID

128

File Size

QWORD

64

Creation Date

QWORD

64

Data Packets Count

QWORD

64

Play Duration

QWORD

64

Send Duration

QWORD

64

Preroll

QWORD

64

Flags

DWORD

32

 

Broadcast Flag

 

1 (LSB)

 

Seekable Flag

 

1

 

Reserved

 

30

Minimum Data Packet Size

DWORD

32

Maximum Data Packet Size

DWORD

32

Maximum Bitrate

DWORD

32

我的做法是File Size是实际存储文件尺寸, Data Packets Count为经过统计的数据包个数(包括音频视频) Send Duration 是播放时间(100纳秒为单位)采用接收到的最后一个数据包的时间戳减去第一个包的时间戳来换算进去,则为最后一个数据包的时间戳减去第一个包的时间戳来加上 Preroll换算进去;
2. ASF Data Object(修改的为红色)

Field name

Field type

Size (bits)

Object ID

GUID

128

Object Size

QWORD  

64

File ID

GUID

128

Total Data Packets

QWORD

64

Reserved

WORD

16

Data Packets

See section 5.2

varies

Object Size的大小为该对象起直到简单索引对象前的尺寸, Total Data Packets同样为总统计的数据包个数;

2. Data 包部分(修改的为红色)

0010: 82 00 00 40 5D A2 05 51 F8 6C 06 00 00 82 82 4D
0020: 02 00 00 0A 0F 1F 00 00 09 04 6D 06 28 00 2C 54
0030: 5E 3E 6D 52 A4 DE 54 1F 70 3E B5 AC C9 15 C8 AF
0040: 4B 14 DD 5F 8B 76 3A A3 3C A1 A6 59 4E 3A C8 30
0050: D0 F5 4E 4A C4 51 51 74 5F 55 7E 97 55 75 67 97
0060: 55 34 7D 02 23 4C E6 C8 57 3A 27 80 91 E2 D4 67
0070: DE C5 17 A0 2C 25 0D 03 93 82 BA A4 AC 59 98 5A
0080: 02 41 E9 AA D7 AF 42 DC 1E A7 BD 36 58 19 81 54
0090: 0A D0 28 2C 19 B9 01 C4 40 A5 EC B1 F6 0C DA 00
00A0: 63 9C 07 0E 20 54 77 12 18 AD FE EF F0 AB C4 A8
00B0: 68 44 0E 47 83 EF .............

两个时间戳均采用平移即减去第一个包的时间戳如上述为第一包的话以后其他的这两个值均减去51 F8 6C 06以后才写如文件.

    出现问题想象是能正常播放,但是视频图象还是不对 根本就不连续 有时候根本就不切换视频图片,望各位熟悉流媒体专家、朋友们给指导建议,看我分析错在哪里  非常感谢!!

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:16304次
    • 积分:280
    • 等级:
    • 排名:千里之外
    • 原创:9篇
    • 转载:4篇
    • 译文:0篇
    • 评论:2条