Tải bản đầy đủ (.pdf) (8 trang)

Chuyển đổi định dạng video sang MP4 sử dụng laravel

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.01 MB, 8 trang )

CHUYỂN ĐỔI ĐỊNH DẠNG VIDEO SANG MP4 SỬ DỤNG LARAVEL
Nguyễn Hữu Cầm
Trường Đại học Hà Nội
Tóm tắt: Mp4 là định dạng thường được sử dụng và chấp nhận trên mọi nền tảng, từ các
trình duyệt, mạng xã hội và chạy ổn định trên hệ điều hành khác nhau như Linux, Windows.
Viết ứng dụng nhỏ cho phép chuyển đổi định dạng các video sang mp4 giúp cho người dùng có
thể xem videos trên các thiết bị khác nhau mà không cần phải cài đặt thêm dịch vụ thứ 3 để
xem video là một vấn đề cần thiết.
Từ khoá: Event, FFMpeg, Laragon, Laravel, Libmp3lame, lossy, MVC, Mp4.

A.Giới thiệu
Ngày nay, có rất nhiều định dạng video trên thế giới, từng định dạng video sẽ có
một chương trình chun biệt để xem các video đó. Điều này gây ra sự cản trở lớn cho
người dùng rằng sẽ nên lưu video đó theo định dạng nào phù hợp nhất, do tất cả các
thiết bị hầu như được tạo ra bởi các công ty lớn như Apple, Microsoft hoặc Sony. Tuy
nhiên các sản phẩm họ tạo ra thỉnh thoảng khơng tương thích với những cơng ty còn lại,
một số đọc được định dạng này, số còn lại đọc được định dạng khác. Điều này gây nên
sự hạn chế trong quá trình sử dụng của người dùng, do họ sẽ phải tải phần mềm để đọc
định dạng này và tải phần mềm khác để đọc định dạng khác, gây phiền toái cho người
dùng.
Mp4 là định dạng tập tin kĩ thuật số, được sử dụng phổ biến nhất để lưu trữ và
chia sẻ audio và video, với chât lượng cao thậm chí sau khi bị nén. Mp4 phổ biến hơn
các định dạng khác do định dạng này tương thích với các trình duyệt và các thiết bị khác
nhau. Mp4 có thể được sử dụng trong các thiết bị của Apple và Microsoft, bao gồm máy
tính, tablets, phones, game consoles hoặc TV. Ngoài ra, Mp4 được chấp nhận ở nhiều
trình chơi media, các phần mềm chỉnh sửa video, thậm chí trong q trình giảng dạy,
các thầy cơ giáo có thể nhúng file mp4 vào Powerpoint mà không gặp bất kì trở ngại
nào trong quá trình sử dụng. [24]
FFMpeg là dự án mã nguồn mở miễn phí, được dùng để xử lí audio và video.
FFMpeg có thể mã hố, giải mã, chuyển mã, stream (ví dụ như livestream trên
Facebook), chuyển đổi độ phân giải, nén file, xuất hình ảnh, mute âm thanh, v.v.


FFMpeg hỗ trợ hầu hết các định dạng và chạy trên nhiều nền tảng như Linux hoặc
Windows, mặc cho 2 hệ điều hành này có kiến trúc khác nhau.
B. Cách thức triển khai
1. Môi trường triển khai
 Laravel 6.2: Framework PHP, được thiết kế theo mơ hình nổi tiếng M.V.C
dùng để tạo ra các trang web động

207


 Laragon dùng Nginx server: Cho phép tạo project với beautified Url
2. Cách thức cài đặt và triển khai
Để convert sang định dạng mp4 từ các loại định dạng video khác, cần thư viện tên
là FFMpeg, cài đặt ở đây cho
phiên bản Windows
Sau khi tải xuống FFmpeg, tiến hành giải nén sẽ được 3 thư mục là bin, doc và
presets, chỉ cần quan tâm đến thư mục /bin

Figure 25: Kết quả sau khi giải nén
Tạo Environment variable cho FFmpeg nhằm cho phép FFMpeg chạy trên command
line.

Figure 26: Environment variable cho FFMpeg
Sau đó kiểm tra FFmpeg đã chạy hay chưa

Figure 27: Kết quả sau khi cài FFmpeg

208



