跳至正文
Wener Notes

Asterisk 编码

约 7 分钟阅读

Asterisk Codec

bash
# 查看编码、转译、文件格式
core show codecs
core show translation
core show file format
codecnameref
ADPCM, IMA
AMRAdaptive Multi-RateRFC4867
AMR-WB
AMR-WB+
B64
G.722
G.723
G.726
G.729
GSM
H.264RFC6184
H.265/HEVCHigh Efficiency Video CodingRFC7798
OpusRFC7587
PCMA-WBITU-T G.711.1 A-lawRFC5391
PCMA,A-Law,alawITU-T G.711 PCM A-LawRFC3551
PCMU-WBITU-T G.711.1 μ-LawRFC5391
PCMU,μ-Law,ulawTU-T G.711 PCM μ-LawRFC3551
Speex
  • 实时语音基本都是 20ms
  • RTCP NTP timestamp
    • 1–60 samples per second.

VoIP 常用编码

以下编码时钟频率均为 8000, 默认包大小 20

CodecPTNote
PCMU0G.711/ulaw
GSM3
G7234
PCMA8G.711/alaw
G7229
G72918G.729a

PT = RTC Payload Type

音频编码

  • 最佳兼容编码是 ulaw、alaw、gsm
    • allow=ulaw,alaw,g722
    • disallow=all
  • 开启 all 目前得到的是 codec2|g723|ulaw|alaw|gsm|g726|g726aal2|adpcm|slin|slin|slin|slin|slin|slin|slin|slin|slin|lpc10|g729|speex|speex|speex|ilbc|g722|siren7|siren14|testlaw|g719|opus|jpeg|png|h261|h263|h263p|h264|mpeg4|vp8|vp9|red|t140|t38|silk|silk|silk|silk
  • 如果两端的编码不一致会由 asterisk 进行转码 - 有一定的性能影响
  • 如果和允许的编码不匹配会导致拒绝
    • SDP: Incompatible media format: no common codec
  • SDP 里的 rtpmap 标示支持的编码格式

SDP 头里的编码信息

text
m=audio 55560 RTP/AVP 0 101 3 8 110 97
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
a=rtpmap:110 speex/8000
a=rtpmap:97 iLBC/8000
a=fmtp:97 mode=30
  • 编码类型
    • u-law
    • G726
    • Speex Wide
    • Speex Ultra
    • Opus Narrow
    • Opus Super
    • Opus Full
    • Opus Wide
    • GSM
    • a-law
    • Speex Narrow
    • iLBC 30
    • G729
    • G722
CodedFidelityBitrate
GSM800013200
Opus480006000 - 510000

视频编码

  • H.263 90Kbps
  • H.264
  • VP8
  • 客户端支持情况
    • XLite 支持 H263 H263P
    • Zoiper 免费版支持 VP8 付费版支持 H264

音频文件转码

bash
# 如果出现警告, 可以尝试降低音量  -v 0.96
sox callwait.mp3 -c 1 -r 16000 -b 16 callwait.wav

批量转换

bash
sox SilentCity.mp3 -t raw -r 8000 -s -2 -c 1 SilentCity.sln
cp *.sln /var/lib/asterisk/moh
asterisk -rx "module reload res_musiconhold.so"

# exten => 664,1,NoOp()
#     same => n,Progress()
#     same => n,MusicOnHold()

lame --decode music.mp3 music.wav
sox -V music.wav -r 8000 -c 1 -w music.raw
sox -V music.wav -r 8000 -c 1 -w music.gsm

for i in *.wav; do \
sox $i -r 8000 -c 1 $(basename $i .wav).raw; \
sox $i -r 8000 -c 1 $(basename $i .wav).gsm; \
done
rm *.wav

格式之间的转码时间

text
         Translation times between formats (in microseconds) for one second of data
          Source Format (Rows) Destination Format (Columns)

           ulaw  alaw   gsm  g726 g726aal2 adpcm  slin  slin  slin  slin  slin  slin  slin  slin  slin lpc10  ilbc  g722 testlaw
     ulaw     -  9150 15000 15000    15000 15000  9000 17000 17000 17000 17000 17000 17000 17000 17000 15000 15000 17250   15000
     alaw  9150     - 15000 15000    15000 15000  9000 17000 17000 17000 17000 17000 17000 17000 17000 15000 15000 17250   15000
      gsm 15000 15000     - 15000    15000 15000  9000 17000 17000 17000 17000 17000 17000 17000 17000 15000 15000 17250   15000
     g726 15000 15000 15000     -    15000 15000  9000 17000 17000 17000 17000 17000 17000 17000 17000 15000 15000 17250   15000
 g726aal2 15000 15000 15000 15000        - 15000  9000 17000 17000 17000 17000 17000 17000 17000 17000 15000 15000 17250   15000
    adpcm 15000 15000 15000 15000    15000     -  9000 17000 17000 17000 17000 17000 17000 17000 17000 15000 15000 17250   15000
     slin  6000  6000  6000  6000     6000  6000     -  8000  8000  8000  8000  8000  8000  8000  8000  6000  6000  8250    6000
     slin 14500 14500 14500 14500    14500 14500  8500     -  8000  8000  8000  8000  8000  8000  8000 14500 14500 14000   14500
     slin 14500 14500 14500 14500    14500 14500  8500  8500     -  8000  8000  8000  8000  8000  8000 14500 14500  6000   14500
     slin 14500 14500 14500 14500    14500 14500  8500  8500  8500     -  8000  8000  8000  8000  8000 14500 14500 14500   14500
     slin 14500 14500 14500 14500    14500 14500  8500  8500  8500  8500     -  8000  8000  8000  8000 14500 14500 14500   14500
     slin 14500 14500 14500 14500    14500 14500  8500  8500  8500  8500  8500     -  8000  8000  8000 14500 14500 14500   14500
     slin 14500 14500 14500 14500    14500 14500  8500  8500  8500  8500  8500  8500     -  8000  8000 14500 14500 14500   14500
     slin 14500 14500 14500 14500    14500 14500  8500  8500  8500  8500  8500  8500  8500     -  8000 14500 14500 14500   14500
     slin 14500 14500 14500 14500    14500 14500  8500  8500  8500  8500  8500  8500  8500  8500     - 14500 14500 14500   14500
    lpc10 15000 15000 15000 15000    15000 15000  9000 17000 17000 17000 17000 17000 17000 17000 17000     - 15000 17250   15000
     ilbc 15000 15000 15000 15000    15000 15000  9000 17000 17000 17000 17000 17000 17000 17000 17000 15000     - 17250   15000
     g722 15600 15600 15600 15600    15600 15600  9600 17500  9000 17000 17000 17000 17000 17000 17000 15600 15600     -   15600
  testlaw 15000 15000 15000 15000    15000 15000  9000 17000 17000 17000 17000 17000 17000 17000 17000 15000 15000 17250       -

