Bài 6: Đa phương tiện (Phần 1)

0
141

Nội dụng:

1. Cấu hình thiết bị âm thanh

2.  Tăng tốc độ phát video

Đa phương tiện là một thử thách lớn với Banana Pi vì lý do phần cứng. Bài viết này sẽ giới thiệu cách giải quyết vấn đề tăng tốc phần cứng để nâng cao hiệu quả trong Banana Pi thông qua thư viện Video Decode and Presentation API for Unix (VDPAU). Bằng việc sử dụng các thành phần như trong các bài viết trước, bài viết này sẽ giới thiệu cách cấu hình trình phát video MPlayer và VLC.

1. Cấu hình thiết bị âm thanh

Có hai cách thông thường để xuất ra âm thanh trên Banana Pi: xuất tín hiệu âm thanh số qua HDMI hoặc tín hiệu tương tự qua dây nối.

Chuẩn bị:

Cần có các thành phần sau để xử lý âm thanh trên Banana Pi:

– Banana Pi đã cài hệ điều hành Linux

– Chương trình giao diện cửa sổ dòng lệnh

– Kết nối HDMI với TV, máy thu âm thanh/video

– Tai nghe sử dụng giắc cắm 3,5 mm

Phương thức hoạt động

Bài viết sẽ đề cập đến cả 2 cách: HDMI và đầu ra âm thanh tương tự.

Trong cả hai trường hợp, đều phải xác định đầu ra âm thanh thông qua file cấu hình hệ thống  / etc / asound.conf  (còn được gọi là asoundrc).

1.1. Cấu hình truyền qua  HDMI

Các bước sau đây giải thích cách sử dụng HDMI để truyền tín hiệu âm thanh:

1. Mở shell.

2. Sử dụng trình soạn thảo nano, chỉnh sửa hoặc tạo file cấu hình hệ thống được gọi là /etc/asound.conf:

$ sudo nano /etc/asound.conf

3. Nhập cấu hình sau đây thành file:

pcm.!default {
type hw
card 1
device 0
}
ctl.!default {
type hw
card 1
}

Ảnh dưới đây cho thấy trình soạn thảo nano với tệp cấu hình /etc/asound.conf cho phép truyền qua HDMI:

4. Thoát và lưu trình soạn thảo nano bằng cách nhấn Ctrl + X, tiếp theo là YEnter.

5. Khởi động lại Banana Pi để áp dụng các thay đổi:

$ sudo shutdown -r now

Chức năng truyền qua HDMI đã được bật. Nếu phát một file âm thanh hoặc video, tín hiệu âm thanh dạng số sẽ được chuyển trực tiếp đến thiết bị HDMI nhận đang kết nối với Banana Pi.

1.2. Cấu hình âm thanh tương tự

Các bước sau giải thích cách cho phép đầu ra tín hiệu âm thanh qua đường truyền dạng tương tự:

1. Mở shell.

2. Với một trình soạn thảo chẳng hạn như nano, hãy chỉnh sửa hoặc tạo file cấu hình hệ thống được gọi là /etc/asound.conf:

$ sudo nano /etc/asound.conf

3. Nhập cấu hình sau đây thành file:

pcm.!default {
type hw
card 0
device 0
}
ctl.!default {
type hw
card 0
}

4. Thoát và lưu nano bằng cách nhấn Ctrl + X, tiếp theo là YEnter.

5. Khởi động lại Banana Pi để áp dụng các thay đổi:

$ sudo shutdown -r now

Đầu ra âm thanh analog lúc này đã được kích hoạt. Nếu phát một file âm thanh hoặc video, tín hiệu âm thanh sẽ được chuyển đến tai nghe đang kết nối với Banana Pi.

1.3. Kiểm tra đầu ra âm thanh

Để kiểm tra đầu ra âm thanh, cần cài đặt một trình phát âm thanh đơn giản, tải xuống và phát một file âm thanh mã nguồn mở:

1. Trong shell đã mở, cài đặt ứng dụng Sound eXchange (SoX) và bộ giải mã MP3 cho SoX:

$ sudo apt-get install sox libsox-fmt-mp3

2. Cung cấp hoặc tải xuống một file nhạc thử nghiệm, chẳng hạn như file MP3 mã nguồn mở sau (Bring Me Home của Robert Kunin):

$ wget https://archive.org/download/RobertKuninBringMeHomeJustTheBlues/RobertKunin-BringMeHome.mp3

