Tìm hiểu về hls stream link dạng blob:http... và file m3u8

Tình hình là khi mình view khung player trên trang này:
fptplay.vn/xem-video/nam-thang-voi-va-phien-ban-thai-karn-krung-neung-ruk-khong-rao-5cfa205f2089bd0a815ec178.html
thì mình chỉ thấy một link dạng blob:http… và ko thể xem link này được, và mình chuyển sang tab network thì thấy họ gởi một ajax request lên server và nhận về một file dạng
.m3u8, link này mình gắn vào vlcplay thì phát được, và cái player trên web cũng phát được link này!

  • Mình đã google rất nhiều nơi nhưng vẫn ko thấy tài liệu nào chia sẽ hay hướng dẫn cách học hoặc để mình tự nghiên cứu cách làm trên. Bạn nào biết cách tìm hiểu, search để tìm tài liệu như thế nào? hay lộ trình học về streaming video như trên xin chỉ mình với ạ. Mình xin chân thành cảm ơn và hậu tạ!
  • Xin cho mình hỏi thêm là dạng streaming video này có làm tốn băng thông của server hay ko? Và file video của mình sẽ được để ở đâu nhỉ?
    Thân!
1 Like

Từ khóa hls streaming

4 Likes

Cám ơn bạn nhiều nhé!
Mình đã thử search với các từ khóa liên quan như của bạn rất nhiều, mà chỉ ra toàn những giới thiệu, mô tả và demo thôi. Không có một tài liệu nào chính thống hướng dẫn triển khai để streaming một file video như thế nào hết? :frowning:

https://www.google.com/search?q=hls streaming trien khai
Chính thống? https://trac.ffmpeg.org/wiki/StreamingGuide

2 Likes

Tình hình là mình viewsource trang Fptplay này:

Và xem ở khung player thì không hề thấy một link nào trỏ đến file video gốc cả, mình mò sang tab network thì thấy họ gởi một ajax request lên server và nhận về một link trỏ đến file .m3u8

http://vod01-cdn.fptplay.net/ovod/_definst_/mp4/encoded/20190607/ntvv_01/6ffe20cd4f270e950a8e1015cd70122b_1080p.mp4/playlist.m3u8?token=eyJoYXNoX3ZhbHVlIjogImNmYzAxNGFmNTkxMDkxOWQ3NWI5M2ZhMDIyNWQwOTk2IiwgInZpZGVvX2lkIjogIjVjZmEyMDVmMjA4OWJkMGE4MTVlYzE3OCIsICJzZXJ2ZXJfdGltZSI6IDE1NjUwNTg4MDgsICJ2YWxpZF9taW51dGVzIjogNzIwfQ

và file này phát được trên jwplayer. Mình có google ở rất nhiều nơi nhưng ko thấy ai chia sẽ về cách học và làm về vấn đề này cả.
Mình muốn tìm hiểu về cách stream một file video theo kiểu này và xuất cho ra link dạng blob như trên, bạn nào biết cách làm trên,… có tài liệu hay cách search tìm hiểu như thế nào xin chỉ mình với ạ, mình xin chân thành cảm ơn :slight_smile: và hậu tạ ạ!

Thân!

Bạn cho mình hỏi thêm chút là, nếu stream như vậy thì các file video phim thì họ sẽ để ở đâu bạn nhỉ? Chắc chắn là ko phải ở trên host của mình rồi hả bạn ?

Muốn tốc độ nhanh thì sài CDN còn ko thì cứ để ở máy chủ thôi.

3 Likes

Theo mình biết

  1. Blob là đối tượng nhị phân của JS, trường hợp này player đấy dùng JS cho nên proxy là blob:http
  2. Thư viện phổ biến nhất để phát hls là hls.js (tìm trên github)
  3. Phát stream hls thông thường sẽ tốn băng thông của server, gần đây được tích hợp kỹ thuật webtorrent giúp giảm tải khá nhiều cho server (ví dụ: animehay[dot]tv), tìm dự án webtorrent trên github
6 Likes

Máy chủ nào mà chứa cho nỗi mấy trăm nghìn bộ phim vậy bạn :frowning:

Cám ơn b nhé, mình sẽ tìm hiểu thêm :slight_smile:

Phía server:

  • Bạn sử dụng ffmpeg để cắt video thành các file bằng nhau (khi người dùng tải lên thì cho server cắt ra). bạn chú ý 2 thứ khi cắt là acodec và vcodec. thằng trình duyệt nó chỉ nhận một số chuẩn thôi. Mình sử dụng chuẩn acodec và vcodec là opus,vp8.
  • Code server để load từng file video: http://sandbox.onlinephpfunctions.com/code/ea5fcbfc743c87e0fce1bedc63ea73210e2793d0
  • Code ffmpeg để cắt video :

"ffmpeg -re -i VIDEO_INPUT -vcodec vp8 -acodec opus -strict -2 -map 0 -segment_time 00:00:10 -f segment FOLDER_OUTPUT/output%05d.webm

Ở phía client mình có file thư viện nho nhỏ tự build bạn thử tham khảo: https://jsfiddle.net/jgf5zu0x/

4 Likes

Làmm web phim thì cứ lưu trên google drive , onedrive thôi chứ streaming làm gì, sài ffmpeg là down đc hết mà .
p/s: có cả open source để get direct link google drive luôn https://github.com/py7hon/Meowdrive @@
get đc direct link m paste vào vlc chạy ầm ầm, tua pause đều ok , chứ làm web phim free gắn quảng cao mà chạy server thì tốn băng thông lắm, tiền quảng cáo ko đủ tiền server :smile:
Mà thấy bên fb còn rao bán tài khoản drive gì mà ko giới hạn dung lượng lưu trữ có 300k @@.
p/s2: https://www.googleapis.com/drive/v3/files/{id_drive}?alt=media&key=AIzaSyD739-eb6NzS_KbVJq1K8ZAxnrMfkIqPyw
Demo:

https://www.googleapis.com/drive/v3/files/1T-wVtZBKYn1y5WFukiryJFmId-a7rer-?alt=media&key=AIzaSyD739-eb6NzS_KbVJq1K8ZAxnrMfkIqPyw

p/s3: có vẻ cách này ngon hơn giấu đc id chủ sở hữu tránh bị report mất nick https://hdplay.se/
Demo: http://hdplay.se/drive/1T-wVtZBKYn1y5WFukiryJFmId-a7rer-.html
Hiện tại chưa thấy thím nào public source cách này chắc sợ bị google fix :slight_smile:

5 Likes

Hồi xưa cũng nghĩ sao mấy web phim ko làm giao thức peer to peer như torrent để giảm băng thông thì ra cũng có web làm :smiley:

2 Likes

Chào bác, em có viết một bài ngắn về hls, bác có thể xem thử: https://nhtcntt.blogspot.com/2019/11/cac-trang-web-xem-phim-su-dung-google.html

2 Likes

hiện tại trang biphim,tv không bắt link bạn có cách get link tải được không

Không biết bạn có đọc bài viết trên chưa ? Nếu có, mà chưa hiểu thì vui lòng đọc lại nhá. Cơ bản thì hiện nay các web xem phim đều có cách hoạt động giống như trong bài viết trên.
Còn bạn muốn tải thì vui lòng học thêm python và javascript để xử dụng các phần mềm được mô tả ở cuối bài viết.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?