我有一个python函数将mp3编码为m3u8。这个功能允许我 生成一个m3u8文件及其ts块。在
我可以用iOs上的原生播放器来阅读这个“播放列表”。 不幸的是,我无法实现使用android mediaplayer(我得到了错误MEDIA_error_MALFORMED)。在
关键是,如果在python中,我通过子进程使用openssl,它就可以工作。但是产生一个新的过程太贵了,我想避免这种情况:
cmd = ["openssl",
"aes-128-cbc",
"-e",
"-in", path,
"-out", dest_path+".openssl.ts",
"-iv", ("%d" % iv_counter).zfill(32),
"-K", keyHex]
subprocess.check_call(cmd)
使用openssl或我的实现生成相同的m3u8文件,相同数量的ts文件,并且这些ts文件具有完全相同的权重。在
我能找到的唯一解释是我的实现是错误的。我知道这可能很难调试,但也许在第一次阅读时会有一些东西跃然纸上。 以下是执行加密的函数:
^{pr2}$编辑,如果可以的话:我们编写了一个小JAVA函数来解密openssl生成的ts文件和我们自制的代码。openssl生成的文件很好,但是python代码生成的文件有一个错误的填充异常。在
问题来自于你的初始向量(iv)。OpenSSL正在等待一个数字参数(十六进制),但是是16个字符的字符串格式。在
代码只返回十六进制的数字,但以ASCII格式:
但是,预期值为:
^{pr2}$要实现这一点,您必须将其替换为:
相关问题 更多 >
编程相关推荐