Advertisement
Guest User

Untitled

a guest
Jul 17th, 2021
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.90 KB | None | 0 0
  1. <?php
  2. /**
  3. *
  4. * @ This file is created by http://DeZender.Net
  5. * @ deZender (PHP7 Decoder for ionCube Encoder)
  6. *
  7. * @ Version : 4.1.0.1
  8. * @ Author : DeZender
  9. * @ Release on : 29.08.2020
  10. * @ Official site : http://DeZender.Net
  11. *
  12. */
  13.  
  14. function getRogersSegments($rURL, $rLimit = NULL)
  15. {
  16. global $rMaxSegments;
  17. $rLimit = 10;
  18. $rManifest = getCURLURL($rURL);
  19. $rMPD = simplexml_load_string($rManifest);
  20. $rBaseURL = substr($rURL, 0, strripos($rURL, '/')) . '/';
  21. $rRepID = $rMPD->Period->AdaptationSet->Representation[count($rMPD->Period->AdaptationSet->Representation) - 1]->attributes()['id'];
  22. $rrVideoTemplate = str_replace('$RepresentationID$', $rRepID, $rMPD->Period->AdaptationSet->SegmentTemplate->attributes()['media']);
  23. $rInitSegment = str_replace('$RepresentationID$', $rRepID, $rBaseURL . $rMPD->Period->AdaptationSet->SegmentTemplate->attributes()['initialization']);
  24.  
  25. foreach ($rMPD->Period->AdaptationSet->ContentProtection as $rContentProtection) {
  26. if (strtolower($rContentProtection->attributes()->schemeIdUri) == 'urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed') {
  27. list($rPSSH) = explode('</cenc:pssh>', explode('<cenc:pssh>', $rContentProtection->asXML())[1]);
  28.  
  29. if (!$rPSSH) {
  30. list($rPSSH) = explode('<', explode('>', $rContentProtection->pssh->asXML())[1]);
  31. }
  32.  
  33. $rVideoStart = NULL;
  34. $rVideoTemplate = NULL;
  35. $rObject = [
  36. 'pssh' => $rPSSH,
  37. 'audio' => NULL,
  38. 'video' => NULL,
  39. 'segments' => [],
  40. 'add' => 100
  41. ];
  42.  
  43. foreach ($rMPD->Period->AdaptationSet as $rAdaptationSet) {
  44. if ($rAdaptationSet->attributes()['mimeType'] == 'video/mp4') {
  45. $rObject['video'] = $rInitSegment;
  46.  
  47. foreach ($rAdaptationSet->SegmentTemplate->SegmentTimeline->S as $rSegment) {
  48. if (isset($rSegment->attributes()['t'])) {
  49. $rVideoStart = $rSegment->attributes()['t'];
  50. $rObject['add'] = $rSegment->attributes()['d'];
  51. }
  52. }
  53. }
  54. }
  55.  
  56. foreach ($rMPD->Period->AdaptationSet as $rAdaptationSet) {
  57. $rVideoTemplate = str_replace('$RepresentationID$', $rRepID, $rAdaptationSet->SegmentTemplate->attributes()['media']);
  58. $rRepID = $rAdaptationSet->Representation->attributes()['id'];
  59. $rThisSegment = $rAdaptationSet->SegmentTemplate->attributes()['startNumber'];
  60. $rSegmentTemplate = str_replace('$RepresentationID$', $rRepID, $rAdaptationSet->SegmentTemplate[0]->attributes()['media']);
  61. $rInitSegment = str_replace('$RepresentationID$', $rRepID, $rBaseURL . $rAdaptationSet->SegmentTemplate[0]->attributes()['initialization']);
  62. if (($rAdaptationSet->attributes()['mimeType'] == 'audio/mp4') && ($rAdaptationSet->Representation->attributes()['codecs'] == 'mp4a.40.5')) {
  63. $rObject['audio'] = $rInitSegment;
  64.  
  65. foreach ($rAdaptationSet->SegmentTemplate->SegmentTimeline->S as $rSegment) {
  66. if (isset($rSegment->attributes()['r'])) {
  67. $rRepeats = intval($rSegment->attributes()['r']) + 1;
  68. }
  69. else {
  70. $rRepeats = 1;
  71. }
  72.  
  73. foreach (range(1, $rRepeats) as $rRepeat) {
  74. $rThisSegment = $rThisSegment + 1;
  75. $rVideoStart += $rObject['add'];
  76. $rObject['segments'][$rVideoStart]['audio'] = str_replace('$Number$', $rThisSegment, $rBaseURL . $rSegmentTemplate);
  77. $rObject['segments'][$rVideoStart]['video'] = str_replace('$Number$', $rThisSegment, $rBaseURL . $rrVideoTemplate);
  78. }
  79. }
  80.  
  81. if (!$rLimit) {
  82. $rLimit = $rMaxSegments;
  83. }
  84.  
  85. $rObject['segments'] = array_slice($rObject['segments'], -1 * $rLimit, $rLimit, true);
  86. return $rObject;
  87. }
  88. }
  89. }
  90. }
  91. }
  92.  
  93. function plog($rText)
  94. {
  95. echo '[' . date('Y-m-d h:i:s') . '] ' . $rText . "\n";
  96. }
  97.  
  98. function getURL($rURL, $rTimeout = 5)
  99. {
  100. $rContext = stream_context_create([
  101. 'http' => ['timeout' => $rTimeout]
  102. ..........................................................................
  103. ..............................................
  104. ....................
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement