[SHARE] HLS Stream M3U8

BlurBase

Junior
Joined
Aug 3, 2025
Messages
82
Reactions
24
MR
3.099
Chat with me via Yahoo Messenger X.com
Như tiêu đề lên không dài thì mình share source code cho ae tự dùng, code này cũng hỗ trợ cho ae Upload lên google driver, R2 hoặc upload trực tiếp trên server.
Để tránh tình trạng Cloudflare block acc do .ts lên mình đã tùy biến thay đổi mọi thứ cho ae bypass cloudflare cho ae chơi.
Ae tự clone về .env.example về thành .env nhé trong đó có sẵn file Dockerfile rồi chỉ việc deploy thành container muốn bê đi đâu cũng dễ, cái này chỉ là backend ae muốn hoàn chỉnh thì tự viết thêm frontend nhé. Muốn biết API cứ vào phần routes/web.php.
Còn ae muốn test trên môi trường dev thì nhớ chạy composer install . Còn không đẩy thẳng lên docker cho nhàn nhé, nhớ phải thêm nginx vào.

Loại code: Lumen framework (PHP)


# Mình sẽ để 0.333 MR ae tự dùng mà đổi để download chắc tính ra được mấy ngàn vnđ thôi, kêu nữa thì chịu =)).

conf nginx

Code:
server {
    listen 80;
    server_name localhost;
    root /var/www/html/public;
    index index.php index.html;

    client_max_body_size 500M;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    # Serve HLS files
    location /hls/ {
        alias /var/www/html/storage/app/public/hls/;
       
        # CORS headers for HLS streaming
        add_header Access-Control-Allow-Origin *;
        add_header Access-Control-Allow-Methods 'GET, OPTIONS';
        add_header Access-Control-Allow-Headers 'Range, Content-Type';
       
        # Cache HLS segments
        expires 1h;
        add_header Cache-Control "public, immutable";
       
        # Handle m3u8 playlist files
        location ~ \.m3u8$ {
            add_header Content-Type application/vnd.apple.mpegurl;
            expires -1;
        }
       
        # Handle ts segment files
        location ~ \.ts$ {
            add_header Content-Type video/mp2t;
        }
    }

    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
        fastcgi_read_timeout 600;
    }

    location ~ /\.ht {
        deny all;
    }
}
1761529581201.png


1761529348502.png
 
Update đã fix các lỗi lặt vặt, mời các ae xơi. Ae tải bản cũ thì cứ vào link mà tải bản mới mà dùng thế nhé. Rảnh thì mình update tiếp sau. Ae nào biết code thì khuyên lên viết thêm Node.js để làm Kafka bắn cho worker làm việc thay vì chạy trên 1 con server. Thì tốc độ xử lý bất đồng bộ nhanh hơn.

1761535610106.png
 
Last edited:
Ae nào có nhu cầu source upload video HLS lên Reddit hoặc TikTok thì đây là bản hoàn chỉnh, chạy bằng Node.js, có thể scale nhiều VPS để xử lý số lượng lớn video cùng lúc.
Có mã hóa sign TikTok riêng, upload lên không cần làm gì thêm - chỉ cần thêm cookie tài khoản là dùng được ngay.

Cấu trúc source rõ ràng:
API-Service: chỉ để call API, upload video cho Worker làm việc, cũng như quản lý file, tránh bị quá tải.
Worker-Service: nhận job từ API-Service, xử lý video từ FTP, Google Drive, Cloudflare R2...
  1. Có thể scale thêm nhiều server để chia job xử lý nhanh hơn.
  2. Sau khi xử lý xong sẽ tự upload HLS lên nơi chỉ định (FTP, Google Drive, R2, TikTok...).
  3. Có thể chọn giữ hoặc xóa file .mp4 gốc sau khi xử lý.

3 chế độ bảo mật video:
  1. Giữ nguyên file .TS, .CHUNK.
  2. Chuyển .TS, .CHUNK thành .PNG để upload TikTok, PNG an toàn ở bất kỳ web nào nếu không bị compression.
  3. Mã hóa toàn bộ file HLS giúp lưu trữ an toàn, tránh vi phạm TOS ở VPS.
Hệ thống embed riêng, có sẵn giải mã (nếu trong trường hợp đã mã hóa HLS video tránh TOS) và cache tự động 1 năm -> tối ưu băng thông tối đa

1761867904166.png
 

grey123

Newbie
Joined
Dec 1, 2022
Messages
3
Reactions
1
MR
0.089
Ai có nhu cầu tải video nguồn HLS lên Reddit hoặc TikTok thì đây là bản chỉnh sửa hoàn chỉnh, chạy bằng Node.js, có thể chia tỷ lệ nhiều VPS để xử lý số lượng lớn video cùng lúc.
Có dấu hiệu mã hóa TikTok riêng, tải lên không cần làm gì thêm - chỉ cần thêm tài khoản cookie là có thể sử dụng ngay.

Cấu trúc sourcespecific rõ ràng:
API-Service: chỉ để gọi API, upload video cho Worker làm việc, cũng như quản lý file, tránh bị quá tải.
Worker-Service: nhận công việc từ API-Service, xử lý video từ FTP, Google Drive, Cloudflare R2...
  1. Có thể mở rộng quy mô nhiều máy chủ để xử lý công việc nhanh hơn.
  2. Sau khi xử lý xong sẽ tự động tải HLS lên nơi chỉ định (FTP, Google Drive, R2, TikTok...).
  3. Có thể chọn giữ hoặc xóa tệp .mp4 gốc sau khi xử lý.

3 video bảo mật chế độ:
  1. Giữ nguyên file .TS, .CHUNK.
  2. Chuyển .TS, .CHUNK thành .PNG để tải lên TikTok, PNG an toàn ở bất kỳ trang web nào nếu không bị nén.
  3. Mã hoá toàn bộ file HLS giúp lưu trữ an toàn, tránh vi phạm TOS ở VPS.
Riêng hệ thống nhúng, có sẵn giải mã (nếu trong trường hợp HLS video tránh TOS được mã hóa hợp lý) và bộ nhớ đệm tự động 1 năm -> tối ưu băng thông tối đa

View attachment 296699
Tiktok thì có upload nhiều được không vì mình thấy upload được 1 vài bộ là nó không cho upload nữa
 

Announcements

Today's birthdays

Forum statistics

Threads
434,216
Messages
7,317,292
Members
185,645
Latest member
keowincomco

Most viewed of week

Most viewed of week

Back
Top Bottom