3. Chuyển đổi định dạng media trong Laravel
3.1. Cài đặt FFMpeg
Cài FFMpeg cho phép ứng dụng chuyển đổi định dạng chạy trên command line.
Tuy nhiên để có thể chuyển đổi định dạng từ các định dạng khác về Mp4 trong PHP thì
cần cài interface, cho phép FFMpeg và PHP giao tiếp được với nhau, thuận tiện hơn cho
người sử dụng.
Để cho phép Laravel chuyển đổi định dạng sang Mp4 thì cài đặt thư viện này
/>Chạy composer require pbmedia/laravel-ffmpeg để tiến hành cài
đặt trong thư mục Laravel
Sau khi cài đặt thông qua composer, tiến hành publish cấu hình trong Laravel
> php artisan vendor:publish -provider="Pbmedia\LaravelFFMpeg\FFMpegServiceProvider"
Sử dụng câu lệnh trên cho phép lập trình viên tuỳ biến file config thay đường
dẫn trỏ đến file ffmpeg.exe và ffprobe.exe mà đã download ở trên một cách dễ
dàng. Hai file này là 2 file quan trọng cho mục đích chuyển đổi định dạng
3.2. Tiến hành xử lí
Để dễ dàng cho việc chuyển đổi định dạng file, tất cả các file cần để chuyển đổi
và các file sau khi chuyển đổi sẽ được lưu tại thư mục
storage/app/public/media, đây là thư mục cho phép người dùng lưu file cá
nhân lên server

Figure 28: Folder trước khi convert

209


Để đơn giản, giao diện chỉ cần có 1 chỗ cho phép tải file lên và nút submit cho phép file
được tải lên server. Giao diện người dùng để tiến hành upload file và convert

Figure 29: Giao diện để tiến hành convert
Để tạo được giao diện như ở trên, cần 2 routes để xử lí vấn đề này

 Một route đóng vai trị GET: Dùng để hiện thị giao diện
 Một route đóng vai trị POST: Dùng để gửi file lên server và tiến hành chuyển
đổi định dạng file
 Một route đóng vai trị GET: Dùng để xem file đã được chuyển đổi
Bắt đầu với việc thêm thẻ media vào config/filesystem.php, việc thêm thẻ media
vào filesystem như thế này cho phép chúng ta có thể tuỳ biến đường dẫn media trong
trường hợp cần chuyển đổi, chỉ cần thay đổi đường dẫn ở một vị trí duy nhất

Figure 30: Cấu hình media filesystem

210


3.3. Luồng chảy chương trình

Figure 31: Activity diagram cho việc chuyển đổi video

Tạo routes cho các trường hợp ở trên

Figure 32: Route cho GET và POST

Sau đó là view cho người dùng chọn file và upload và xem danh sách file đã được
upload từ trước. Chú ý để upload file cần có attribute
enctype=”multipart/form-data”

Figure 33: Form cho người dùng upload và xem danh sách file đã upload và convert

Logic upload cho controller như sau: Sau khi người dùng chọn file và tiến hành upload,
file đó sẽ được lưu trên server tại disk “media” đã được tạo ở trên. Tiếp theo, hệ thống


211


sẽ gọi event nhằm tiến hành chuyển đổi file cùng với thời gian upload của file. Cuổi
cùng, sẽ lưu lịch sử upload cùng với thời gian upload để xem danh sách các file đã
upload.

Figure 34: Logic upload cho controller

Figure 35: Event

Để upload và convert thành công, cần chọn codec là lipmp3lame, sau đó gọi facade
FFMpeg, mở file media vừa lưu trên server, chuyển sang định dạng mp4 và xoá file gốc
sau khi đã convert xong nhằm tiết kiệm dung lượng lưu trữ cho server.

Figure 36: Logic convert sang mp4

212


Cuối cùng sẽ tiến hành kiểm tra lắng nghe sự kiện, sử dụng cơ chế event-listener.

Figure 37: Map Event listener

Sau khi upload thành cơng thì nhận được giao diện như sau

Logic khi xem file: Khi người dùng ấn vào nút “View” phía trên, tên file được chuyển
đổi được gọi do có $id đi kèm, cuối cùng sẽ đẩy tên file qua view nhằm mục đích xem
ngay trên trình duyệt


Figure 38: Lấy tên file được convert

Sử dụng tag <video> để xem file được chuyển đổi ngay trên trình duyệt

Figure 39: View để xem file đã convert, sử dụng <video> tag

213


Figure 40: Kết quả

4. Kết luận và hướng phát triển trong tương lai
Bài viết này đã trình bày cách thức chuyển đổi định dạng file từ các định dạng
sang file mp4 sử dụng Laravel mà không cần sử dụng trang web ngoài để chuyển đổi.
Trong tương lai sẽ cải thiện bằng cách chuyển môi trường phát triển sang Docker Linux,
hỗ trợ nhiều người dùng tải file (xử lí thơng qua hàng đợi – queue và jobs), cải thiện
giao diện người dùng, cho phép tuỳ chỉnh độ phân giải video khi xuất, .v.v

REFERENCES
[1] Techsmith, "Video File Formats, Codecs, and Containers Explained," [Online].
Available: />
214



×