如何通过ffmpeg-python提取.ts文件的Program列表与对应service_name
解决方案
1. FFmpeg套件原生支持直接导出结构化数据
不用手动解析普通命令行的文本日志,FFmpeg自带的ffprobe工具专门用于媒体信息探测,可直接输出JSON格式的Program元数据,命令如下:
ffprobe -v quiet -print_format json -show_programs .\log_dvbs.ts
输出结果中programs数组下的每一项对应一个Program,tags字段里就包含你需要的service_name、service_provider信息,结构稳定不会随版本变动出现解析异常。
2. 完全可以用ffmpeg-python实现需求
ffmpeg-python封装了ffprobe的探测能力,不需要手动调用命令、处理进程输出,直接调用内置的probe方法即可拿到解析好的Python字典对象,参考代码如下:
import ffmpeg # 读取TS文件的Program信息 media_info = ffmpeg.probe(r".\log_dvbs.ts", show_programs=True) result = [] for prog in media_info["programs"]: result.append({ "program_id": prog["program_id"], "service_name": prog["tags"].get("service_name", ""), "service_provider": prog["tags"].get("service_provider", "") }) # 打印导出的列表 for item in result: print(f"Program {item['program_id']}: {item['service_name']}")
运行上面的代码就能直接得到Program ID和对应service_name的映射列表。
内容的提问来源于stack exchange,提问作者Mohammad Hassan Shammakhi
相关产品推荐
相关产品推荐

