
tl;dr: Что это ([1][0][0][0] / 0x0001)
значит?
ffprobe test.wav
производит:
ffprobe version 3.3.3 Copyright (c) 2007-2017 the FFmpeg developers
built with gcc 4.8 (Ubuntu 4.8.4-2ubuntu1~14.04.3)
configuration: --extra-libs=-ldl --prefix=/opt/ffmpeg --mandir=/usr/share/man --enable-avresample --disable-debug --enable-nonfree --enable-gpl --enable-version3 --enable-libopencore-amrnb --enable-libopencore-amrwb --disable-decoder=amrnb --disable-decoder=amrwb --enable-libpulse --enable-libfreetype --enable-gnutls --disable-ffserver --enable-libx264 --enable-libx265 --enable-libfdk-aac --enable-libvorbis --enable-libtheora --enable-libmp3lame --enable-libopus --enable-libvpx --enable-libspeex --enable-libass --enable-avisynth --enable-libsoxr --enable-libxvid --enable-libvidstab --enable-libwavpack --enable-nvenc --enable-libzimg
libavutil 55. 58.100 / 55. 58.100
libavcodec 57. 89.100 / 57. 89.100
libavformat 57. 71.100 / 57. 71.100
libavdevice 57. 6.100 / 57. 6.100
libavfilter 6. 82.100 / 6. 82.100
libavresample 3. 5. 0 / 3. 5. 0
libswscale 4. 6.100 / 4. 6.100
libswresample 2. 7.100 / 2. 7.100
libpostproc 54. 5.100 / 54. 5.100
Input #0, wav, from 'test.wav':
Metadata:
encoder : Lavf57.71.100
Duration: 00:00:10.00, bitrate: 1536 kb/s
Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 48000 Hz, 2 channels, s16, 1536 kb/s
Как мне интерпретировать аудиопоток? Вот что я понял на данный момент:
Stream #0:0
: Первый потокAudio
: Ничего удивительного...pcm_s16le
: Импульсно-кодовая модуляция, где каждый сэмпл представляет собой 16-битное целое число со знаком с прямым порядком байтов([1][0][0][0] / 0x0001)
: ???48000 Hz
: Частота дискретизации2 channels
Стереоs16
: Опять 16-битные целые числа со знаком?1536 kb/s
: Скорость передачи данных
решение1
В ([1][0][0][0] / 0x0001)
, 0x0001
является тегом кодека, и [1][0][0][0]
является строкой, полученной из этого тега. Если тег закодировал печатные символы, то строка будет содержать те, т.е.
0x6134706d
--> mp4a
где (шестнадцатеричное) 6d == 'm', 70 == 'p', 34 == '4' и 61 == 'a'.
PCM_S16LE имеет тег 0x0001.
s16
имеет знак 16 бит, чередуется, т. е. для стереопотока декодер отправит {выборка для канала 1, выборка канала 2, выборка для канала 1...}. Другой вариант — s16p
, который является планарным.