如何Pickle一个MPEG.ts fi

2024-09-29 21:20:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我的一位同事建议我构建自己的ts解析器,我想用Python来做这件事(主要是帮助我学习这些东西并挑战自己)。我的同事提到我应该研究pickle.ts文件,然后将该pickle文件读入我的主Python脚本。你知道吗

下面是我同事给我的一个.ts的pickle文件的摘录(前40行),但我不知道如何实现这一点。你知道吗

如果有人能给我指出正确的方向,我将不胜感激。你知道吗

8004 95eb ab00 0000 0000 008c 1170 616e
6461 732e 636f 7265 2e66 7261 6d65 948c
0944 6174 6146 7261 6d65 9493 9429 8194
7d94 288c 055f 6461 7461 948c 1570 616e
6461 732e 636f 7265 2e69 6e74 6572 6e61
6c73 948c 0c42 6c6f 636b 4d61 6e61 6765
7294 9394 2981 9428 5d94 288c 1870 616e
6461 732e 636f 7265 2e69 6e64 6578 6573
2e62 6173 6594 8c0a 5f6e 6577 5f49 6e64
6578 9493 9468 0b8c 0549 6e64 6578 9493
947d 9428 8c04 6461 7461 948c 156e 756d
7079 2e63 6f72 652e 6d75 6c74 6961 7272
6179 948c 0c5f 7265 636f 6e73 7472 7563
7494 9394 8c05 6e75 6d70 7994 8c07 6e64
6172 7261 7994 9394 4b00 8594 4301 6294
8794 5294 284b 014b 0685 9468 158c 0564
7479 7065 9493 948c 024f 3894 4b00 4b01
8794 5294 284b 038c 017c 944e 4e4e 4aff
ffff ff4a ffff ffff 4b3f 7494 6289 5d94
284b 004b 654d e101 4dd6 074d ff1f 8c03
7375 6d94 6574 9462 8c04 6e61 6d65 944e
7586 9452 9468 0d8c 1b70 616e 6461 732e
636f 7265 2e69 6e64 6578 6573 2e6e 756d
6572 6963 948c 0a49 6e74 3634 496e 6465
7894 9394 7d94 2868 1168 1468 174b 0085
9468 1987 9452 9428 4b01 4d3b 1585 9468
1e8c 0269 3894 4b00 4b01 8794 5294 284b
038c 013c 944e 4e4e 4aff ffff ff4a ffff
ffff 4b00 7494 6289 42d8 a900 0001 0000
0000 0000 0002 0000 0000 0000 0003 0000
0000 0000 0004 0000 0000 0000 0005 0000
0000 0000 0006 0000 0000 0000 0007 0000
0000 0000 0008 0000 0000 0000 0009 0000
0000 0000 000a 0000 0000 0000 000b 0000
0000 0000 000c 0000 0000 0000 000d 0000
0000 0000 000e 0000 0000 0000 000f 0000
0000 0000 0010 0000 0000 0000 0011 0000
0000 0000 0012 0000 0000 0000 0013 0000
0000 0000 0014 0000 0000 0000 0015 0000
0000 0000 0016 0000 0000 0000 0017 0000

编辑:实际上没有必要做这种酸洗。这没有任何帮助。所以如果你正在读这篇文章,这一步是完全没有必要的。然而,我选择不删除这个,因为其他人可能会从我的痛苦和错误中吸取教训。Pickle在这里不需要,但用于在应用程序之间移动对象或保存对象状态以供后续导入。我所做的只是将一个二进制变量转储到pickle文件中,它对我毫无帮助。你知道吗


Tags: 文件对象脚本解析器方向建议picklets
1条回答
网友
1楼 · 发布于 2024-09-29 21:20:47

所以我相信我已经回答了我自己的问题。感谢@martineau帮助我理解pickle有许多不同的文件格式。你知道吗

下面是我用来pickle mpeg TS文件的代码:

import pickle

with open("my_mpeg_ts_file.ts", "rb") as file_object:
    data = file_object.read()
    with open("my_pickle.pickle", "wb") as f:
        pickle.dump(data, f, pickle.HIGHEST_PROTOCOL)

然后创建了一个名为my的文件_泡菜。泡菜:)这是这个漂亮的pickle文件的前13行:

8004 42a8 f89a 0f47 4000 1000 00b0 0d00
01c1 0000 000a e065 8d2c a3ec ffff ffff
ffff ffff ffff ffff ffff ffff ffff ffff
ffff ffff ffff ffff ffff ffff ffff ffff
ffff ffff ffff ffff ffff ffff ffff ffff
ffff ffff ffff ffff ffff ffff ffff ffff
ffff ffff ffff ffff ffff ffff ffff ffff
ffff ffff ffff ffff ffff ffff ffff ffff
ffff ffff ffff ffff ffff ffff ffff ffff
ffff ffff ffff ffff ffff ffff ffff ffff
ffff ffff ffff ffff ffff ffff ffff ffff
ffff ffff ffff ffff ffff ffff ffff ffff
ffff ff47 4065 1000 02b0 2000 0ac1 0000

我用tsduck来确认我看到的是正确的数据。这是我的mpeg-ts文件的第一个包,来自tsduck的tsdump实用程序:

* Packet 0
     TS Header   
  PID: 0 (0x0000), header size: 4, sync: 0x47
  Error: 0, unit start: 1, priority: 0
  Scrambling: 0, continuity counter: 0
  Adaptation field: no (0 bytes), payload: yes (184 bytes)
     Full TS Packet Content   
  47 40 00 10 00 00 B0 0D 00 01 C1 00 00 00 0A E0 65 8D 2C A3 EC FF FF FF
  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF

所以我可以看到这里有来自传输流的数据。但正如@szatmary指出的,pickle文件中似乎添加了额外的信息。你知道吗

相关问题 更多 >

    热门问题