3. Phát file âm thanh sử dụng lệnh play từ SoX:

$ play RobertKunin-BringMeHome.mp3

4. Bạn sẽ nghe thấy bài hát đang phát.

5. Hủy bỏ lệnh play bằng cách nhấn Ctrl + C.

Phương thức hoạt động:

Hệ thống Linux sử dụng hệ thống Advanced Linux Sound Architecture (ALSA) để thực hiện các tác vụ liên quan đến âm thanh. ALSA là thành phần cơ bản của hệ thống âm thanh của máy tính Linux cho phép sử dụng âm thanh trong card âm thanh.

Tệp cấu hình mặc định của hệ thống ALSA là /etc/asound.conf (gọi là file asoundrc). Đây là nơi xác định card âm thanh mặc định trên toàn hệ thống đang sử dụng.

Có hai card âm thanh trên bo Banana Pi: card âm thanh tương tự (số: 0, tên: sunxicodec hoặc sunxi-CODEC) và card truyền qua HDMI (số: 1, tên:sunxisndhdmi hoặc sunxi-sndhdmi).

Nếu không có cấu hình asoundrc, ALSA luôn sử dụng card đầu tiên và thiết bị đầu tiên của nó (đó là đầu ra âm thanh tương tự) cho mỗi plugin mặc định. Có thể sửa đổi chế độ mặc định bằng cách tạo file asoundrc (/etc/asound.conf) trên toàn hệ thống và thay thế plugin mặc định bằng cách khai báo phần ! Default cho PCM và thiết bị điều khiển. PCM là giao diện âm thanh kỹ thuật số tạo ra hoặc truyền tín hiệu âm thanh. Thiết bị điều khiển (CTL) được sử dụng để giúp người dùng kiểm soát một số hoạt động của soundcard.

Ngoài ra:

Nếu đang sử dụng card âm thanh analog (sunxi-CODEC), có thể điều khiển âm lượng thông qua AlsaMixer trên shell:

$ alsamixer

Như bạn có thể thấy trong hình sau, giao diện người dùng shell được trình bày có thể điều chỉnh mức âm lượng của tín hiệu đầu ra (Master) và tín hiệu đầu vào (Line In):

Tăng âm lượng bằng cách nhấn phím mũi tên lên và giảm âm lượng bằng cách nhấn phím mũi tên xuống. Để điều hướng qua các điều khiển bộ trộn, sử dụng các phím mũi tên trái/phải. Có thể chuyển đổi chế độ tắt tiếng của nhiều bộ trộn khác nhau bằng phím M. Nhấn F6 để chuyển đổi giữa hai card âm thanh. Tuy nhiên đường truyền HDMI không có điều khiển bộ trộn, do đó điều khiển âm lượng trực tiếp trên thiết bị nhận. Thoát AlsaMixer bằng cách nhấn Esc.

Nếu bạn muốn kiểm soát mức âm lượng ALSA trên máy tính để bàn, thì nên sử dụng bộ trộn Xfce. Cài đặt qua Apt bằng cách gõ:

$ sudo apt-get install xfce4-mixer

Khởi động bộ trộn GUI bằng cách nhấp vào biểu tượng LXDE và sau đó điều hướng đến Sound & Video | Mixer hoặc bằng cách thực hiện lệnh xfce4-mixer.

Chọn các điều khiển mixer mong muốn bằng cách nhấp vào Select Controls và chọn các điều khiển.

Ảnh sau đây cho thấy bộ trộn Xfce với một số điều khiển bộ trộn được kích hoạt cho card âm thanh analog:

Như được mô tả trong phần Phương thức hoạt động, ALSA là một hệ thống âm thanh cấp thấp nhưng mạnh mẽ dành cho Linux. Tuy nhiên, nếu muốn kiểm soát nhiều hơn hoặc thậm chí định tuyến tín hiệu âm thanh qua mạng, có thể sử dụng máy chủ âm thanh PulseAudio ngoài hệ thống ALSA của mình. Bằng cách sử dụng PulseAudio, bạn có thể kiểm soát mức âm lượng của tín hiệu HDMI, điều mà không thể thực hiện khi chỉ sử dụng ALSA. Tuy nhiên, bạn nên PulseAudio có thể làm hệ thống hoạt động nhiều hơn.

 Tham khảo thêm:

