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. Mời các bạn cùng tham khảo chi tiết nội dung bài viết!
Nội dung trích xuất từ tài liệu:
Chuyển đổi định dạng video sang MP4 sử dụng laravel
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 chuyên 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 quá 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ã hoá, 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 https://www.ffmpeg.org/download.html#build-windows 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
https://github.com/pascalbaljetmedia/laravel-ffmpeg
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
...