0244 | ใช้ GPU intel transcode video ด้วย ffmpeg

API ใหม่ๆ ของ ffmpeg จะทำงานบน vaapi (video accelerator api) เพราะงั้นเวลา transcode เลยต้องใช้ interface ของ vaapi ประมาณนี้

ffmpeg \
  -hwaccel vaapi -hwaccel_device /dev/dri/renderD128 -hwaccel_output_format vaapi \
  -i inputfile.mp4 \
  -c:v h264_vaapi -b:v 1500k -profile:v main -g 100 \
  -c:a aac -b:a 128k \
  -f mp4 output.mp4
  1. สั่ง ffmpeg
  2. ตั้งค่าให้สัญญาณ video ขาเข้า ไป decode ด้วย vaapi (เพื่อให้เอาผลลัพท์ไปใช้ต่อใน vaapi ได้)
  3. ระบุสัญญาณ input
  4. ระบุการแปลง format ให้ใช้ vaapi h264 encoder ปรับ profile/bitrate ตามชอบ option อื่นๆ ไปดูใน docs
  5. ตั้ง codec เสียง
  6. เก็บ output เป็น format mp4 ลงไฟล์ output.mp4

ref: https://trac.ffmpeg.org/wiki/Hardware/VAAPI

แถม อันนี้ใช้ vlc clean สัญญาณกล้องวงจรปิด ก่อนส่งให้ ffmpeg transcode ต่อ (ไม่รู้ทำไม ffmpeg transcode ตรงๆ ไม่ได้)

vlc \
 'rtsp://192.168.1.102/user=admin&password=&channel=1&stream=0.sdp?' \
  --sout '#duplicate{dst=std{access=file,mux=ts,dst=-}}' | \
  ffmpeg \
    -hwaccel vaapi -hwaccel_device /dev/dri/renderD128 -hwaccel_output_format vaapi \
    -i - \
    -c:v h264_vaapi -b:v 1500k -profile:v main -g 100  \
    -y -f flv rtmp://127.0.0.1/live/cctv2

0243 | upgrade centos 7 เป็น centos 8

  • อาจไม่ได้ผลในกรณีที่ลง software จาก repository ภายนอก
  • ตรวจสอบให้แน่ใจว่าทุก repository ที่ใช้งานอยู่ รองรับ centos 8 ก่อนอัพเกรด
  • backup ก่อนเสมอ

reference: https://www.tecmint.com/upgrade-centos-7-to-centos-8/

1) ลง epel repository

yum install epel-release -y

2) ลง package yum-utils กับ rpmconf

yum install yum-utils rpmconf

3) check ไฟล์ config ว่ามีอะไรเปลี่ยนบ้าง ให้ revert กลับมาที่ default rpm ก่อน ** ระวัง

rpmconf -a

4) cleanup package ที่ซ้ำซ้อน

package-cleanup --leaves
package-cleanup --orphans

5) ติดตั้ง dnf แล้วลบ yum ทิ้ง (package manager ตัวใหม่ที่มาแทน yum)

yum install dnf
dnf -y remove yum yum-metadata-parser
rm -Rf /etc/yum

6) upgrade package ทั้งหมดของ centos 7 ให้เป็น version ล่าสุด

dnf upgrade

7) ติดตั้ง centos release ของ centos 8 ถ้าวันไหน centos 8 ออก update ก็ต้องแก้ version package ตาม

dnf install \
    http://mirror.centos.org/centos/8/BaseOS/x86_64/os/Packages/centos-repos-8.1-1.1911.0.8.el8.x86_64.rpm \
    http://mirror.centos.org/centos/8/BaseOS/x86_64/os/Packages/centos-gpg-keys-8.1-1.1911.0.8.el8.noarch.rpm \
    http://mirror.centos.org/centos/8/BaseOS/x86_64/os/Packages/centos-release-8.1-1.1911.0.8.el8.x86_64.rpm

8) upgrade epel repository และ repository อื่นๆ ให้เป็น package ของ centos 8

dnf -y upgrade https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

** ถ้ามีใช้งาน repository ภายนอก เช่น remi ก็ไล่ upgrade release package ของแต่ละ repository ให้หมด
9) ลบ kernel เก่าของ centos 7 ออก

rpm -e `rpm -q kernel`

10) ลบ conflict package ระหว่าง centos 7 กับ 8 (อาจมีอีก ถ้า error ตอน upgrade ในขั้นถัดไปก็มาไล่ลบ)

rpm -e --nodeps sysvinit-tools

11) upgrade เป็น centos 8

dnf -y --releasever=8 --allowerasing --setopt=deltarpm=false distro-sync

12) ติดตั้ง kernel ใหม่

dnf -y install kernel-core

13) ติดตั้ง package ใน group minimal ของ centos 8 เพิ่มให้ครบ

dnf -y groupupdate "Core" "Minimal Install"

14) สำคัญมาก ตรวจสอบให้แน่ใจว่า SELINUX ปิดไปแล้ว (ในไฟล์ /etc/selinux/config)

เสร็จแล้วก็ reboot แล้วก็สวดภาวนาได้เลยครับ