Для более конкретного варианта использования, допустим, у меня есть несколько необработанных кадров 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)
Код не выполняется из-зачтобы напечатать ошибку, но на данный момент я не уверен, работает ли это в правильном направлении или нет.