เทคนิคการติดตั้ง Free G.729 Codec บน Raspberry PI

Running Debian, Asterisk and FreePBX on the Raspberry Pi

เทคนิคการติดตั้ง Free G.729 Codec บน Raspberry PI

โพสต์โดย nuiz » 06 มิ.ย. 2015 09:32

บทความนี้จะแนะนำเทคนิคการติดตั้ง G.729 Codec บน Raspberry Pi ครับ ใช้ได้กับ Rasp Pi ทั้งโมเดล B และ B+ ครับ (ผมลองแล้วทั้งสองโมเดล) ส่วนโมเดลอื่นยังไม่ได้ลองครับ (ไม่มีเครื่องจะลอง) แต่ก็น่าจะใช้ได้ครับ

** มีเฉพาะ G.729 เท่านั้นนะครับ ไม่มี G.723.1 **

เช็ค CPU (ดูเฉยๆครับว่าในเครื่องเป็นซีพียูอะไร)
ตัวอย่างที่ผมก๊อบมาให้ดูนี้เป็นซีพียูในเครื่องโมเดล B+ ครับ เป็น CPU แบบ Single Core

โค้ด: เลือกทั้งหมด
root@raspbx:~# cat /proc/cpuinfo
processor       : 0
model name      : ARMv6-compatible processor rev 7 (v6l)
Features        : swp half thumb fastmult vfp edsp java tls
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x0
CPU part        : 0xb76
CPU revision    : 7

Hardware        : BCM2708
Revision        : 0010
Serial          : 0000000042a4fa96


และหากเป็น Raspberry Pi โมเดล B ซีพียูเป็นแบบ Quad Core ครับ คือเห็น Processor 4 ตัว (0-3)

