17db96d56Sopenharmony_ci:mod:`sndhdr` --- Determine type of sound file 27db96d56Sopenharmony_ci============================================== 37db96d56Sopenharmony_ci 47db96d56Sopenharmony_ci.. module:: sndhdr 57db96d56Sopenharmony_ci :synopsis: Determine type of a sound file. 67db96d56Sopenharmony_ci :deprecated: 77db96d56Sopenharmony_ci 87db96d56Sopenharmony_ci.. sectionauthor:: Fred L. Drake, Jr. <fdrake@acm.org> 97db96d56Sopenharmony_ci.. Based on comments in the module source file. 107db96d56Sopenharmony_ci 117db96d56Sopenharmony_ci**Source code:** :source:`Lib/sndhdr.py` 127db96d56Sopenharmony_ci 137db96d56Sopenharmony_ci.. index:: 147db96d56Sopenharmony_ci single: A-LAW 157db96d56Sopenharmony_ci single: u-LAW 167db96d56Sopenharmony_ci 177db96d56Sopenharmony_ci.. deprecated-removed:: 3.11 3.13 187db96d56Sopenharmony_ci The :mod:`sndhdr` module is deprecated 197db96d56Sopenharmony_ci (see :pep:`PEP 594 <594#sndhdr>` for details and alternatives). 207db96d56Sopenharmony_ci 217db96d56Sopenharmony_ci-------------- 227db96d56Sopenharmony_ci 237db96d56Sopenharmony_ciThe :mod:`sndhdr` provides utility functions which attempt to determine the type 247db96d56Sopenharmony_ciof sound data which is in a file. When these functions are able to determine 257db96d56Sopenharmony_ciwhat type of sound data is stored in a file, they return a 267db96d56Sopenharmony_ci:func:`~collections.namedtuple`, containing five attributes: (``filetype``, 277db96d56Sopenharmony_ci``framerate``, ``nchannels``, ``nframes``, ``sampwidth``). The value for *type* 287db96d56Sopenharmony_ciindicates the data type and will be one of the strings ``'aifc'``, ``'aiff'``, 297db96d56Sopenharmony_ci``'au'``, ``'hcom'``, ``'sndr'``, ``'sndt'``, ``'voc'``, ``'wav'``, ``'8svx'``, 307db96d56Sopenharmony_ci``'sb'``, ``'ub'``, or ``'ul'``. The *sampling_rate* will be either the actual 317db96d56Sopenharmony_civalue or ``0`` if unknown or difficult to decode. Similarly, *channels* will be 327db96d56Sopenharmony_cieither the number of channels or ``0`` if it cannot be determined or if the 337db96d56Sopenharmony_civalue is difficult to decode. The value for *frames* will be either the number 347db96d56Sopenharmony_ciof frames or ``-1``. The last item in the tuple, *bits_per_sample*, will either 357db96d56Sopenharmony_cibe the sample size in bits or ``'A'`` for A-LAW or ``'U'`` for u-LAW. 367db96d56Sopenharmony_ci 377db96d56Sopenharmony_ci 387db96d56Sopenharmony_ci.. function:: what(filename) 397db96d56Sopenharmony_ci 407db96d56Sopenharmony_ci Determines the type of sound data stored in the file *filename* using 417db96d56Sopenharmony_ci :func:`whathdr`. If it succeeds, returns a namedtuple as described above, otherwise 427db96d56Sopenharmony_ci ``None`` is returned. 437db96d56Sopenharmony_ci 447db96d56Sopenharmony_ci .. versionchanged:: 3.5 457db96d56Sopenharmony_ci Result changed from a tuple to a namedtuple. 467db96d56Sopenharmony_ci 477db96d56Sopenharmony_ci 487db96d56Sopenharmony_ci.. function:: whathdr(filename) 497db96d56Sopenharmony_ci 507db96d56Sopenharmony_ci Determines the type of sound data stored in a file based on the file header. 517db96d56Sopenharmony_ci The name of the file is given by *filename*. This function returns a namedtuple as 527db96d56Sopenharmony_ci described above on success, or ``None``. 537db96d56Sopenharmony_ci 547db96d56Sopenharmony_ci .. versionchanged:: 3.5 557db96d56Sopenharmony_ci Result changed from a tuple to a namedtuple. 567db96d56Sopenharmony_ci 577db96d56Sopenharmony_ciThe following sound header types are recognized, as listed below with the return value 587db96d56Sopenharmony_cifrom :func:`whathdr`: and :func:`what`: 597db96d56Sopenharmony_ci 607db96d56Sopenharmony_ci+------------+------------------------------------+ 617db96d56Sopenharmony_ci| Value | Sound header format | 627db96d56Sopenharmony_ci+============+====================================+ 637db96d56Sopenharmony_ci| ``'aifc'`` | Compressed Audio Interchange Files | 647db96d56Sopenharmony_ci+------------+------------------------------------+ 657db96d56Sopenharmony_ci| ``'aiff'`` | Audio Interchange Files | 667db96d56Sopenharmony_ci+------------+------------------------------------+ 677db96d56Sopenharmony_ci| ``'au'`` | Au Files | 687db96d56Sopenharmony_ci+------------+------------------------------------+ 697db96d56Sopenharmony_ci| ``'hcom'`` | HCOM Files | 707db96d56Sopenharmony_ci+------------+------------------------------------+ 717db96d56Sopenharmony_ci| ``'sndt'`` | Sndtool Sound Files | 727db96d56Sopenharmony_ci+------------+------------------------------------+ 737db96d56Sopenharmony_ci| ``'voc'`` | Creative Labs Audio Files | 747db96d56Sopenharmony_ci+------------+------------------------------------+ 757db96d56Sopenharmony_ci| ``'wav'`` | Waveform Audio File Format Files | 767db96d56Sopenharmony_ci+------------+------------------------------------+ 777db96d56Sopenharmony_ci| ``'8svx'`` | 8-Bit Sampled Voice Files | 787db96d56Sopenharmony_ci+------------+------------------------------------+ 797db96d56Sopenharmony_ci| ``'sb'`` | Signed Byte Audio Data Files | 807db96d56Sopenharmony_ci+------------+------------------------------------+ 817db96d56Sopenharmony_ci| ``'ub'`` | UB Files | 827db96d56Sopenharmony_ci+------------+------------------------------------+ 837db96d56Sopenharmony_ci| ``'ul'`` | uLAW Audio Files | 847db96d56Sopenharmony_ci+------------+------------------------------------+ 857db96d56Sopenharmony_ci 867db96d56Sopenharmony_ci.. data:: tests 877db96d56Sopenharmony_ci 887db96d56Sopenharmony_ci A list of functions performing the individual tests. Each function takes two 897db96d56Sopenharmony_ci arguments: the byte-stream and an open file-like object. When :func:`what` is 907db96d56Sopenharmony_ci called with a byte-stream, the file-like object will be ``None``. 917db96d56Sopenharmony_ci 927db96d56Sopenharmony_ci The test function should return a string describing the image type if the test 937db96d56Sopenharmony_ci succeeded, or ``None`` if it failed. 947db96d56Sopenharmony_ci 957db96d56Sopenharmony_ciExample: 967db96d56Sopenharmony_ci 977db96d56Sopenharmony_ci.. code-block:: pycon 987db96d56Sopenharmony_ci 997db96d56Sopenharmony_ci >>> import sndhdr 1007db96d56Sopenharmony_ci >>> imghdr.what('bass.wav') 1017db96d56Sopenharmony_ci 'wav' 1027db96d56Sopenharmony_ci >>> imghdr.whathdr('bass.wav') 1037db96d56Sopenharmony_ci 'wav' 1047db96d56Sopenharmony_ci 105