– Cách cấu hình asoundrc ALSA trên wiki tại http://www.alsa-project.org/main/index.php/Asoundrc
– Thư viện download media miễn phí tại https://archive.org
– Giới thiệu về PulseAudio trên Debian wiki tại https://wiki.debian.org/PulseAudio  

2. Tăng tốc độ phát Video

Người dùng mong muốn phát video trên Banana Pi ở độ phân giải 1080p. Đây là một nhiệm vụ khá phức tạp, vì có những vấn đề chưa được giải quyết với phần mềm và trình điều khiển trên hệ điều hành Linux. Tuy nhiên, có thể tăng tốc phát video nếu biết một số quy tắc cần thiết.

Để tăng tốc phát video, cần thực hiện các tác vụ sau:

1. Build trình điều khiển video Xorg tăng tốc và cấu hình máy chủ Xorg.

2. Build các thư viện khác nhau.

3. Cài đặt và cấu hình trình phát video.

Sau đây từng bước thực hiện các nhiệm vụ. Lưu ý: Đây là những nhiệm vụ phức tạp bởi phụ thuộc nhiều vào các cấu hình kèm theo. Nó chỉ hoạt động trong hệ điều hành Raspbian với Banana Pi và Banana Pro. Tuy nhiên, với những hệ điều hành khác các bước yêu cầu có thể khác nhau.

Chuẩn bị:

– Banana Pi hoạt động hệ điều hành Linux;

– Chương trình cửa sổ giao diện dòng lệnh;

– Kết nối HDMI tới TV;

– Chuột hoặc bàn phím kết nối tới Banana Pi

Cách thức làm việc:

Vì build một số thư viện và driver fbturbo Xorg từ đầu, cần mã nguồn và một số gói bổ sung ở ban đầu. Thực hiện như sau:

1. Mở shell.

2. Tạo một thư mục muốn đặt tất cả các thành phần và thay đổi đường dẫn:

$ mkdir ~ / video_acceleration
$ cd ~ / video_acceleration

3. Tải xuống tất cả các mã nguồn được yêu cầu: thư viện libdri2, libump, the sunxi-mali, driver fbturbolibvdpau-sunxi, thư viện tăng tốc video:

$ git clone https://github.com/robclark/libdri2.git
$ git clone https://github.com/linux-sunxi/libump.git
$ git clone https://github.com/linux-sunxi/sunxi-mali.git
$ git clone https://github.com/ssvb/xf86-video-fbturbo.git
$ git clone https://github.com/linux-sunxi/libvdpau-sunxi.git

4. Nâng cấp hệ thống qua Apt để các package mới nhất đã được cài đặt:

$ sudo apt-get update
$ sudo apt-get upgrade

5. Nhập Y để tiếp tục nâng cấp hệ thống. Điều này sẽ mất một thời gian.

6. Ngoài ra, cần cài đặt các packages sau, vì chúng được yêu cầu cho quá trình build:

$ sudo apt-get install libvdpau-dev xorg-dev \
 dh-autoreconf xutils-dev libdrm-dev \
 libegl1-mesa-dev libgles2-mesa-dev

7. Nhập Y để tiếp tục cài đặt các yếu tố phụ thuộc.

8. Sau một vài phút, phần bổ sung cần thiết sẽ được tải xuống và cài đặt.

Build và kích hoạt các thành phần tăng tốc phần cứng

Tùy thuộc vào cấu hình hệ thống hiện tại, quá trình build và kích hoạt của tất cả các thành phần có thể mất một khoảng thời gian. Để làm như vậy, thực hiện các bước sau: 1. Build và cài đặt thư viện libdri2:

$ cd ~/video_acceleration/libdri2
$ ./autogen.sh --prefix=/usr
$ sudo make install

2. Build và cài đặt thư viện libump:

$ cd ~/video_acceleration/libump
$ autoreconf -vi
$ ./configure --prefix=/usr
$ make
$ sudo make install

3. Build và cài đặt các thư viện sunxi-mali:

$ cd ~/video_acceleration/sunxi-mali
$ git submodule init
$ git submodule update
$ sudo mkdir /usr/lib/mali
$ make config ABI=armhf VERSION=r3p0
$ sudo make -C include install
$ sudo make -C lib/mali prefix=/usr/ libdir='/usr/lib/mali/'
install

4. Tạo một file gốc /etc/ld.so.conf.d/1-mali.conf  để thông báo với hệ thống sử dụng thư viện Mali đã build

$ sudo -s
# echo "/usr/lib/mali" > /etc/ld.so.conf.d/1-mali.conf
# ldconfig
# exit

