在数字电视中,有一些用于信令的表。可以在.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')发布于 2015-08-20 04:46:51
看起来您使用opencaster通过system()调用完成大部分转换。
据我所知,opencaster没有办法做相反的事情,但是有一个python项目telxcc可以从传输流文件中提取teletext。
https://stackoverflow.com/questions/32104464
复制相似问题