对于更具体的用例,假设我有一些原始的Opus框架,并且我想使用这些框架中的音频来创建OGG Opus文件。
迄今为止的个人进步:我发现我可以使用绑定到在这里实现的ogg C库::https://github.com/Zuzu-Typ/PyOgg/blob/master/pyogg/ogg.py
按照以下文档尝试实现程序:https://xiph.org/ogg/doc/libogg/encoding.html
import ogg
opus_frames = []
with open("../out.opus", "rb") as ifile:
while True:
l = ifile.readline()
if not l:
break
opus_frames.append(l.rstrip())
with open("out.ogg", "wb") as ofile:
state = ogg.ogg_stream_state()
ret = ogg.ogg_stream_init(state, 1)
assert(ret == 0)
pages = []
page = ogg.ogg_page()
for frame in opus_frames:
packet = ogg.ogg_packet(frame, len(frame))
ret = ogg.ogg_stream_packetin(state, packet)
assert(ret == 0)
ret = ogg.ogg_stream_pageout(state, page)
if ret != 0:
pages.append(page)
page = ogg.ogg_page()
print(pages[0].body_len)
代码由于类型错误而失败,但是在这一点上,我不确定这是否朝着正确的方向工作。