5. Build và cài đặt driver fbturbo Xorg:

$ cd ~/video_acceleration/xf86-video-fbturbo
$ autoreconf -vi
$ ./configure --prefix=/usr
$ make
$ sudo make install

6. Thông báo với hệ thống để sử dụng driver mới build fbturbo Xorg, tạo một file cấu hình Xorg:

$ sudo nano /etc/X11/xorg.conf

7. Mở trình soạn thảo nano. Nhập vào cấu hình Xorg như dưới đây, sau đó có thể tìm Website Packt Publishing để copy và dán vào dễ dàng:

Section "Screen"
Identifier "My Screen"
Device "Allwinner A10/A13 FBDEV"
Monitor "My Monitor"
EndSection
Section "Device"
Identifier "Allwinner A10/A13 FBDEV"
Driver "fbturbo"
Option "fbdev" "/dev/fb0"
Option "SwapbuffersWait" "true"
Option "AccelMethod" "G2D"
EndSection
Section "Monitor"
Identifier "My Monitor"
Option "DPMS" "false"
EndSection

Hình dưới đây thể hiện trình soạn thảo nano với cấu hình Xorg được yêu cầu:

8. Thoát và lưu bản soạn thảo bằng cách ấn Ctrl+X, sau đó YEnter

9. Để hệ thống con Mali hoạt động, cần hướng dẫn hệ thống gán quyền chính xác cho phép một số thiết bị bổ sung khi khởi động. Để làm như vậy, hãy tạo quy tắc udev:

$ sudo nano /etc/udev/rules.d/50-mali.rules

10. Nhập các quy tắc udev sau đây, bạn cũng sẽ tìm thấy các quy tắc này trên trang web Packt Publishing, vào trình soạn thảo đã mở:

KERNEL == "mali", MODE = "0660", GROUP = "video"
KERNEL == "ump", MODE = "0660", GROUP = "video"
KERNEL == "disp", MODE = "0660", GROUP = "video"
KERNEL == "g2d", MODE = "0660", GROUP = "video"
KERNEL == "fb *", MODE = "0660", GROUP = "video"
KERNEL == "cedar_dev", MODE = "0660", GROUP = "video"

Hình dưới đây hiển thị trình soạn thảo nano với các quy tắc udev đã nhập:

11. Thoát và lưu nano bằng cách nhấn Ctrl + X, tiếp theo là YEnter.

12. Build và cài đặt thư viện libvdpau:

$ cd ~ / video_acceleration / libvdpau-sunxi
$ make
$ sudo make install

13. Chúng ta phải tạo một biến môi trường liên tục để cho hệ thống biết có driver VDPAU. Để làm như vậy, hãy thêm dòng export VDPAU_DRIVER=sunxi trong file cấu hình / etc / profile với đặc quyền root:

$ sudo -s
# echo "export VDPAU_DRIVER = sunxi" >> / etc / profile
# exit

14. Khởi động lại Banana Pi để áp dụng tất cả các sửa đổi trước đó:

$ sudo shutdown -r now

15. Sau khi khởi động lại Banana Pi, bạn có thể kiểm tra xem biến môi trường có được đặt chính xác hay không. Mở một trình soạn thảo khác và nhập như sau:

$ echo $ VDPAU_DRIVER

16. Shell đáp ứng với sunxi.

17. Là một bước tùy chọn, bây giờ có thể kiểm tra khả năng tăng tốc phần cứng bằng cách biên dịch và chạy một ứng dụng thử nghiệm do Sunxi Mali cung cấp. Với máy tính để bàn, tiếp tục với các bước sau.

18. Chuyển sang thư mục thử nghiệm của thư mục mã nguồn Mali:

$ cd ~ / video_acceleration / sunxi-mali / test

19. Biên dịch ứng dụng thử nghiệm:

$ cc -Wall -o test test.c -lEGL -lGLESv2 -lX11

20. Chạy ứng dụng thử nghiệm trong một terminal trên máy tính để bàn:

$ ./test

Hình dưới đây hiển thị kết quả thử nghiệm tăng tốc phần cứng Sunxi Mali thành công:

Driver VDPAU được cài đặt thành công.

Cài đặt và cấu hình MPlayer

MPlayer là một trình phát phim đa năng chạy trên nhiều hệ thống. Mplayer hỗ trợ tất cả các loại file âm thanh và video. Sau đây cài đặt MPlayer và giao diện người dùng GUI SMPlayer:

