PAT表.sec到.py的转换

时间:2015-08-19 19:52:40

标签: python

在数字电视中,有一些用于信令的表。这个表可以在.py文件中定义,以后转换为.sec,最后转换为.ts,这样它们就可以复用。为此,使用下一个代码:

out = open("./pat.sec", "wb")
out.write(pat.pack())
out.close
out = open("./pat.sec", "wb") # python   flush bug
out.close
os.system('sec2ts 0 < ./pat.sec > ./pat.ts')
os.remove('pat.sec')

...其中PAT是表的名称,sec2ts是来自OpenCaster的命令(用于复制TS用于数字电视的软件),最后我删除了.sec文件,因为它不再重要

现在,从一个多路复用的.ts文件中,我以.sec格式提取了一个表(PAT),然后我需要将它返回到.py,这样我就可以分析它的代码了,或者看一下用来定义它的代码首先。

我的问题是:如何从.sec文件中提取代码并将其保存在.py文件中?我上面做了什么反过程?

这里是.py文件的其余部分,以防万一:

#!/usr/bin/python

import os 

from dvbobjects.PSI.PAT import *
from dvbobjects.DVB.Descriptors import * 
from dvbobjects.MPEG.Descriptors import *

pat = program_association_section(
    table_id = 0,
    section_syntax_indicator = 1,
    current_next_indicator = 1,
    transport_stream_id = 22,
    version_number = 1,
    section_number = 0,
    last_section_number = 0,
    program_loop = [
        program_loop_item(
            program_number = 47,
            PID = 0x0010,
        ),
        program_loop_item(
            program_number = 49,
            PID = 0x0013,
        ),
        program_loop_item(
            program_number = 51,
            PID = 0x0014,
        ),
    ],
)

out = open("./pat.sec", "wb")
out.write(pat.pack())
out.close
out = open("./pat.sec", "wb") # python   flush bug
out.close
os.system('sec2ts 0 < ./pat.sec > ./pat.ts')
os.remove('pat.sec')

1 个答案:

答案 0 :(得分:0)

看起来您使用opencaster通过system()调用进行大量转换。

据我所知,opencaster没有办法做反向,但有一个python项目telxcc可以从传输流文件中提取teletext