hí xin chào tất cả mọi người nha, lại là mình đây, và với bài viết này thì mình xin chia sẽ cho anh em một vài kiến thức liên quan đến về giao thức HLS và file m3u8 là gì và cách tải video từ các trang web sử dụng giao thức HLS với file m3u8 ???
Trước hết, HLS là viết tắt của chữ HTTP Live Streaming, là một giao thức streaming bitrate được phát triển bởi Apple. Không giống như các kỹ thuật thông thường, HLS sử dụng cách chia tệp tin video ra làm nhiều file nhỏ, các file này thường có đuôi .ts và được stream tuần tự về phía player của người dùng.
Cách tải video từ các trang web sử dụng giao thức HLS với file m3u8 |
HLS là gì ???
Trước hết, HLS là viết tắt của chữ HTTP Live Streaming, là một giao thức streaming bitrate được phát triển bởi Apple. Không giống như các kỹ thuật thông thường, HLS sử dụng cách chia tệp tin video ra làm nhiều file nhỏ, các file này thường có đuôi .ts và được stream tuần tự về phía player của người dùng.
Khi create một video dưới dạng HLS, chúng ta sẽ thu được file .m3u8, file này chính là file chứ index tới các file .ts. Nhờ vào nội dung file này mà player biết được cần tải các file nào về và timing play như thế nào.
Để convert một video sang định dạng HLS chúng ta có thể sử dụng một công cụ rất mạnh, đó là FFmpeg (Tác giả của nó chính là Fabrice Bellard).
okiii bây giờ chúng ta cùng bắt đầu đi tải video thui nhe.
Bước 1: cài đặt công cụ tải.
các bạn hãy tải và cài đặt cài đặt FFmpeg tại đây: Preview
Bước 2: mở phần mền và cài đặt.
- mở trình duyệt Chrome lên & sử dụng tính năng [Developer Tools] > Chọn tab [Network] > Nhập text m3u8 vào input filter như trong hình dưới và truy cập tới video cần tải.
- Sau đó chỉ cần copy lại URL tới file .m3u8 và chạy câu lệnh sau trên terminal
ffmpeg -i https://path_to_m3u8_file -c copy -bsf:a aac_adtstoasc output.mp4
- bây giờ chỉ cần đợi ffmpeg cho file output.mp4 tải về máy là xong nhe.
đối với những video trên youtube thì các bạn có thể dùng công cụ download có sẵn trên coccoc hoặc sử dụng IDM hoặc dùng aiovideodl.ml
Cách download video trên youtube bằng ffmpeg
Bước 1: cài đặt chương trình.
các bạn nhập câu ệnh này trên terminal
$ sudo curl -L https://yt-dl.org/downloads/latest/youtube-dl -o /usr/local/bin/youtube-dl$ sudo chmod a+rx /usr/local/bin/youtube-dl
Bước 2: dùng lệnh tải video
để tải video nào đó trên youtube thì các bạn dùng lệnh sau:
$ youtube-dl https://youtubelink
trong đó Https://youtubelink là link video youtube bạn cần tải
Bước 3: chỉnh sửa download với nhiều định dạng khác nhau.
Để lựa chọn các định dạng sẵn có bạn thêm flag -F vào:
$ youtube-dl -F https://youtubelink[youtube] XXX: Downloading webpage[youtube] XXX: Downloading video info webpage[info] Available formats for XXX:format code extension resolution note249 webm audio only tiny 53k , opus @ 50k (48000Hz), 3.02MiB250 webm audio only tiny 69k , opus @ 70k (48000Hz), 3.77MiB140 m4a audio only tiny 130k , m4a_dash container, mp4a.40.2@128k (44100Hz), 7.89MiB251 webm audio only tiny 133k , opus @160k (48000Hz), 6.94MiB160 mp4 256x144 144p 73k , avc1.4d400c, 30fps, video only, 2.31MiB278 webm 256x144 144p 121k , webm container, vp9, 30fps, video only, 5.69MiB133 mp4 426x240 240p 128k , avc1.4d4015, 30fps, video only, 4.25MiB242 webm 426x240 240p 174k , vp9, 30fps, video only, 5.75MiB134 mp4 640x360 360p 245k , avc1.4d401e, 30fps, video only, 7.42MiB243 webm 640x360 360p 284k , vp9, 30fps, video only, 8.43MiB135 mp4 854x480 480p 351k , avc1.4d401f, 30fps, video only, 10.80MiB244 webm 854x480 480p 394k , vp9, 30fps, video only, 12.10MiB136 mp4 1280x720 720p 472k , avc1.4d401f, 30fps, video only, 15.93MiB247 webm 1280x720 720p 668k , vp9, 30fps, video only, 21.65MiB137 mp4 1920x1080 1080p 1710k , avc1.640028, 30fps, video only, 72.11MiB248 webm 1920x1080 1080p 2080k , vp9, 30fps, video only, 92.92MiB43 webm 640x360 360p , vp8.0, vorbis@128k, 40.76MiB18 mp4 640x360 360p 377k , avc1.42001E, mp4a.40.2@ 96k (44100Hz), 22.98MiB22 mp4 1280x720 720p 390k , avc1.64001F, mp4a.40.2@192k (44100Hz) (best)
Để download định dạng mong muốn:
$ youtube-dl -f 248+251 https://youtubelink
Để có thể download riêng video và audio, sau đó merge lại thành 1 file thì bạn cần cài thêm FFMPEG hoặc Arconv. Cách cài đặt thì mình đã ghi trong đầu bài viết.
Câu lệnh dùng để download chuẩn video+audio và merge lại thành một file như sau:
$ youtube-dl -f 'bestvideo[ext=webm]+bestaudio[ext=webm]' --merge-output-format webm https://youtubelinkhoặc$ youtube-dl -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]' --merge-output-format mp4 https://youtubelink
okiii thì đó là toàn bộ kiến thức giúp chúng tao có thể download các video dưới dạng HLS và file m3u8 các bạn nhé. nếu có thắc mắc gì thì hãy comment cho mình biết nhá. chúc các bạn thành công nhe.