Рекордная строка в от iMic Системы на Mac OS X 10,6 использований Командной строки

У меня есть аудио, являющееся каналом к строке в разъеме для моего аудиоустройства iMic USB. У меня есть LAME & Vorbis OGG Tools, установленная с помощью MacPorts. Как делают меня непосредственно рекордный строка в разъеме с помощью программного обеспечения командной строки? Я знаю в Linux существует программа arecord, но что я использую в Mac OS X 10.6 для выполнения этого? Существует ли путь с ЛАМЕ или OGGENC использование необработанных опций?

Я пытаюсь соединить сценарий Bash для записи, затем передают звуковой файл, и я просто должен знать, как захватить строку в аудио для сохранения в файл, таким образом, я могу использовать другую программу для автоматического вперед это.

1
задан 26.04.2011, 09:14

1 ответ

Проблема оказывается намного более трудной, чем это должно быть.

Обычно я рекомендовал бы SOX, но я столкнулся с проблемой, заставив его записать аудио: https://stackoverflow.com/questions/5845286/sox-recording-on-osx-not-working

Довольно легко придумать простой сценарий Python, но из-за ошибки в волновом модуле это не может использоваться в канале: http://www.mail-archive.com/python-bugs-list@python.org/msg43196.html

Ecasound является другой общей программой, которую я использовал на Linux/FreeBSD, но он не поддерживает coreaudio на OSX и не может использоваться для записи.

В конце дня лучшим, который я нашел, являются 2 процесса этапа, где я записываю аудио с одним сценарием и затем преобразовываю в mp3 с Ламе.

Вот простой сценарий Python. Скорректируйте ИНДЕКС, чтобы быть соответствующим индексом устройства из списка установок системы:

    #!/usr/bin/env python2.5

    import sys
    import pyaudio
    import wave

    FILENAME = 'recording.wav'
    INDEX = 0
    FORMAT = pyaudio.paInt16
    CHANNELS = 2
    RATE = 48000
    INPUT_BLOCK_TIME = 0.05
    INPUT_FRAMES_PER_BLOCK = int(RATE*INPUT_BLOCK_TIME)
    CHUNK = 1024

    p = pyaudio.PyAudio()
    stream = p.open(
        format = FORMAT,
        channels = CHANNELS,
        rate = RATE,
        input = True,
        frames_per_buffer = CHUNK,
        input_device_index = INDEX)

    wf = wave.open(FILENAME, 'wb')
    wf.setnchannels(CHANNELS)
    wf.setsampwidth(p.get_sample_size(FORMAT))
    wf.setframerate(RATE)
    sys.stdout.flush()

    while True:
        try:
            wf.writeframes(stream.read(CHUNK))
            sys.stderr.write("#")
            # sys.stdout.flush()
        except IOError:
            sys.stderr.write('X')

    f.close()
    stream.close()
    p.terminate()
1
ответ дан 17.12.2019, 00:20

Теги

Похожие вопросы