首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PAT表.sec到.py的转换

PAT表.sec到.py的转换
EN

Stack Overflow用户
提问于 2015-08-20 03:52:40
回答 1查看 371关注 0票数 0

在数字电视中,有一些用于信令的表。可以在.py文件中定义这些表,稍后将其转换为.sec,最后转换为.ts,因此可以对其进行多路复用。要完成此操作,请使用以下代码:

代码语言:javascript
复制
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文件的其余部分,以防万一:

代码语言:javascript
复制
#!/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')
EN

回答 1

Stack Overflow用户

发布于 2015-08-20 04:46:51

看起来您使用opencaster通过system()调用完成大部分转换。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32104464

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档