音频文件编码格式说明

IDTYPENAMEFORMATDESCRIPTION
31imagepngpng(PNG Image)
6audiog726g726(G.726 RFC3551)
4audioalawalaw(G.711 a-law)
2audiog723g723(G.723.1)
20audiospeexspeex(SpeeX)
21audiospeexspeex16(SpeeX 16khz)
22audiospeexspeex32(SpeeX 32khz)
24audiog722g722(G722)
25audiosiren7siren7(ITU G.722.1 (Siren7, licensed from Polycom))
32videoh261h261(H.261 video)
33videoh263h263(H.263 video)
8audioadpcmadpcm(Dialogic ADPCM)
43audiosilksilk8(SILK Codec (8 KHz))
44audiosilksilk12(SILK Codec (12 KHz))
45audiosilksilk16(SILK Codec (16 KHz))
46audiosilksilk24(SILK Codec (24 KHz))
28audiog719g719(ITU G.719)
34videoh263ph263p(H.263+ video)
35videoh264h264(H.264 video)
19audiog729g729(G.729A)
9audioslinslin(16 bit Signed Linear PCM)
10audioslinslin12(16 bit Signed Linear PCM (12kHz))
11audioslinslin16(16 bit Signed Linear PCM (16kHz))
12audioslinslin24(16 bit Signed Linear PCM (24kHz))
13audioslinslin32(16 bit Signed Linear PCM (32kHz))
14audioslinslin44(16 bit Signed Linear PCM (44kHz))
15audioslinslin48(16 bit Signed Linear PCM (48kHz))
16audioslinslin96(16 bit Signed Linear PCM (96kHz))
17audioslinslin192(16 bit Signed Linear PCM (192kHz))
3audioulawulaw(G.711 u-law)
18audiolpc10lpc10(LPC10)
27audiotestlawtestlaw(G.711 test-law)
42audiononenone(Null codec)
41imaget38t38(T.38 UDPTL Fax)
38videovp9vp9(VP9 video)
37videovp8vp8(VP8 video)
5audiogsmgsm(GSM)
36videompeg4mpeg4(MPEG4 video)
23audioilbcilbc(iLBC)
39textredred(T.140 Realtime Text with redundancy)
40textt140t140(Passthrough T.140 Realtime Text)
29audioopusopus(Opus Codec)
30imagejpegjpeg(JPEG image)
7audiog726aal2g726aal2(G.726 AAL2)
1audiocodec2codec2(Codec 2)
26audiosiren14siren14(ITU G.722.1 Annex C, (Siren14, licensed from Polycom))

文件格式说明

| Format | Name | Extensions | | ------- | ------- | ---------- | ------ | --- | --- | --- | | slin192 | sln192 | sln192 | | slin96 | sln96 | sln96 | | slin48 | sln48 | sln48 | | slin44 | sln44 | sln44 | | slin32 | sln32 | sln32 | | slin24 | sln24 | sln24 | | slin16 | sln16 | sln16 | | slin12 | sln12 | sln12 | | slin | sln | sln | raw | | gsm | gsm | gsm | | g719 | g719 | g719 | | g729 | g729 | g729 | | g726 | g726-16 | g726-16 | | g726 | g726-24 | g726-24 | | g726 | g726-32 | g726-32 | | g726 | g726-40 | g726-40 | | slin16 | wav16 | wav16 | | slin | wav | wav | | h264 | h264 | h264 | | h263 | h263 | h263 | | siren7 | siren7 | siren7 | | ilbc | iLBC | ilbc | | g723 | g723sf | g723 | g723sf | | g722 | g722 | g722 | | ulaw | au | au | | alaw | alaw | alaw | al | alw | | ulaw | pcm | pcm | ulaw | ul | mu | ulw | | siren14 | siren14 | siren14 | | gsm | wav49 | WAV | wav49 | | adpcm | vox | vox |

关联信息

反向链接、本文链接的其他页面和外部资料。

参考资料

Wikipedia5 条
其他外链5 条
最近更新commit 00ddd72编辑