LINUX.ORG.RU

Как запретить mpv делать resampling звука?

 , ,


0

2

При воспроизведении любого файла делает ресемплинг в 48kHz.

Как сделать чтобы воспроизводил с частотой дискретизации исходника?

--alsa-resample=no
--audio-samplerate=0
ничего не меняют.

★★★★★

Последнее исправление: teod0r (всего исправлений: 1)
Ответ на: комментарий от James_Holden

Как запретить mpv делать resampling звука? (комментарий)
как мне правильно настроить альсу чтобы всегда использовался режим 24-bit (по дефолту работает 16, звуковуха поддерживает 24), чтобы использовалась частота дискретизации источника, и чтобы можно было запускать больше 1 программы выводящей звук?

teod0r ★★★★★
() автор топика
Ответ на: комментарий от ALiEN175

у меня было прописано

defaults.pcm.rate_converter samplerate_best
resample.quality 10
но всё-равно mpv всегда выводил 48kHz.
но я вообще не хочу делать ресемплинг. хочу выводить как есть. ведь если делать ресемплинг на более высокую частоту, будут появляться артефакты. так бы вообще можно было 192kHz прописать.

teod0r ★★★★★
() автор топика
Ответ на: комментарий от teod0r

чтобы использовалась частота дискретизации источника, и чтобы можно было запускать больше 1 программы выводящей звук?

Поставить PipeWire.

anonymous
()
Ответ на: комментарий от teod0r

type plug

вот это и делает ресемплинг. а «без конфига» - это на самом деле значит «с дефолтным конфигом» (где-то в /usr/lib/alsa, но там тоже используется plug).

и с чего ты взял, что «при ресемплинге на большую частоту будут артефакты»? их наличие, во-первых, зависит от алгоритма ресемплинга, а во-вторых, ты их в 90% всё равно не услышишь, разве что на спектрограмме увидеть можно.

anonymous
()
Ответ на: комментарий от teod0r

чтобы использовалась частота дискретизации источника, и чтобы можно было запускать больше 1 программы выводящей звук?

В общем случае это взаимоисключающие требования, надо уточнять детали.

Допустим, такая простая ситуация: больше 1 программы выводит звук. Пусть будет две. В одной играется PCM с частотой дискретизации 44.1 kHz, а в другой — с частотой дискретизации 48 kHz. Какую частоту дискретизации использовать для смешивания и вывода результата? Придётся приводить к одной, и условие «чтобы использовалась частота дискретизации источника» становится невыполнимым.

CrX ★★★★★
()
Ответ на: комментарий от anonymous

James_Holden, CrX, ALiEN175, ладно.
как правильно составить конфиг, чтобы всегда был вывод 24-bit, ресэмплинг в 192kHz с rate_converter samplerate_best, resample.quality 10 (и что ещё подкрутить для максимального качества?) и возможностью звыводить звук несколькими программами?

teod0r ★★★★★
() автор топика
Ответ на: комментарий от vbcnthfkmnth123

почему-то в моём CRUX'е отсутствкет ffplay, хотя ffmpeg-7.0.2 собран с --enable-ffplay.

проверил в другой системе, где также ресемплит и конфиг альсы тфкой же:

> ffplay /C/0/222/1.wav -v verbose
ffplay version 3.3.4 Copyright (c) 2003-2017 the FFmpeg developers
[...]
[wav @ 0x73c2180008f0] parser not found for codec pcm_s24le, packets or times may be invalid.
[wav @ 0x73c2180008f0] parser not found for codec pcm_s24le, packets or times may be invalid.
Input #0, wav, from '/C/0/222/1.wav':
  Duration: 00:04:12.54, bitrate: 4608 kb/s
    Stream #0:0: Audio: pcm_s24le ([1][0][0][0] / 0x0001), 96000 Hz, stereo, s32 (24 bit), 4608 kb/s
