Как удалить кадры из файла .wav? - PullRequest
0 голосов
/ 09 апреля 2020

Я работаю над проектом, в котором я получаю поток аудио байтов, используя Flask socket-io. Я использую пакет python wave для записи их в файл .wav в режиме реального времени. Теперь я не хочу, чтобы мой буфер увеличивался. Итак, я хочу регулярно удалять кадры из начала файла. Как сделать это одновременно без потери входящих данных? Вот код серверной части приложения:

@bp.route('/')
def index():
    """Return the client application."""
    return render_template('audio/main.html')


@socketio.on('start-recording', namespace='/audio')
def start_recording(options):
    """Start recording audio from the client."""
    id = uuid.uuid4().hex  # server-side filename
    session['wavename'] = id + '.wav'
    wf = wave.open(current_app.config['FILEDIR'] + session['wavename'], 'wb')
    wf.setnchannels(options.get('numChannels', 1))
    wf.setsampwidth(options.get('bps', 16) // 8)
    wf.setframerate(options.get('fps', 44100))
    session['wavefile'] = wf


@socketio.on('write-audio', namespace='/audio')
def write_audio(data):
    """Write a chunk of audio from the client."""
    session['wavefile'].writeframes(data)
    print(type(data))


@socketio.on('end-recording', namespace='/audio')
def end_recording():
    """Stop recording audio from the client."""
    # print("saving file")
    emit('add-wavefile', url_for('static', filename='_files/' + session['wavename']))
    session['wavefile'].close()
    del session['wavefile']
    del session['wavename']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...