มาเริ่มต้นคอมไพล์กันครับ ซึ่งในการคอมไพล์เราจะใช้ไลบรารี่ bcg729 ครับ (ส่วน G.729, G723 ตัวที่อยู่ในเว็บ http://asterisk.hosting.lv เป็นเวอร์ชั่นที่คอมไพล์มาสำหรับซีพียูในเครื่องคอมพิวเตอร์ครับ เขาคอมไพล์โดยใช้ไลบรารี่ IPP ของ Intel)

1. คอมไพล์ไลบรารี่ bcg729
โค้ด: เลือกทั้งหมด
cd /home
wget http://www.voip4share.com/sources/bcg729-1.0.0.tar.gz
tar xvf bcg729-1.0.0.tar.gz -C /usr/src
cd /usr/src/bcg729-1.0.0
./configure --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc --localstatedir=/var --libdir=/lib
make
make install


2. ติดตั้งโปรแกรมเพิ่ม
โค้ด: เลือกทั้งหมด
apt-get install dh-autoreconf


3. คอมไฟล์ G.729
** ไฟล์ซอร์สโค๊ด asterisk-g72x-1.3.tar.bz2 ผมเอามาจากเว็บ http://asterisk.hosting.lv ครับ **
โค้ด: เลือกทั้งหมด
cd /home
wget http://www.voip4share.com/sources/asterisk-g72x-1.3.tar.bz2
tar xvf asterisk-g72x-1.3.tar.bz2 -C /usr/src
cd /usr/src/asterisk-g72x-1.3
./autogen.sh
./configure --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc --localstatedir=/var --libdir=/usr/lib --with-bcg729
make
make install


4. ผลลัพธ์
จะได้ไฟล์ codec_g729.so อยู่ในโฟลเดอร์ /usr/lib/asterisk/modules

5.ทดสอบโหลดโมดูล codec_g729.so
โค้ด: เลือกทั้งหมด
raspbx*CLI> module load codec_g729.so
Loaded codec_g729.so
  == Registered translator 'g729tolin' from format g729 to slin, table cost, 900000, computational cost 10000
  == Registered translator 'lintog729' from format slin to g729, table cost, 600000, computational cost 90000
Loaded codec_g729.so => (g729 Coder/Decoder, based on Bcg729)


และ
โค้ด: เลือกทั้งหมด
raspbx*CLI> core show translation
         Translation times between formats (in microseconds) for one second of data
          Source Format (Rows) Destination Format (Columns)

            gsm  ulaw  alaw  g726 adpcm  slin lpc10  g729 speex speex16  ilbc g726aal2  g722 slin16 testlaw speex32 slin12 slin24 slin32 slin44 slin48 slin96 slin192 silk8 silk12 silk16 silk24
      gsm     - 15000 15000 15000 15000  9000 15000 15000 15000   23000 15000    15000 17250  17000   15000   23000  17000  17000  17000  17000  17000  17000   17000 15000  15000  15000  15000
     ulaw 15000     -  9150 15000 15000  9000 15000 15000 15000   23000 15000    15000 17250  17000   15000   23000  17000  17000  17000  17000  17000  17000   17000 15000  15000  15000  15000
     alaw 15000  9150     - 15000 15000  9000 15000 15000 15000   23000 15000    15000 17250  17000   15000   23000  17000  17000  17000  17000  17000  17000   17000 15000  15000  15000  15000
     g726 15000 15000 15000     - 15000  9000 15000 15000 15000   23000 15000    15000 17250  17000   15000   23000  17000  17000  17000  17000  17000  17000   17000 15000  15000  15000  15000
    adpcm 15000 15000 15000 15000     -  9000 15000 15000 15000   23000 15000    15000 17250  17000   15000   23000  17000  17000  17000  17000  17000  17000   17000 15000  15000  15000  15000
     slin  6000  6000  6000  6000  6000     -  6000  6000  6000   14000  6000     6000  8250   8000    6000   14000   8000   8000   8000   8000   8000   8000    8000  6000   6000   6000   6000
    lpc10 15000 15000 15000 15000 15000  9000     - 15000 15000   23000 15000    15000 17250  17000   15000   23000  17000  17000  17000  17000  17000  17000   17000 15000  15000  15000  15000
     g729 15000 15000 15000 15000 15000  9000 15000     - 15000   23000 15000    15000 17250  17000   15000   23000  17000  17000  17000  17000  17000  17000   17000 15000  15000  15000  15000
    speex 15000 15000 15000 15000 15000  9000 15000 15000     -   23000 15000    15000 17250  17000   15000   23000  17000  17000  17000  17000  17000  17000   17000 15000  15000  15000  15000
  speex16 23500 23500 23500 23500 23500 17500 23500 23500 23500       - 23500    23500 15000   9000   23500   23000  17500  17000  17000  17000  17000  17000   17000 15000  15000  15000  15000
     ilbc 15000 15000 15000 15000 15000  9000 15000 15000 15000   23000     -    15000 17250  17000   15000   23000  17000  17000  17000  17000  17000  17000   17000 15000  15000  15000  15000
g726aal2 15000 15000 15000 15000 15000  9000 15000 15000 15000   23000 15000        - 17250  17000   15000   23000  17000  17000  17000  17000  17000  17000   17000 15000  15000  15000  15000
     g722 15600 15600 15600 15600 15600  9600 15600 15600 15600   15000 15600    15600     -   9000   15600   23000  17500  17000  17000  17000  17000  17000   17000 15000  15000  15000  15000
   slin16 14500 14500 14500 14500 14500  8500 14500 14500 14500    6000 14500    14500  6000      -   14500   14000   8500   8000   8000   8000   8000   8000    8000  6000   6000   6000   6000
  testlaw 15000 15000 15000 15000 15000  9000 15000 15000 15000   23000 15000    15000 17250  17000       -   23000  17000  17000  17000  17000  17000  17000   17000 15000  15000  15000  15000
  speex32 23500 23500 23500 23500 23500 17500 23500 23500 23500   23500 23500    23500 23500  17500   23500       -  17500  17500   9000  17000  17000  17000   17000 23500  23500  23500  23500
   slin12 14500 14500 14500 14500 14500  8500 14500 14500 14500   14000 14500    14500 14000   8000   14500   14000      -   8000   8000   8000   8000   8000    8000  6000   6000   6000   6000
   slin24 14500 14500 14500 14500 14500  8500 14500 14500 14500   14500 14500    14500 14500   8500   14500   14000   8500      -   8000   8000   8000   8000    8000  6000   6000   6000   6000
   slin32 14500 14500 14500 14500 14500  8500 14500 14500 14500   14500 14500    14500 14500   8500   14500    6000   8500   8500      -   8000   8000   8000    8000 14500  14500  14500  14500
   slin44 14500 14500 14500 14500 14500  8500 14500 14500 14500   14500 14500    14500 14500   8500   14500   14500   8500   8500   8500      -   8000   8000    8000 14500  14500  14500  14500
   slin48 14500 14500 14500 14500 14500  8500 14500 14500 14500   14500 14500    14500 14500   8500   14500   14500   8500   8500   8500   8500      -   8000    8000 14500  14500  14500  14500
   slin96 14500 14500 14500 14500 14500  8500 14500 14500 14500   14500 14500    14500 14500   8500   14500   14500   8500   8500   8500   8500   8500      -    8000 14500  14500  14500  14500
  slin192 14500 14500 14500 14500 14500  8500 14500 14500 14500   14500 14500    14500 14500   8500   14500   14500   8500   8500   8500   8500   8500   8500       - 14500  14500  14500  14500
    silk8 15000 15000 15000 15000 15000  9000 15000 15000 15000   15000 15000    15000 15000   9000   15000   23000   9000   9000  17000  17000  17000  17000   17000     -      -      -      -
   silk12 15000 15000 15000 15000 15000  9000 15000 15000 15000   15000 15000    15000 15000   9000   15000   23000   9000   9000  17000  17000  17000  17000   17000     -      -      -      -
   silk16 15000 15000 15000 15000 15000  9000 15000 15000 15000   15000 15000    15000 15000   9000   15000   23000   9000   9000  17000  17000  17000  17000   17000     -      -      -      -
   silk24 15000 15000 15000 15000 15000  9000 15000 15000 15000   15000 15000    15000 15000   9000   15000   23000   9000   9000  17000  17000  17000  17000   17000     -      -      -      -


จะเห็นว่า Asterisk สามารถแปลงจาก G.729 ไปเป็น Codec อื่นๆได้แล้วครับ

บทความที่เกี่ยวข้อง
เปิดบริการ อบรม Elastix ด้วยคอร์สพิเศษ ให้ติดตั้ง คอนฟิกคล่อง ใช้งานคล่อง ได้ใน 3 วัน
แนะนำ Raspberry PI เครื่องเล็กๆแต่ความสามารถไม่เล็ก
เทคนิคการอัพเกรด FreePBX และโมดูล
เทคนิคการติดตั้งโมดูลเพิ่มใน FreePBX
เทคนิคการสร้างไฟล์ Image ของ RasPBX และแบ็คอัพ
เทคนิคการติดตั้งและคอนฟิกให้ RasPBX ทำงานเป็น Fax Gateway ตอนที่ 1
เทคนิคการติดตั้งและคอนฟิกให้ RasPBX ทำงานเป็น Fax Gateway ตอนที่ 2
เทคนิคการติดตั้งและคอนฟิกให้ RasPBX ทำงานเป็น Fax Gateway ตอนที่ 3
** หากมีปัญหากับอุปกรณ์หรือบริการที่ทำหรือซื้อมาเอง ให้โพสต์ถามในเว็บนะครับ ขอสงวนสิทธิ์การให้ความช่วยเหลือแบบส่วนตัวเฉพาะลูกค้าที่ซื้อสินค้าและบริการจากผมเท่านั้นครับ **
** ติดต่อว่าจ้างที่เบอร์ 08-5161-9439 อีเมล์ iamaladin@gmail.com ครับ **
nuiz
Diamond Member
 
โพสต์: 4382
ลงทะเบียนเมื่อ: 24 มี.ค. 2010 09:33

Re: เทคนิคการติดตั้ง Free G.729 Codec บน Raspberry PI

โพสต์โดย max0405 » 08 ต.ค. 2015 19:54

ทดสอบแล้ว ติดตั้งได้ครับ ok
max0405
Gold Member
 
โพสต์: 144
ลงทะเบียนเมื่อ: 10 ธ.ค. 2014 09:26

Re: เทคนิคการติดตั้ง Free G.729 Codec บน Raspberry PI

โพสต์โดย sitt01 » 19 มี.ค. 2017 10:14

ของผมลงกับ Raspberry PI3 Model B 1GB Ram
แล้วพบ error ครับ ต้องแกไขยังไง

โค้ด: เลือกทั้งหมด
root@raspbx:/usr/src/asterisk-g72x-1.4# make
make  all-am
make[1]: Entering directory '/usr/src/asterisk-g72x-1.4'
/bin/bash ./libtool  --tag=CC   --mode=compile gcc -DHAVE_CONFIG_H -I.   -I/usr/local/include -DG72X_ASTERISK=140 -DG72X_BCG729 -Wall -D_GNU_SOURCE -DG72X_9 -O3 -fomit-frame-pointer -march= -flto  -MT codec_g729_la-codec_g72x.lo -MD -MP -MF .deps/codec_g729_la-codec_g72x.Tpo -c -o codec_g729_la-codec_g72x.lo `test -f 'codec_g72x.c' || echo './'`codec_g72x.c
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I/usr/local/include -DG72X_ASTERISK=140 -DG72X_BCG729 -Wall -D_GNU_SOURCE -DG72X_9 -O3 -fomit-frame-pointer -march= -flto -MT codec_g729_la-codec_g72x.lo -MD -MP -MF .deps/codec_g729_la-codec_g72x.Tpo -c codec_g72x.c  -fPIC -DPIC -o .libs/codec_g729_la-codec_g72x.o
gcc: error: missing argument to '-march='
Makefile:639: recipe for target 'codec_g729_la-codec_g72x.lo' failed
make[1]: *** [codec_g729_la-codec_g72x.lo] Error 1
make[1]: Leaving directory '/usr/src/asterisk-g72x-1.4'
Makefile:414: recipe for target 'all' failed
make: *** [all] Error 2
root@raspbx:/usr/src/asterisk-g72x-1.4#
ข้อดีของการเป็นคนทำคอมพิวเตอร์ คือ ทำยังไงคอมพิวเตอร์ก็จะไม่เจ๊ง ถ้าไม่ไปยุ่งกับ Hardware อย่างมากก็แค่เสียเวลาลง โปรแกรมใหม่ แต่อย่างว่ายิ่งลงบ่อยเท่าไรก็ยิ่งขำนาญเท่านี้น
sitt01
Gold Member
 
โพสต์: 261
ลงทะเบียนเมื่อ: 17 ม.ค. 2011 14:19

Re: เทคนิคการติดตั้ง Free G.729 Codec บน Raspberry PI

โพสต์โดย nuiz » 19 มี.ค. 2017 14:53

เวอร์ชั่นที่คุณลองเป็น 1.4 แล้วเวอร์ชั่น 1.3 ใช้ได้มั๊ยครับ
** หากมีปัญหากับอุปกรณ์หรือบริการที่ทำหรือซื้อมาเอง ให้โพสต์ถามในเว็บนะครับ ขอสงวนสิทธิ์การให้ความช่วยเหลือแบบส่วนตัวเฉพาะลูกค้าที่ซื้อสินค้าและบริการจากผมเท่านั้นครับ **
** ติดต่อว่าจ้างที่เบอร์ 08-5161-9439 อีเมล์ iamaladin@gmail.com ครับ **
nuiz
Diamond Member
 
โพสต์: 4382
ลงทะเบียนเมื่อ: 24 มี.ค. 2010 09:33

Re: เทคนิคการติดตั้ง Free G.729 Codec บน Raspberry PI

โพสต์โดย sitt01 » 19 มี.ค. 2017 20:45

nuiz เขียน:เวอร์ชั่นที่คุณลองเป็น 1.4 แล้วเวอร์ชั่น 1.3 ใช้ได้มั๊ยครับ

error เหมือนกัน
ข้อดีของการเป็นคนทำคอมพิวเตอร์ คือ ทำยังไงคอมพิวเตอร์ก็จะไม่เจ๊ง ถ้าไม่ไปยุ่งกับ Hardware อย่างมากก็แค่เสียเวลาลง โปรแกรมใหม่ แต่อย่างว่ายิ่งลงบ่อยเท่าไรก็ยิ่งขำนาญเท่านี้น
sitt01
Gold Member
 
โพสต์: 261
ลงทะเบียนเมื่อ: 17 ม.ค. 2011 14:19

Re: เทคนิคการติดตั้ง Free G.729 Codec บน Raspberry PI

โพสต์โดย sitt01 » 22 มี.ค. 2017 08:58

ถ้าใช้ Ras-pbx version ที่เว็บให้ ลงได้ไม่มีปัญหา แต่ถ้าใช้ download จาก http://www.raspberry-asterisk.org/downloads เป็น version ใหม่ จะเกิด error ครับ
ข้อดีของการเป็นคนทำคอมพิวเตอร์ คือ ทำยังไงคอมพิวเตอร์ก็จะไม่เจ๊ง ถ้าไม่ไปยุ่งกับ Hardware อย่างมากก็แค่เสียเวลาลง โปรแกรมใหม่ แต่อย่างว่ายิ่งลงบ่อยเท่าไรก็ยิ่งขำนาญเท่านี้น
sitt01
Gold Member
 
โพสต์: 261
ลงทะเบียนเมื่อ: 17 ม.ค. 2011 14:19

Re: เทคนิคการติดตั้ง Free G.729 Codec บน Raspberry PI

โพสต์โดย sitt01 » 07 พ.ค. 2017 14:43

ขอเพิ่มเติม สำหรับ ท่านที่โหลด asterisk version
Asterisk 13.13.1
FreePBX 13.0.190.11
Torrent raspbx-28-01-2017.zip.torrent
HTTP raspbx-28-01-2017.zip

แล้ว ลง G729 ไม่ได้ ให้ลองทำตามนี้
1.Install autoreconf
โค้ด: เลือกทั้งหมด
sudo apt-get install dh-autoreconf

2.bcg729
โค้ด: เลือกทั้งหมด
cd /usr/src
wget http://download-mirror.savannah.gnu.org/releases/linphone/plugins/sources/bcg729-1.0.0.tar.gz
tar xzf bcg729-1.0.0.tar.gz
cd bcg729-1.0.0
./configure --libdir=/lib
make
sudo make install

3.Compiling g729 codecs
โค้ด: เลือกทั้งหมด
cd /usr/src
wget http://asterisk.hosting.lv/src/asterisk-g72x-1.4.tar.bz2
tar xjf asterisk-g72x-1.4.tar.bz2
cd asterisk-g72x-1.4
./autogen.sh
./configure CFLAGS='-march=armv6' --with-asterisk130 --with-bcg729  --with-asterisk-includes=../asterisk-13.12.1/include
make
sudo make install


อย่าลืม
module load codec_g729.so ใน CLI นะครับ




credit http://blog.pztop.com/2016/11/01/Asteri ... pberryPi3/
ข้อดีของการเป็นคนทำคอมพิวเตอร์ คือ ทำยังไงคอมพิวเตอร์ก็จะไม่เจ๊ง ถ้าไม่ไปยุ่งกับ Hardware อย่างมากก็แค่เสียเวลาลง โปรแกรมใหม่ แต่อย่างว่ายิ่งลงบ่อยเท่าไรก็ยิ่งขำนาญเท่านี้น
sitt01
Gold Member
 
โพสต์: 261
ลงทะเบียนเมื่อ: 17 ม.ค. 2011 14:19


ย้อนกลับไปยัง RasPBX - Asterisk for Raspberry Pi

ผู้ใช้งานขณะนี้

่กำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และ บุคคลทั่วไป 1 ท่าน