Fórum Root.cz

Hlavní témata => Software => Téma založeno: blindp 10. 03. 2019, 21:15:28

Název: Přehráváni 24bit wav little endian
Přispěvatel: blindp 10. 03. 2019, 21:15:28
Ahoj, na rpi se zvukovou kartou cirrus logic jsem nahrál wav:
Kód: [Vybrat]
arecord -Dhw:sndrpiwsp -r 44100 -c 2 -f S24_LE test.wavpokud se pokusím soubor přehrát pomocí vlc, je slyšet jen hrozný praskání, to stejné pokud soubor otevřu v audacity.
Soubor přehraji čistě jen pomocí aplay:
Kód: [Vybrat]
Signed 24 bit Little Endian, Rate 44100 Hz, Stereo
ALSA <-> PulseAudio PCM I/O Plugin
Its setup is:
  stream       : PLAYBACK
  access       : RW_INTERLEAVED
  format       : S24_LE
  subformat    : STD
  channels     : 2
  rate         : 44100
  exact rate   : 44100 (44100/1)
  msbits       : 32
  buffer_size  : 22050
  period_size  : 5512
  period_time  : 125000
  tstamp_mode  : NONE
  tstamp_type  : GETTIMEOFDAY
  period_step  : 1
  avail_min    : 5512
  period_event : 0
  start_threshold  : 22050
  stop_threshold   : 22050
  silence_threshold: 0
  silence_size : 0
  boundary     : 6206523236469964800
Co dělám špatně? Díky za nasměrování.
Název: Re:Přehráváni 24bit wav little endian
Přispěvatel: redustin 10. 03. 2019, 23:36:09
S24_LE nebo S24_3LE? Tipuju si, že důvod je tenhle.
Název: Re:Přehráváni 24bit wav little endian
Přispěvatel: blindp 11. 03. 2019, 23:24:28
S24_LE nebo S24_3LE? Tipuju si, že důvod je tenhle.
Nevím, pokud spustím
Kód: [Vybrat]
aplay -f S24_3LE test.wavdostanu:
Kód: [Vybrat]
Warning: format is changed to S24_LE
Playing WAVE 'test.wav' : Signed 24 bit Little Endian, Rate 44100 Hz, Stereo
Název: Re:Přehráváni 24bit wav little endian
Přispěvatel: redustin 12. 03. 2019, 16:09:42
A co přesně konkrétně děláš? Příkazy, typ zvukovky atd...
Název: Re:Přehráváni 24bit wav little endian
Přispěvatel: blindp 12. 03. 2019, 23:38:01
A co přesně konkrétně děláš? Příkazy, typ zvukovky atd...
zvukova karta je intel ALC3227, jde mi o vytvoření mini nahrávacího studia s rpi, sestříhání v audacity, export -> flac, mp3...
zvukova karta na rpi je tato - https://www.element14.com/community/servlet/JiveServlet/downloadBody/72078-102-2-310056/Cirrus%20Logic%20Audio%20Card%20for%20B%2B%20and%20A%2B%20onwards%20V1.02.pdf (https://www.element14.com/community/servlet/JiveServlet/downloadBody/72078-102-2-310056/Cirrus%20Logic%20Audio%20Card%20for%20B%2B%20and%20A%2B%20onwards%20V1.02.pdf)
Bohužel k rpi teď nemám přístup, nejdřív o  víkendu. Zkusím nahrát víc souborů, 16bit, 32bit.
Pokud nahraji wav pomocí arecord tak to přehraji zase jen pomocí aplay? Každopádně díky za snahu, po víkendu se snad posunu dál.
Název: Re:Přehráváni 24bit wav little endian
Přispěvatel: _Jenda 13. 03. 2019, 01:01:27
Pomohl by především vzorek toho vadného souboru.
Název: Re:Přehráváni 24bit wav little endian
Přispěvatel: blindp 31. 03. 2019, 19:56:09
16bit i 32bit LE je v pohodě, přehrát nejde jen 24bit.
Název: Re:Přehráváni 24bit wav little endian
Přispěvatel: _Jenda 31. 03. 2019, 21:48:55
Mně to v Audacity funguje, když to naimportuju buď jako wav, nebo když to naimportuju jako raw data. Tam to správně uhádne že to je Signed 32-bit PCM, LE, 2ch. (aktuální verze z Debianu Unstable)

Další nápovědu se dozvíš když se to pokusíš (neúspěšně) přehrát mplayerem:

AUDIO: 44100 Hz, 2 ch, s24le, 2822.4 kbit/133.33% (ratio: 352800->264600)

Všimni si těch procent/ratio, které u komprimovaných formátů bývá < 100 %, a tady je to naopak.

Nadále pohled hexdumpem ukazuje sloupce nulových bajtů.

Hypotéza (ověř si sám, na to jsem zase moc líný to dělat): ty samply vypadají tak, že je to vždycky 4 bajty, přičemž horní bajt je 0.
Název: Re:Přehráváni 24bit wav little endian
Přispěvatel: redustin 01. 04. 2019, 00:07:10
https://stackoverflow.com/questions/40297935/alsa-using-pcm-s24le/40301874#40301874

https://patchwork.kernel.org/patch/8868851/#18659311

wav neumí uložit formát S24_LE.

Buď bych zkusil S24_3LE (tedy skutečné 3 bajty), nebo S32_LE (tedy s nulovým bajtem na LSB pozici). S24_LE je obskurní formát.