1. Trong một shell, hãy cài đặt các gói mplayer2smplayer:

$ sudo apt-get install mplayer2 smplayerChương 6

Lưu ý: Để cải thiện giao diện SMPlayer, cũng có thể cài đặt gói tùy chọn: smplayer-themes.

2. Nhập Y để tiếp tục cài đặt các gói phụ thuộc.

3. Tải xuống bộ phim mã nguồn mở Sintel để kiểm tra khả năng phát lại video tăng tốc phần cứng:

$ wget http://ftp.nluug.nl/pub/graphics/blender/demo / phim / Sintel.2010.1080p.mkv

Quá trình tải xuống sẽ mất một thời gian vì kích thước file khoảng 1,1 GB.

4. Khi quá trình tải xuống hoàn tất, hãy chuyển sang máy tính để bàn và mở ứng dụng LXTerminal

5. Khởi động MPlayer với các thông số chính xác của đầu ra video VDPAU và codec video VDPAU:

$ mplayer -vo vdpau -vc ffmpeg12vdpau, ffh264vdpau,
 Sintel.2010.1080p.mkv

Hình sau đây cho thấy MPlayer được tăng tốc phần cứng đang phát Phim Sintel:

6. Dòng sau được xuất ra bởi MPlayer trên terminal cho biết video được tăng tốc phần cứng: Codec video đã chọn: Selected video codec: [ffh264vdpau] vfm: ffmpeg (FFmpeg H.264 (VDPAU)).

7. Sau khi kiểm tra tăng tốc phần cứng thành công, thoát khỏi Mplayer bằng cách nhấn phím Q.

8. Để duy trì việc sử dụng VDPAU theo mặc định, chúng tôi thêm file cấu hình ~ / .mplayer / :

$ nano ~ / .mplayer / config

9. Trình soạn thảo nano mở ra; thêm các dòng sau:

vo = vdpau
vc = ffmpeg12vdpau, ffh264vdpau,
fullscreen = yes
quiet = yes
ao = alsa

Nếu bạn đang sử dụng một hệ thống âm thanh khác như PulseAudio,  thay ao = alsa bằng ao = pulse hoặc tên thích hợp. Xem audio output drivers trong trang hướng dẫn sử dụng mplayer ($ man mplayer).

Hình sau đây cho thấy cấu hình MPlayer trong trình soạn thảo nano:

10. Thoát và lưu nano bằng cách nhấn Ctrl + X, tiếp theo là YEnter.

Sau đó, bạn có thể phát video trên MPlayer mà không cần sử dụng tham số -vc-vo.

11. Bây giờ, chúng ta sẽ thiết lập SMPlayer làm giao diện người dùng GUI cho MPlayer. Chạy SMPlayer đã cài đặt trước đó bằng cách nhấp vào biểu tượng LXDE và sau đó chuyển sang Sound & Video | SMPlayer. Hoặc, chỉ cần bắt đầu bằng cách thực thi smplayer trên terminal.

12. Khi SMPlayer mở ra, hãy nhấp vào Options | Preferences trong menu (hoặc nhấn Ctrl + P).

13. Xác nhận trường văn bản MPlayer executablemplayer.

14. Thay đổi sang tab Video và kiểm tra xem vdpau đã được chọn làm driver đầu ra chưa.

15. Trong tab Audio, chọn alsa làm driver âm thanh. Tùy thuộc vào mong muốn

hệ thống âm thanh, bạn có thể chọn driver âm thanh khác.

16. Lưu các thay đổi bằng cách nhấp vào OK.

17. Nhấp vào Open | File (hoặc nhấn Ctrl + F), sẽ hiển thị hộp thoại chọn nhanh và mở phim thử.

18. Video sẽ bắt đầu ngay lập tức trong SMPlayer.

Cài đặt và cấu hình trình phát đa phương tiện VLC

Nếu thích trình phát đa phương tiện VLC, bạn cũng có thể cài đặt nó.

Tuy nhiên, gói VLC do Apt cung cấp không hoàn toàn tương thích với VDPAU vừa thiết lập. Do đó, buộc phải cài đặt VLC từ nguồn. Để cài đặt VLC phiên bản 2.2, yêu cầu một số gói hiện tại không được cung cấp bởi hệ điều hành Debian 7 (Wheezy, được sử dụng bởi Raspbian). Vì vậy, phải tiếp thu một số gói từ hệ điều hành Debian 8 (Jessie) mới nhất.

