Hãy đăng ký thành viên để có thể dễ dàng trao đổi, giao lưu và chia sẻ về kiến thức đồ họa.
  1. Hãy đăng ký subscribe kênh Youtube mới của Việt Designer tại địa chỉ: Youtube.com/VietDesignerChannel để theo dõi các video về thiết kế đồ họa. Do trước đó kênh cũ bị Youtube quét không rõ lý do, trong thời gian chờ kháng cáo nếu các bạn thấy video trên diễn đàn bị die không xem được thì có thể vào kênh mới để tìm xem video sơ cua nhé.
    Loại bỏ thông báo

Get link stream của 1 trang web

Chủ đề thuộc danh mục 'Hỏi đáp - Thảo luận về web' được đăng bởi Mr_Love, 7/4/15.

Lượt xem: 17,750

  1. Mr_Love Mới đăng kí

    Chào các bạn.

    Mình có 1 trang này: hplus.com.vn/vi/content/detail/vtv6-hd-2129.html
    Khi viewsource nó có đoạn .m3u8 kiểu thế này:

    var iosUrl = "htqjrpsv.cdnviet.com/htjzzsg/_definst_/vtv6.720p.stream/playlist.m3u8?t=484d86d409822099cb2cd49b1c767e73&e=1428404556";

    Mình copy đoạn url đó và mở bằng phần mềm VLC hoặc jwplayer thì play được.
    Nhưng khi mình dùng hàm file_get_contents() trong php để lấy đoạn đó nhưng lại không thể play được.

    Không biết tại sao. Bạn nào giúp mình với.
    Mình sẽ hậu tạ :D

    ...
  2. banbaonylong

    banbaonylong Ko phải assmin

    file_get_contents() dùng để lấy nội dung file chứ có fải lấy luồng stream đâu? để hiển thị streaming video bạn có thể tham khảo JW Player hay dùng html5
  3. Mr_Love

    Mr_Love Mới đăng kí

    Thì e dùng để lấy nội dung file mà bác.
    Xong lọc ra tìm lấy 1 đoạn cần lấy, đoạn đó chính là dạng link kiểu như trên đó, lấy được rồi nhưng khi dùng VLC hay Jwplayer để play thì không được.
  4. Bui Trung Tan

    Bui Trung Tan Thành viên cấp 1

    Hi bạn, theo kinh nghiệm của mình thì link bạn get là link của file m3u, đây là loại file playlist, không phải file media. Trình player sẽ đọc vào file playlist này, rồi tự kết nối đến nơi chứa bài nhạc trong playlist đó để phát (không tin thì đố bạn ngắt internet mà cho player phát được cái link đó :D) .

    Cho nên lệnh file_get_content chỉ lấy được content của file m3u thôi, cho nên content bạn lấy về có dung lượng rất nhẹ & không chứa media trong đó.

    Bạn thử search thêm cách download nhạc từ file playlist m3u xem. Good luck.
  5. Mr_Love

    Mr_Love Mới đăng kí

    Bui Trung Tan Có vẻ như bạn chưa hiểu rõ lắm về link m3u8.
    Nó là dạng link video stream.
    Còn stream như thế nào thì bạn có thể search google nhé.
    Bui Trung Tan thích bài viết này
  6. banbaonylong

    banbaonylong Ko phải assmin

  7. Mr_Love

    Mr_Love Mới đăng kí

    banbaonylong
    Thanks bạn nhưng bạn vẫn chưa hiểu ý mình lắm @@
    Bạn đọc lại bài viết của mình đi.

    Vấn đề không phải là dùng gì để play nó, mà vấn đề là 1 cách sử dụng viewsoure từ browser (Ctrl+U) sau đó lấy link "htqjrpsv.cdnviet.com/htjzzsg/_definst_/vtv6.720p.stream/playlist.m3u8?t=484d86d409822099cb2cd49b1c767e73&e=1428404556"; cho vào phần mềm VLC thì play được. Còng cách dùng hàm file_get_contents() trong php cũng lấy được link đó, nhưng khi cho vào VLC thì lại không play được.

    Mình nói rõ thế mà :-s
  8. banbaonylong

    banbaonylong Ko phải assmin

    bạn get ra đúng cái link đó ko :-?
  9. Mr_Love

    Mr_Love Mới đăng kí

    banbaonylong Tất nhiên là đúng link dạng đó thì mình mới nói chứ @@
    Bạn có thể vào đây để test: talat247.com/test/getlink. php

    Bạn copy link get được rồi mở bằng phần mềm VLC thì sẽ không play được.
    Nhưng khi bạn vào trang hplus.com.vn/vi/content/detail/vtv6-hd-2129.html và nhấn Ctrl+U (viewsource) và copy link dạng đó và mở bằng phần mềm VLC thì lại play được.
    banbaonylong thích bài viết này
  10. banbaonylong

    banbaonylong Ko phải assmin

  11. seannhok

    seannhok Thành viên cấp 1

    có lẽ đó là cách chống leech link của trang này! Mình kiểm tra thì thấy link bạn get được khi request sẽ trả về 403 Forbidden, còn link lấy trực tiếp từ trình duyệt thì không bị.
    bạn thử lấy nội dung trang web bằng curlClass thay vì file_get_contents() thử xem :)
  12. Mr_Love

    Mr_Love Mới đăng kí

    seannhok Mình dùng thử curl vẫn bị thế.
    Link mình get được có bị 403 đâu bạn, nó không trả về gì thôi.
  13. seannhok

    seannhok Thành viên cấp 1

    bạn thử bật debug của VLC, hoặc bất kỳ phần mềm stream nào khác có tính năng debug cũng được rồi chạy bằng link của bạn get sẽ thấy bị 403 :)

    sock8Do.png
    Chỉnh sửa lần cuối: 14/4/15
  14. Mr_Love

    Mr_Love Mới đăng kí

    Mình thì chỉ copy và paste vào trình duyệt thấy nó ra trang trắng thôi, chưa test = debug của vlc :D
    Bạn có cách nào get được link của nó không nhỉ ? Mình sẽ hậu tạ :D
  15. Mr_Love

    Mr_Love Mới đăng kí

    Bạn nào biết giúp mình nhé.
    Mình sẽ hậu tạ :D
  16. zDark

    zDark Mới đăng kí

    Không có url target thì không thể play được đâu bạn...

    Cụ thể là như vầy:

    Khi view source của trang hplus.com.vn/vi/content/detail/vtv6-hd-2129.html, mình sẽ có thấy:

    Code:
    http://htqjrpsv.cdnviet.com/htjzzsg/_definst_/vtv6.720p.stream/playlist.m3u8?t=da90a54ad277b7a34f4608426909b878&e=1429328062
    
    Dùng trình download manager hay function file_get_contents() của php để lấy nội dung của file .m3u8 này về:

    Code:
    #EXTM3U
    #EXT-X-VERSION:3
    #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1469196,CODECS="avc1.100.31,mp4a.40.2",RESOLUTION=1280x720
    chunklist_w1721335129.m3u8?t=da90a54ad277b7a34f4608426909b878&e=1429328062
    
    Để có thể play được thì nội dung của file .m3u8 này phải là:

    Code:
    #EXTM3U
    #EXT-X-VERSION:3
    #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1469196,CODECS="avc1.100.31,mp4a.40.2",RESOLUTION=1280x720
    http://htqjrpsv.cdnviet.com/htjzzsg/_definst_/vtv6.720p.stream/chunklist_w1721335129.m3u8?t=da90a54ad277b7a34f4608426909b878&e=1429328062
    
    Lưu ý: nên sử dụng php để lấy url & nội dung của file .m3u8, vì các param của url được thay đổi theo session/time nên chỉ có máy của bạn mới có thể play được url đó!
  17. Mr_Love

    Mr_Love Mới đăng kí

    zDark Mình đã thử dùng cUrl và file_get_content() trong php rồi nhưng không thể play được.
    Thử get content của link m3u8 sau khi get được thì nó cũng chỉ có dạng:

    #EXTM3U
    #EXT-X-VERSION:3
    #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1469196,CODECS="avc1.100.31,mp4a.40.2",RESOLUTION=1280x720
    chunklist_w1721335129.m3u8?t=da90a54ad277b7a34f4608426909b878&e=1429328062

    Chứ không ra được như bạn nói.

    Bạn có thể làm giúp mình được không ?
  18. zDark

    zDark Mới đăng kí

    Nội dung file .m3u8 đúng phải là:

    Code:
    #EXTM3U
    #EXT-X-VERSION:3
    #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1469196,CODECS="avc1.100.31,mp4a.40.2",RESOLUTION=1280x720
    http://htqjrpsv.cdnviet.com/htjzzsg/_definst_/vtv6.720p.stream/chunklist_w1721335129.m3u8?t=da90a54ad277b7a34f4608426909b878&e=1429328062
    
    Bạn có thể sử dụng parse_url() hoặc preg_match() để tách url:

    Code:
    http://htqjrpsv.cdnviet.com/htjzzsg/_definst_/vtv6.720p.stream/
    
    Sau đó add vào nội dung của file .m3u8
  19. Mr_Love

    Mr_Love Mới đăng kí

    zDark Link này là stream mà bạn, sao mà làm thế được.
    Bạn thử làm xem :(
  20. zDark

    zDark Mới đăng kí

    PHP:
    <? php
    /*!
    * (C) vietdesigner.net
    *
    */

    header("Content-Type: text/plain"); // display as plain text

    $url "http://hplus.com.vn/vi/content/detail/vtv6-hd-2129.html"// site url
    $content file_get_contents($url); // get page content html

    preg_match('/<input id="link-live" type="hidden" value="(.*?)"/is'$content$match); // regular expression match

    if (isset($match[1])) { // a match was found
        
    $playlist explode("/"$match[1]); // split url by slash
        
    $playlist end($playlist); // get filename + query (playlist.m3u8?t=...&e=...)

        
    $urlStream str_replace($playlist""$match[1]); // remove filename + query
        
    $urlStream substr($urlStream, -1) == "/" $urlStream $urlStream."/"// forced add trailing slash onto the end of url

        
    $contentStream file_get_contents($match[1]); // get content file m3u8
        
    $contentStream str_replace("chunklist_"$urlStream."chunklist_"$contentStream); // add full url

        // force file download
        
    $filename "vds.".time().".m3u8";// downloaded filename
        
    header("Content-Description: File Transfer");
        
    header("Content-Type: application/octet-stream");
        
    header("Content-Disposition: attachment; filename=".$filename);
        
    header("Content-Transfer-Encoding: binary");
        
    header("Connection: Keep-Alive");
        
    header("Expires: 0");
        
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
        
    header("Pragma: public");
        
    header("Content-Length: ".strlen($contentStream));

        echo 
    $contentStream// print to screen
    } else echo "URL stream not found"// a match was not found
    ?>
    Mr_Love thích bài viết này

Ủng hộ diễn đàn