Как написать файл OGG? - PullRequest
0 голосов
/ 03 марта 2019

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

Код не выполняется из-зачтобы напечатать ошибку, но на данный момент я не уверен, работает ли это в правильном направлении или нет.

...