Lưu ý: Việc bổ sung hệ điều hành Debian phiên bản khác có thể gây rủi ro.

Bạn có thể phá vỡ sự phụ thuộc của phiên bản vào thiết lập hiện tại của mìnhmột cách dễ dàng. Cần làm theo các bước tiếp theo một cách cẩn thận. Hơn nữa, cần có dung lượng trống để cài đặt trình phát đa phương tiện VLC. Bạn nên sử dụng thẻ nhớ từ 16 GB trở lên hoặc để tạo mã nguồn bên ngoài Ổ cứng HDD / SSD.

1. Trong shell đã mở, hãy cài đặt các gói sau:

$ sudo apt-get install gcc-4.8 lua5.2 liblua5.2-dev \
libmad0-dev liba52-0.7.4-dev libxcb-shm0-dev \
libxcb-composite0-dev libxcb-xv0-dev libqt4-dev \
libxcb-randr0-dev libasound2-dev libgcrypt11-dev

2. Nhập Y để tiếp tục cài đặt các ràng buộc.

3. Chỉnh sửa file /etc/apt/sources.list  để thêm jessie:

$ sudo nano /etc/apt/sources.list

4. Thêm dòng sau vào nguồn kho lưu trữ hiện có:

deb http://mirrordirector.raspbian.org/raspbian/ jessie main contrib non-free

Hình sau đây chỉ ra các file sources.list đã mở trên trình chỉnh soạn thảo nano với kho lưu trữ wheezy mặc định và kho lưu trữ jessie được bổ sung:

5. Thoát và lưu nano bằng cách nhấn Ctrl + X, tiếp theo là YEnter.

6. Đồng thời tạo file / etc / apt / preferences để xác định mức độ ưu tiên của cả hai kho lưu trữ cạnh tranh:

$ sudo nano / etc / apt / preferences

7. Thêm cấu hình sau để ưu tiên kho lưu trữ hiện tại wheezy hơn kho jessie mới:

Package: *
Pin: release n=wheezy
Pin-Priority: 900
Package: *
Pin: release n=jessie
Pin-Priority: 100 

Hình sau đây chỉ ra toàn bộ cấu hình tùy chọn Apt trong trình soạn thảo nano:

8. Thoát và lưu nano bằng cách nhấn Ctrl + X, tiếp theo là Y và Enter.

9. Với kho lưu trữ mới được thêm vào, bây giờ sẽ cài đặt các gói phụ thuộc bắt buộc từ kho lưu trữ jessie sau khi cập nhật bộ đệm Apt:

$ sudo apt-get update
$ sudo apt-get -t jessie cài đặt libavformat-dev \
libswscale-dev libvdpau-dev

10. Nhập Y để tiếp tục cài đặt các phụ thuộc.

11. Trong khi Apt đang cài đặt các gói phụ thuộc, sẽ được hỏi có muốn khởi động lại dịch vụ hay không. Xác nhận việc khởi động lại bằng cách nhập Yes.

12. Sau khi hoàn thành việc xác định các gói mới, hãy tải xuống mã nguồn của VLC từ kho lưu trữ Git:

$ git clone git: //git.videolan.org/vlc/vlc-2.2.git

13. Thay đổi vị trí hiện tại thành thư mục mã nguồn đã tải xuống:

$ cd vlc-2.2

14. Khởi động tập lệnh shell bootstrap để chuẩn bị cho quá trình build sắp tới:

$ ./bootstrap

15. Xuất biến môi trường trình biên dịch C và trình biên dịch Lua, và bắt đầu

tập lệnh cấu hình với các đối số sau:

$ export CC = gcc-4.8
$ export LUAC = / usr / bin / luac5,2
$ ./configure --prefix = / usr --sysconfdir = / etc

16. Bắt đầu quá trình build và cài đặt:

$ make
$ sudo make install

17. Việc cài đặt VLC media player sẽ mất một khoảng thời gian. Quá trình kết thúc, khởi động VLC cuối cùng.

18. Nếu cần, hãy chuyển sang máy tính để bàn Banana Pi và khởi động VLC bằng cách thực thi lệnh vlc trong một terminal trên màn hình:

$ vlc

19. Khi VLC khởi động, điều hướng đến các tùy chọn bằng cách chọn Tools | Preferences từ menu chính hoặc nhấn Ctrl + P.

