วันเสาร์ที่ 13 สิงหาคม พ.ศ. 2559

Asterisk รองรับ Video Codec แบบ VP8

เกี่ยวกับ VP8

VP8 เป็นมาตรฐานการบีบอัดสัญญาณภาพอีกแบบหนึ่งครับ ซึ่งว่ากันว่าให้คุณภาพระดับเกือบเทียบเท่า H.264 เลยทีเดียวแต่ไฟล์มีขนาดเล็กกว่า (กี่ % ไม่รู้ครับ) ผู้คิดค้น VP8 คือบริษัท ON2 Technologies ซึ่งต่อมาก็โดน Google ซื้อเลยทำให้ Google เป็นเจ้าของ VP8 ไปโดยปริยายครับ จากนั้นก็เอามาพัฒนาต่อครับ และตอนนี้ VP8 กลายเป็นของฟรีและเป็น Opensource เรียบร้อยแล้วครับ

ไฟล์ Video บน Youtube ที่นามสกุล .webm ก็ใช้ Video Codec แบบ VP8 นี่แหล่ะครับ และว่ากันว่าตอนนี้ Google ก็กำลังแปลงไฟล์เก่าๆที่ใช้ฟอร์แม็ต H.264 ให้เป็น VP8 ด้วยหล่ะครับ

เวลาเราดู Video บน Youtube ภาพจะชัดมากเลยครับ แต่ท่านอย่าเพิ่งดีใจไปนะครับว่าเวลาเอา VP8 มาใช้กับ Video Call, Video Conference แล้วจะได้ภาพชัดขนาดนั้น เป็นไปได้ยากครับ ทั้งนี้ก็เพราะว่าบน Youtube มีการเก็บไฟล์เหล่านั้นไว้ฮาร์ดดิสก์ของเขาแล้ว เวลาเราเปิดดูไฟล์เหล่านั้น ข้อมูลมันไม่ได้แสดงผลบนเครื่องเราทันทีทันใดนะครับ ข้อมูลจะถูกดาวน์โหลดมาเก็บไว้ในเครื่องของเราก่อนเป็นระยะเวลาสั้นๆก่อนแล้วค่อยโชว์จริงๆ มันไม่ได้เป็นแบบ Interactive Realtime นะครับ

แต่กรณี Video Call/Video Conference ของ VoIP มันเป็นแบบ Interactive Realtime ครับ มีการโต้ตอบกันไปๆมาๆ ถึงแม้ว่าจะใช้ VP8 ทำให้ข้อมูลภาพมีขนาดเล็กลงก็ตาม ถ้าใช้บนลิ้งค์ที่มีแบนด์วิดธ์ไม่พอหรือมี Loss คุณภาพที่เห็นก็ "ห่วยรับประทาน" ครับ

** มีลูกค้าหลายท่านที่อาจจะเคยโดนคนขาย Video Conference ยี่ห้อดังๆแพงๆบอกข้อมูลไม่หมด ประมาณว่าถ้าใช้ยี่ห้อนี้จะได้คุณภาพดีสุดยอดแล้วก็เทสให้ดู แต่เทสบนแลนซึ่งมีแบนวิดธ์เหลือเฟือ ลูกค้าก็เห็นว่าจริงสมคำล่ำลือ แต่เวลาเอามาใช้งานผ่านอินเตอร์เน็ตปรากฏว่าบางทีมันก็ดี บางทีมันก็ไม่ดี ภาพล้ม ภาพแตก เสียขาดหาย บางทีใช้ๆไปก็หลุดต้องต่อกันใหม่ เถียงกันไปเถียงกันมากระหว่างคนขายกับคนให้บริการอินเตอร์เน็ต สุดท้ายลูกค้าต้องยอมใช้งานในสภาพแบบนั้น ของซื้อมาแล้ว เงินก็จ่ายแล้วอีกต่างหาก คือจะยี่ห้อดังขนาดไหน ของราคาแพงขนาดไหน ต้องดูแบนวิดธ์ที่จะใช้งานด้วยครับ ไม่ใช่ดูกันแค่ขา Download 10M, 50M หรือ 100M เท่านั้น ต้องดูขา Upload ด้วยครับ ถ้ามีไม่ถึง 1M ก็ไม่ต้องคาดหวังว่าจะได้คุณภาพดีเลยครับ ถ้าแบนวิดธ์มีพอภาพจากอุปกรณ์ราคาหลักพันก็อาจจะเทียบเท่าได้กับภาพจากอุปกรณ์หลักล้านครับ **

เริ่มต้นด้วยการติดตั้ง

apt-get install build-essential wget libssl-dev libncurses5-dev libnewt-dev  libxml2-dev linux-headers-$(uname -r) libsqlite3-dev uuid-dev

ไฟล์ .tar.gz ของ Asterisk ที่เราแตกในขั้นตอนที่ 2 นั้นนะครับ ไฟล์จะเก็บไว้ในไดเร็คตอรี่ /usr/src/asterisk-11.6.0 เราต้องแก้ไขไฟล์ Patch ให้ตรงด้วยครับ

tar -xvf asterisk-11.6.0.tar.gz -C /usr/src/

ทำการ PATCH

cd /usr/src/asterisk-11.6.0
patch -p1 -i /home/asterisk_11_vp8_passthrough_support.patch

ติดตั้ง asterisk

cd /usr/src/asterisk-11.6.0
./configure --prefix=/usr --exec-prefix=/usr --sysconfdir=/etc --localstatedir=/var --disable-asteriskssl
make menuselect
make -j `getconf _NPROCESSORS_ONLN`
make install
make config

เพิ่มบรรทัดนี้ในไฟล์ /etc/asterisk/sip.conf

videosupport=yes
allow=vp8

และคอนฟิก SIP ของเบอร์ Extension ที่จะใช้ Video VP8 ก็ให้เพิ่มบรรทัดนี้เข้าไปด้วยครับ

allow=vp8

เช่น

[104]
host=dynamic
port=5060
disallow=all
allow=ulaw
allow=h264
allow=vp8
...