[ffplay_abuffer @ 0x73c2180026f0] tb:1/96000 samplefmt:s32 samplerate:96000 chlayout:0x3
[ffplay_abuffersink @ 0x73c218041040] auto-inserting filter 'auto_resampler_0' between the filter 'ffplay_abuffer' and the filter 'ffplay_abuffersink'
[auto_resampler_0 @ 0x73c218041470] ch:2 chl:stereo fmt:s32 r:96000Hz -> ch:2 chl:stereo fmt:s16 r:96000Hz
[ffplay_abuffer @ 0x73c210002500] tb:1/96000 samplefmt:s32 samplerate:96000 chlayout:0x3
[ffplay_abuffersink @ 0x73c210002bd0] auto-inserting filter 'auto_resampler_0' between the filter 'ffplay_abuffer' and the filter 'ffplay_abuffersink'
[auto_resampler_0 @ 0x73c2100030a0] ch:2 chl:stereo fmt:s32 r:96000Hz -> ch:2 chl:stereo fmt:s16 r:96000Hz
а вот что выводит aplay:
> aplay /C/0/222/1.wav -v --dump-hw-params
Playing WAVE '/C/0/222/1.wav' : Signed 24 bit Little Endian in 3bytes, Rate 96000 Hz, Stereo
HW Params of device "default":
--------------------
ACCESS:  MMAP_INTERLEAVED MMAP_NONINTERLEAVED MMAP_COMPLEX RW_INTERLEAVED RW_NONINTERLEAVED
FORMAT:  S8 U8 S16_LE S16_BE U16_LE U16_BE S24_LE S24_BE U24_LE U24_BE S32_LE S32_BE U32_LE U32_BE FLOAT_LE FLOAT_BE FLOAT64_LE FLOAT64_BE MU_LAW A_LAW IMA_ADPCM S24_3LE S24_3BE U24_3LE U24_3BE S20_3LE S20_3BE U20_3LE U20_3BE S18_3LE S18_3BE U18_3LE U18_3BE
SUBFORMAT:  STD
SAMPLE_BITS: [4 64]
FRAME_BITS: [4 640000]
CHANNELS: [1 10000]
RATE: [4000 4294967295)
PERIOD_TIME: (21333 21334)
PERIOD_SIZE: (85 91628833)
PERIOD_BYTES: (42 4294967295)
PERIODS: (0 4311811)
BUFFER_TIME: [1 4294967295]
BUFFER_SIZE: [170 366503875]
BUFFER_BYTES: [85 4294967295]
TICK_TIME: ALL
--------------------
Plug PCM: Rate conversion PCM (48000, sformat=S32_LE)
Converter: linear-interpolation
Protocol version: 10002
Its setup is:
  stream       : PLAYBACK
  access       : RW_INTERLEAVED
  format       : S24_3LE
  subformat    : STD
  channels     : 2
  rate         : 96000
  exact rate   : 96000 (96000/1)
  msbits       : 24
  buffer_size  : 8192
  period_size  : 2048
  period_time  : 21333
  tstamp_mode  : NONE
  tstamp_type  : MONOTONIC
  period_step  : 1
  avail_min    : 2048
  period_event : 0
  start_threshold  : 8192
  stop_threshold   : 8192
  silence_threshold: 0
  silence_size : 0
  boundary     : 4611686018427387904
Slave: Direct Stream Mixing PCM
Its setup is:
  stream       : PLAYBACK
  access       : MMAP_INTERLEAVED
  format       : S32_LE
  subformat    : STD
  channels     : 2
  rate         : 48000
  exact rate   : 48000 (48000/1)
  msbits       : 32
  buffer_size  : 4096
  period_size  : 1024
  period_time  : 21333
  tstamp_mode  : NONE
  tstamp_type  : MONOTONIC
  period_step  : 1
  avail_min    : 1024
  period_event : 0
  start_threshold  : 4096
  stop_threshold   : 4096
  silence_threshold: 0
  silence_size : 0
  boundary     : 4611686018427387904
Hardware PCM card 0 'HD-Audio Generic' device 0 subdevice 0
Its setup is:
  stream       : PLAYBACK
  access       : MMAP_INTERLEAVED
  format       : S32_LE
  subformat    : STD
  channels     : 2
  rate         : 48000
  exact rate   : 48000 (48000/1)
  msbits       : 32
  buffer_size  : 4096
  period_size  : 1024
  period_time  : 21333
  tstamp_mode  : ENABLE
  tstamp_type  : MONOTONIC
  period_step  : 1
  avail_min    : 1024
  period_event : 0
  start_threshold  : 1
  stop_threshold   : 4611686018427387904
  silence_threshold: 0
  silence_size : 4611686018427387904
  boundary     : 4611686018427387904
  appl_ptr     : 0
  hw_ptr       : 0

teod0r ★★★★★
() автор топика