알사 리샘플링

알사 리샘플링

내 설정은 Fedora 기반의 Linux 음악 배포판인 Vortexbox 2.3입니다. miniDSP의 다중 채널 사운드 카드인 USBStreamer가 있습니다. asound.conf별도의 출력 채널을 위해 여러 개의 스퀴즈라이트 재생 인스턴스를 가질 수 있도록 별도의 스테레오 장치를 설정했습니다 . 모든 플레이어에는 시계가 하나만 있기 때문에 오디오의 샘플링 속도가 동일해야 합니다. 내 음악의 대부분은 44.1kHz이지만 일부는 48kHz이므로 48kHz 파일을 재생할 때 약간의 리샘플링을 수행해야 합니다. 나는 이 문제를 해결했습니다 asound.conf. 그러나 ALSA는 내가 기대했던 48kHz를 플레이어가 출력하는 것이 아니라 원래 샘플 속도임에도 불구하고 모든 것을 44.1kHz로 리샘플링하는 것 같습니다. 리샘플링 없이 기본 44.1 파일을 재생할 수 있기를 원합니다. 플레이어 대신 ALSA에서 샘플 속도를 처리하여 다른 플레이어도 추가하고 싶습니다.

요율이 일치하지 않는 경우에만 ALSA를 재샘플링할 수 있는 방법이 있습니까?

#
# Place your global alsa-lib configuration here...
#

#defaults.pcm.rate_converter "speexrate"

pcm_slave.miniDSP {
# pcm "hw:0,0"
pcm "hw:USBStreamer"
rate 44100        # fixed, because all dshare devices must use the same samplerate. Could use rate unchanged but not for here.
format S32_LE
channels 10
}

pcm.stereo_1_raw {
type plug
slave.pcm {
    type dshare
    ipc_key 662662
ipc_key_add_uid true
    slave miniDSP
    bindings [ 0 1 ]
}
}

pcm.stereo_2_raw {
type plug
slave.pcm {
    type dshare
    ipc_key 662662
ipc_key_add_uid true
    slave miniDSP
    bindings [ 2 3 ]
}
}

pcm.stereo_3_raw {
type plug
slave.pcm {
    type dshare
    ipc_key 662662
ipc_key_add_uid true
    slave miniDSP
    bindings [ 4 5 ]
}
}

pcm.stereo_4_raw {
type plug
slave.pcm {
    type dshare
    ipc_key 662662
ipc_key_add_uid true
    slave miniDSP
    bindings [ 6 7 ]
}
}

pcm.stereo_1_output {
    type rate
    slave {
            pcm stereo_1_raw
            rate 44100
    }
    #converter "speexrate_medium" This doesn't work for 4 channels.
converter "samplerate"
}

pcm.stereo_2_output {
    type rate
    slave {
            pcm stereo_2_raw
            rate 44100
    }
    converter "speexrate_medium"
}

pcm.stereo_3_output {
    type rate
    slave {
            pcm stereo_3_raw
            rate 44100
    }
#converter "speexrate_medium"
converter "samplerate"
}

pcm.stereo_4_output {
    type rate
    slave {
            pcm stereo_4_raw
            rate 44100
    }
    #converter "speexrate_medium"
converter "samplerate"
}

답변1

plug플러그인 은 rate필요할 때만 플러그인을 삽입하지만, rate플러그인을 수동으로 삽입하면 이런 결과가 나옵니다.

rate플러그인을 제거하기만 하면 stereo_x_raw장치를 직접 사용할 수 있습니다. (리샘플링 알고리즘의 경우 기본 설정을 사용할 수 있습니다.)

관련 정보