Multimediální technologie – Cvičení 1

Zadání

Nutná softwarová výbava

  • Python 2.7.X
  • PyCharm – Vývojové prostředí.
  • PyQt – Podpora grafického rozhraní.
  • Scipy-stack – Algoritmy lineární algebry, vykreslování grafů, zpracování signálů…
  • opencv-python – Alhoritmy pro načítání a zpracování obrazu.
  • scikit-learn – Algoritmy strojového učení a rozpoznávání (PCA, …).

Úkol

Načtěte binární soubor *. wav.

Soubory

Užitečné

Ukázka načtení binárního souboru *.wav

Hlavička binárního souboru *.wav

Hlavička binárního souboru *.wav

Hlavička binárního souboru *.wav

  • (1-4B) řetězec „RIFF“ (Resource Interchange File Format)
  • (5-8B) A1-počet bytů do konce souboru (A1=velikost souboru-8d)
  • (9-12B) řetězec „WAVE“
  • (13-16B) řetězec „fmt “
  • (17-20B) AF-počet bytů do konce části FORMAT
  • (21-22B) K-kategorie formátu (komprese)

0000h-WAVE_FORMAT_UNKNOW 0001h-WAVE_FORMAT_PCM

0002h-WAVE_FORMAT_ADPCM 0005h-WAVE_FORMAT_IBM_CVSD

0006h-WAVE_FORMAT_ALAW 0007h-WAVE_FORMAT_MULAW

  • (23-24B) C-počet kanálů
  • (25-28B) VF-vzorkovací frekvence [Hz]
  • (29-32B) PB-průměrný počet bytů za sekundu
  • (33-34B) VB-velikost bloku vzorků [B]
  • (35-36B) VV-velikost vzorku [b]
  • (37-40B) řetězec „data”
  • (41-44B) A2-počet bytů do konce souboru
Příklad
Příklad hlavičky binárního souboru *.wav

Příklad hlavičky binárního souboru *.wav

  • (5-8) A1 = 0000BCE7h = 48 359d (zk: 48359+8=48 367)
  • (17-20) AF = 00000010h = 16d
  • (21-22) K = 0001h (WAVE_FORMAT_PCM)
  • (23-24) C = 0001h, počet kanálů = 1
  • (25-28) VF = 00003E80h = 16000d Hz
  • (29-32) PB = 00007D00h = 32000d Hz
  • (33-34) VB = 0002h = 2B
  • (35-36) VV = 0010h = 16b
  • (41-44) A2 = 0000BCC3h = 48 323d (zk: 48 323+44=48 367)

Pozn.: V hlavičce mohou být i jiné nepovinné části (fact, cue-points, play-list, associated data).


Řešení

Lukáš Vlček

Autor je SW vývojář primárně se zaměřující na platformu .NET Framework/.NET Core. Avšak jiné moderní technologie mu nejsou cizí. Mezi jeho koníčky paří vedle sportu i amatérské "bastlení" s Arduinem a Raspberry Pi.