如何通过Python subprocess调用Shaka Packager?出现无效流描述符错误如何解决
问题原因
你遇到的Invalid stream descriptors name/value pairs:错误是Shaka Packager无法识别传入的流参数格式导致的,代码有三处核心错误:
- 占位符未实际替换:你写的
{480p_path}、{1080p_path}、{dash_path}只是占位符语法,没有替换成对应的实际路径变量值,传给Packager的是带大括号的无效字符串。 - 流描述符存在多余空格:Shaka要求流描述符的键值对之间用逗号直接分隔,不能加空格,你代码里
in={480p_path}, stream=audio中逗号后带了空格,会触发解析失败。 - 命令参数拆分错误:使用
subprocess.call传列表参数时,--mpd_output和它后面的路径是两个独立参数,你合并成了一个字符串,会被Packager当成无效的流描述符处理。
修复后的代码
# 先替换所有占位符为实际值,同时去掉流描述符中的多余空格 audio_stream = f"in={480p_path},stream=audio,output=audio.mp4" video_480_stream = f"in={480p_path},stream=video,output={480p_path}" video_1080_stream = f"in={1080p_path},stream=video,output={1080p_path}" subprocess.call([ settings.PACKAGER_PATH, audio_stream, video_480_stream, video_1080_stream, "--mpd_output", # 参数名单独作为列表项 dash_path # 参数值单独作为列表项 ])
验证建议
可以先把拼接好的所有参数打印出来,手动在命令行运行测试,确认没有格式问题后再放到Python代码中执行。
内容的提问来源于stack exchange,提问作者prehistoricbeast
相关产品推荐
相关产品推荐