Hộp thoại Preferences sẽ mở ra.

20. Đảm bảo rằng hộp radio Simple được chọn ở góc dưới cùng bên phải.

21. Điều hướng đến Input & Codecs thông qua các tùy chọn phía trên và chọn VDPAU video decoder cho Hardware-accelerated decoding.

22. Lưu cài đặt bằng cách nhấp vào Save.

Bạn đã cài đặt trình phát đa phương tiện VLC bao gồm tăng tốc phần cứng VDPAU trên Banana Pi thành công.

Cách thức làm việc

Trong bài viết này đã build các thư viện và driver khác nhau trực tiếp từ mã nguồn và cấu hình trình phát đa phương tiện. Trên thực tế, GPU Mali của Banana Pi được thiết kế ban đầu cho các thiết bị di động. Driver có sẵn cho chỉ dành cho hệ thống Android. Do đó, GPU Mali không được hỗ trợ 100% trên các máy tính đơn bo chạy Linux — như Banana Pi.

Tuy nhiên, chúng ta đã quản lý để hoạt động tăng tốc phần cứng và phát file video 1080p bằng cách sử dụng thư viện VDPAU.

Khi cài đặt các thư viện Mali, đã tạo một file /etc/ld.so.conf.d/1-mali.conf với nội dung / usr / lib / mali. File cấu hình /etc/ld.so.conf.d được sử dụng để cung cấp cho hệ thống một giải pháp thay thế có thể đặt các thư viện. Trong trường hợp này, cài đặt các thư viện Mali đã biên dịch vào thư mục tùy chọn / usr / lib / mali vì hệ điều hành Raspbian cung cấp các thư viện có cùng tên (ví dụ: libEGL.so) không nên xóa. Vì file cấu hình đặt tên 1-mali.conf, nên có ưu tiên cao nhất theo thứ tự bảng chữ cái. Hệ thống sẽ sử dụng libEGL.so, libGLESv2.so và khi chương trình cần truy cập vào các thư viện này thay vì các thư viện được vận chuyển trước / usr / lib / arm-linux-gnueabihf /.

Trong bài viết còn build driver Xorg fbturbo. Máy chủ Xorg tạo toàn bộ  giao diện người dùng (đó là màn hình và các ứng dụng đồ họa) trên màn hình. Với driver fbturbo, phải cung cấp cấu hình Xorg (/etc/X11/xorg.conf) hướng dẫn máy chủ Xorg để sử dụng driver fbturbo.

Các thư viện và driver truy cập các thành phần phần cứng thiết yếu của Banana Pi, chẳng hạn như bộ đệm khung. Các thành phần phần cứng này có thể truy cập được bằng file thiết bị / dev / fb0. Để cho phép người dùng truy cập các thành phần phần cứng,  phải chỉ định quyền đọc và quyền ghi cho các thiết bị này.

Tự động gán các quyền này khi khởi động bằng hệ thống udev bằng cách tạo một quy tắc udev (/etc/udev/rules.d/50-mali.rules). Quản lý thiết bị Udev chịu trách nhiệm cho các tác vụ khác nhau liên quan đến phần cứng trên hệ thống Linux. Bằng cách cung cấp quy tắc Mali, hệ thống udev có thể tự động gán quyền. Quy tắc udev yêu cầu udev gán quyền 660 (rwrw —-) cho file thiết bị / dev / ump, / dev / mali, v.v. Quy tắc cũng hướng dẫn udev để thay đổi nhóm của các file thiết bị này thành nhóm video. Người dùng mặc định của Banana Pi (bananapi) là thành viên của nhóm video, có quyền đọc và ghi những file này. Nếu đang sử dụng người dùng khác, hãy đảm bảo người dùng này là thành viên của nhóm video (xem thêm trong Chương 2, Quản trị).

Trong bài viết này đã hướng dẫn build thư viện VDPAU (libvdpau_sunxi). VDPAU là một giao diện được tiêu chuẩn hóa để cho phép các phần mềm như trình phát đa phương tiện truy cập để tăng tốc phần cứng. Điều này được thực hiện thông qua một thư viện triển khai giao diện VDPAU (libvdpau). Để cho hệ thống biết thư viện triển khai VDPAU nào phải được sử dụng, một biến môi trường (VDPAU_DRIVER) phải được đặt. Các biến môi trường là các biến shell có giá trị ở mọi nơi trên hệ thống, không chỉ trong một kịch bản shell duy nhất. Bạn có thể tạo một biến môi trường bằng lệnh export. Để duy trì biến VDPAU_DRIVER với giá trị sunxi (có nghĩa là sử dụng thư viện libvdpau_sunxi), thêm lệnh export vào file / etc / profile. File / Etc / profile được tải vào mỗi lần khởi động hệ thống.

