修复未知的 FLV 元标记

修复未知的 FLV 元标记

我下载了一个 230 MB 的文件,我知道它的长度(40 分钟),但它只播放了 22 分钟,然后就退出了。

当我用弗利梅塔它给了我一个关于未知标签的错误。

我该如何修复它?这是错误日志:

0x00000162: warning W40024: audio and video streams are desynchronized by 680485 ms
0x077843b0: error E30013: unknown tag type 71
0x077843b1: warning W20017: tag body length (4671233 bytes) is abnormally large
0x077843b4: error E40023: timestamps are decreasing from 1764965 to 327680
0x077843b8: error E20025: tag stream id must be zero, 589824 found instead
0x07bf8ac0: error E12051: previous tag size should be 4671244, 1129237305 found instead
0x07bf8ac0: error E30013: unknown tag type 202
0x07bf8ac1: warning W20017: tag body length (8695108 bytes) is abnormally large
0x07bf8ac8: error E20025: tag stream id must be zero, 9709771 found instead
0x08443813: error E12051: previous tag size should be 8695119, -1383778344 found instead
0x08443813: error E30013: unknown tag type 133
0x08443814: warning W20017: tag body length (15978605 bytes) is abnormally large
0x0844381b: error E20025: tag stream id must be zero, 9220307 found instead
0x0938088f: error E12051: previous tag size should be 15978616, -595537486 found instead
0x0938088f: error E30013: unknown tag type 194
0x09380890: warning W20017: tag body length (5219374 bytes) is abnormally large
0x09380893: error E40022: extended bits not used after timestamp overflow
0x09380897: error E20025: tag stream id must be zero, 15095204 found instead
0x0987accc: error E12051: previous tag size should be 5219385, -2100208093 found instead
0x0987accc: error E30013: unknown tag type 11
0x0987accd: warning W20017: tag body length (4433970 bytes) is abnormally large
0x0987acd0: error E40022: extended bits not used after timestamp overflow
0x0987acd4: error E20025: tag stream id must be zero, 284657 found instead
0x09cb550d: error E12051: previous tag size should be 4433981, -2104837940 found instead
0x09cb550d: error E30013: unknown tag type 11
0x09cb550e: warning W20017: tag body length (10773092 bytes) is abnormally large
0x09cb5515: error E20025: tag stream id must be zero, 16284892 found instead
0x0a6fb780: error E12051: previous tag size should be 10773103, -1838580647 found instead
0x0a6fb780: error E30013: unknown tag type 120
0x0a6fb781: warning W20017: tag body length (6248126 bytes) is abnormally large
0x0a6fb784: error E40022: extended bits not used after timestamp overflow
0x0a6fb788: error E20025: tag stream id must be zero, 9153334 found instead
0x0acf0e4d: error E12051: previous tag size should be 6248137, 672971163 found instead
0x0acf0e4d: error E30013: unknown tag type 222
0x0acf0e4e: warning W20017: tag body length (13001193 bytes) is abnormally large
0x0acf0e51: error E40022: extended bits not used after timestamp overflow
0x0acf0e55: error E20025: tag stream id must be zero, 3773853 found instead
0x0b957045: error E12051: previous tag size should be 13001204, 12907117 found instead
0x0b957045: error E30013: unknown tag type 194
0x0b957046: warning W20017: tag body length (13413675 bytes) is abnormally large
0x0b95704d: error E20025: tag stream id must be zero, 4551479 found instead
0x0c621d7f: error E12051: previous tag size should be 13413686, 83139954 found instead
0x0c621d7f: error E30013: unknown tag type 98
0x0c621d80: warning W20017: tag body length (14939375 bytes) is abnormally large
0x0c621d83: error E40022: extended bits not used after timestamp overflow
0x0c621d87: error E20025: tag stream id must be zero, 4264230 found instead
0x0d46127d: error E12051: previous tag size should be 14939386, -1762436629 found instead
0x0d46127d: error E30013: unknown tag type 250
0x0d46127e: warning W20017: tag body length (5610968 bytes) is abnormally large
0x0d461285: error E20025: tag stream id must be zero, 3593555 found instead
0x0d9bb064: error E12051: previous tag size should be 5610979, -1142993742 found instead
0x0d9bb064: error E30013: unknown tag type 64
0x0d9bb065: warning W20017: tag body length (7353222 bytes) is abnormally large
0x0d9bb068: error E40022: extended bits not used after timestamp overflow
0x0d9bb06c: error E20025: tag stream id must be zero, 2540704 found instead
0x0e0be3f9: error E12051: previous tag size should be 7353233, 1316928413 found instead
0x0e0be3f9: error E30013: unknown tag type 191
0x0e0be3fa: warning W20017: tag body length (11135021 bytes) is abnormally large
0x0e0be3fd: error E40022: extended bits not used after timestamp overflow
0x0e0be401: error E20025: tag stream id must be zero, 8181697 found instead
0x0eb5cc35: error E12051: previous tag size should be 11135032, -683403085 found instead
0x0eb5cc35: error E30013: unknown tag type 106
0x0eb5cc36: warning W20017: tag body length (16040971 bytes) is abnormally large
0x0eb5cc3d: error E20025: tag stream id must be zero, 73075 found instead
0x0faa904f: error E12051: previous tag size should be 16040982, 1810734957 found instead
0x0faa904f: error E30013: unknown tag type 39
0x0faa9050: warning W20017: tag body length (14670380 bytes) is abnormally large
0x0faa9057: error E20025: tag stream id must be zero, 8801052 found instead
0x108a6a8a: error E12051: previous tag size should be 14670391, 437522158 found instead
0x108a6a8a: error E30013: unknown tag type 93
0x108a6a8b: fatal F20016: tag body length (13030036 bytes) exceeds file size
55 error(s), 16 warning(s)

当我使用该-f选项时,它给我一个仅播放 22 分钟的输出文件。

答案1

该文件确实已损坏。

FLV 文件由一系列标签组成,这些标签可分为三种不同类型:

  • 视频帧
  • 音频数据
  • 元数据

每个标签都由一个整数值标识,以便视频播放器正确解释数据。例如,音频标签的 ID 为 8,视频标签的 ID 为 9,元数据标签的 ID 为 18。读取标签时遇到的任何其他值都表示错误。

FLV 文件没有错误恢复机制,因此如果文件在某个时候损坏,通常无法恢复播放,因为很难在文件的后面准确找到标签的开头。

即使是第一个警告,0x00000162: warning W40024: audio and video streams are desynchronized by 680485 ms虽然出现在文件早期,也意味着标签的时间戳值中可能存在一些数据损坏。

因此,恐怕您对这个文件无能为力。

如果您需要更详细的信息,请尝试使用 对文件进行完整转储flvmeta --full-dump --raw

(免责声明:我是 flvmeta 的作者)

相关内容