关键词搜索

源码搜索 ×
×

php 隐藏真实播放地址输出视频流

发布2022-11-22浏览559次

详情内容

  1. <?php
  2. $localfile = "test.mp4";
  3. $size = filesize($localfile);
  4. $start = 0;
  5. $end = $size - 1;
  6. $length = $size;
  7. header("Accept-Ranges: 0-$size");
  8. header("Content-Type: video/mp4");
  9. $ranges_arr = array();
  10. if (isset($_SERVER['HTTP_RANGE'])) {
  11. if (!preg_match('/^bytes=\d*-\d*(,\d*-\d*)*$/i', $_SERVER['HTTP_RANGE'])) {
  12. header('HTTP/1.1 416 Requested Range Not Satisfiable');
  13. }
  14. $ranges = explode(',', substr($_SERVER['HTTP_RANGE'], 6));
  15. foreach ($ranges as $range) {
  16. $parts = explode('-', $range);
  17. $ranges_arr[] = array($parts[0],$parts[1]);
  18. }
  19. $ranges = $ranges_arr[0];
  20. if($ranges[0]==''){
  21. if($ranges[1]!=''){
  22. //Range: bytes=-n 表示取文件末尾的n个字节
  23. $length = (int)$ranges[1];
  24. $start = $size - $length;
  25. }else{
  26. //Range: bytes=- 这种形式不合法
  27. header('HTTP/1.1 416 Requested Range Not Satisfiable');
  28. }
  29. }else{
  30. $start = (int)$ranges[0];
  31. if($ranges[1]!=''){
  32. //Range: bytes=n-m 表示从文件的n偏移量读到m偏移量
  33. $end = (int)$ranges[1];
  34. }
  35. //Range: bytes=n- 表示从文件的n偏移量读到末尾
  36. $length = $end - $start + 1;
  37. }
  38. header('HTTP/1.1 206 PARTIAL CONTENT');
  39. }
  40. header("Content-Range: bytes {$start}-{$end}/{$size}");
  41. header("Content-Length: $length");
  42. $buffer = 8096;
  43. $file = fopen($localfile, 'rb');
  44. if($file){
  45. fseek($file, $start);
  46. while (!feof($file) && ($p = ftell($file)) <= $end){
  47. if ($p + $buffer > $end) {
  48. $buffer = $end - $p + 1;
  49. }
  50. set_time_limit(0);
  51. echo fread($file, $buffer);
  52. flush();
  53. }
  54. fclose($file);
  55. }
  56. die;
  57. ?>

相关技术文章

点击QQ咨询
开通会员
返回顶部
×
微信扫码支付
微信扫码支付
确定支付下载
请使用微信描二维码支付
×

提示信息

×

选择支付方式

  • 微信支付
  • 支付宝付款
确定支付下载