Sau khi tất cả các thư viện và trình điều khiển bắt buộc được tạo, có thể sử dụng MPlayer để phát video với độ phân giải cao bằng cách sử dụng thư viện VDPAU được tăng tốc phần cứng. Để làm như vậy, yêu cầu MPlayer sử dụng đầu ra video VDPAU (-vo vdpau) và codec video tương thích với VDPAU (-vc ffmpeg12vdpau, ffh264vdpau,). Để tránh sử dụng các tham số MPlayer mỗi lần khởi động, duy trì các cài đặt này trong file ~ / .mplayer / config.

Giao diện đồ họa SMPlayer cung cấp một cách thuận tiện để tích hợp MPlayer vào môi trường màn hình. Sử dụng MPlayer làm thành phần chính nhưng build một giao diện đồ họa.

Tuy nhiên, không thể cài đặt VLC media player từ Apt như đã làm với MPlayer. Trình phát đa phương tiện VLC được cung cấp bởi kho lưu trữ Raspbian được biên dịch cho Raspberry Pi, không tương thích 100% với khả năng tăng tốc phần cứng trên Banana Pi. Phiên bản 2.2 của VLC có thể sử dụng khả năng tăng tốc phần cứng thông qua VPDAU. Để build phiên bản 2.2, buộc phải lấy các gói không có trên Wheezy, kho lưu trữ mặc định của Debian 7, được sử dụng bởi Raspbian. Do đó, thêm kho lưu trữ jessie Debian 8 mới hơn vào sources.list của Apt để có thể tải các gói mới hơn. Vì không muốn nâng cấp toàn bộ hệ thống để có thể phá vỡ bất cứ thứ gì bởi Debian jessie, cũng cần giảm mức độ ưu tiên của kho lưu trữ Jessie được thêm vào. Điều này được thực hiện bởi một cơ chế được gọi là Apt Pinning trong file / etc / apt / preferences Sau khi sao chép mã nguồn của VLC 2.2, bắt đầu tập lệnh bootstrap để chuẩn bị kịch bản cấu hình. Cần biên dịch VLC và các thành phần của nó với GCC 4.8 mới hơn trình biên dịch (thay vì phiên bản 4.6 mặc định). Đây là lý do tại sao xác định GCC 4.8 làm trình biên dịch C bằng cách xuất biến môi trường CC. Cuối cùng có thể bắt đầu bộ ba configure, makemake install.

Ngoài ra:

Khi build và cài đặt các ứng dụng bằng lệnh make, không có khả năng quản lý gói như Apt. Không thể cập nhật ứng dụng một cách dễ dàng, cũng như có khả năng quản lý phụ thuộc tự động. Hãy ghi nhớ rằng: Nếu cập nhật máy chủ Xorg, có thể phá vỡ khả năng tương thích với driver fbturbo đã biên dịch. Trong trường hợp này, có thể đăng nhập vào Banana Pi bằng SSH và build lại driver fbturbo.

Để gỡ cài đặt các ứng dụng hoặc thư viện tự tạo, có thể sử dụng lệnh make:

$ sudo make uninstall

Tham khảo thêm:

– Cách tạo driver Mali trên linux-sunxi.org tại

https://linux-sunxi.org/Mali_binary_driver

– Tài liệu về cấu hình Xorg tại

http://www.x.org/archive/X11R7.7/doc/man/man5/xorg.conf.5.xhtml

– Bài viết trên Wikipedia về trình quản lý thiết bị udev tại

https://en.wikipedia.org/wiki/Udev

– Bài viết AptPreferences giải thích cơ chế của Apt-Pinning tại

https://wiki.debian.org/AptPreferences

– Dự án Durian Open Movie tại https://durian.blender.org/about/

Biên soạn: Thùy Phương

Để cập nhật tin tức công nghệ mới nhất và các sản phẩm của công ty AIoT JSC, vui lòng truy cập link: http://aiots.vn hoặc linhkienaiot.com

0 0 Phiếu bầu
Article Rating
Subscribe
Notify of
guest
0 Comments
Phản hồi nội tuyến
Xem tất cả các bình luận