transcoder_audio.php 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. <?php
  2. /**
  3. * Copyright (c) UNA, Inc - https://una.io
  4. * MIT License - https://opensource.org/licenses/MIT
  5. *
  6. * @defgroup UnaCoreSamples Samples
  7. * @{
  8. */
  9. /**
  10. * @page samples
  11. * @section transcoder_audio Transcoder Audio
  12. *
  13. * This sample shows how transcoder can be used for audio files.
  14. *
  15. * @code
  16. CREATE TABLE `sample_transcoder_audio_orig` (
  17. `id` int(11) NOT NULL AUTO_INCREMENT,
  18. `profile_id` int(10) unsigned NOT NULL,
  19. `remote_id` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  20. `path` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  21. `file_name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  22. `mime_type` varchar(128) COLLATE utf8_unicode_ci NOT NULL,
  23. `ext` varchar(32) COLLATE utf8_unicode_ci NOT NULL,
  24. `size` int(11) NOT NULL,
  25. `added` int(11) NOT NULL,
  26. `modified` int(11) NOT NULL,
  27. `private` int(11) NOT NULL,
  28. PRIMARY KEY (`id`),
  29. UNIQUE KEY `remote_id` (`remote_id`)
  30. );
  31. INSERT INTO `sys_objects_storage` (`object`, `engine`, `params`, `token_life`, `cache_control`, `levels`, `table_files`, `ext_mode`, `ext_allow`, `ext_deny`, `quota_size`, `current_size`, `quota_number`, `current_number`, `max_file_size`, `ts`) VALUES
  32. ('sample_transcoder_audio_orig', 'Local', '', 360, 2592000, 0, 'sample_transcoder_audio_orig', 'allow-deny', 'wav,mp3,m4a,aac,ogg', '', 0, 0, 0, 0, 0, 0);
  33. CREATE TABLE `sample_transcoder_audio` (
  34. `id` int(11) NOT NULL AUTO_INCREMENT,
  35. `profile_id` int(10) unsigned NOT NULL,
  36. `remote_id` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  37. `path` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  38. `file_name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  39. `mime_type` varchar(128) COLLATE utf8_unicode_ci NOT NULL,
  40. `ext` varchar(32) COLLATE utf8_unicode_ci NOT NULL,
  41. `size` int(11) NOT NULL,
  42. `added` int(11) NOT NULL,
  43. `modified` int(11) NOT NULL,
  44. `private` int(11) NOT NULL,
  45. PRIMARY KEY (`id`),
  46. UNIQUE KEY `remote_id` (`remote_id`)
  47. );
  48. INSERT INTO `sys_objects_storage` (`object`, `engine`, `params`, `token_life`, `cache_control`, `levels`, `table_files`, `ext_mode`, `ext_allow`, `ext_deny`, `quota_size`, `current_size`, `quota_number`, `current_number`, `max_file_size`, `ts`) VALUES
  49. ('sample_transcoder_audio', 'Local', '', 360, 2592000, 0, 'sample_transcoder_audio', 'allow-deny', 'wav,mp3,m4a,aac,ogg', '', 0, 0, 0, 0, 0, 0);
  50. INSERT INTO `sys_objects_transcoder` (`object`, `storage_object`, `source_type`, `source_params`, `private`, `atime_tracking`, `atime_pruning`, `ts`, `override_class_name`, `override_class_file`) VALUES
  51. ('sample_audio_mp3', 'sample_transcoder_audio', 'Storage', 'a:1:{s:6:"object";s:28:"sample_transcoder_audio_orig";}', 'no', 0, 0, 0, 'BxDolTranscoderAudio', '');
  52. INSERT INTO `sys_transcoder_filters` (`transcoder_object`, `filter`, `filter_params`, `order`) VALUES
  53. ('sample_audio_mp3', 'Mp3', 'a:2:{s:13:"audio_bitrate";i:96;s:10:"force_type";s:3:"mp3";}', 0);
  54. * @endcode
  55. *
  56. */
  57. require_once('./../inc/header.inc.php');
  58. require_once(BX_DIRECTORY_PATH_INC . "design.inc.php");
  59. $oTemplate = BxDolTemplate::getInstance();
  60. $oTemplate->setPageNameIndex (BX_PAGE_DEFAULT);
  61. $oTemplate->setPageHeader ("Sample audio transcoder");
  62. $oTemplate->setPageContent ('page_main_code', PageCompMainCode());
  63. $oTemplate->getPageCode();
  64. /**
  65. * page code function
  66. */
  67. function PageCompMainCode()
  68. {
  69. ob_start();
  70. $sStorageObjectOrig = 'sample_transcoder_audio_orig';
  71. $sTranscoderObject = 'sample_audio_mp3';
  72. $iProfileId = bx_get_logged_profile_id();
  73. if (!$iProfileId) {
  74. echo "You aren't logged in.";
  75. exit;
  76. }
  77. $iPrunedFiles = BxDolTranscoder::pruning();
  78. if ($iPrunedFiles) {
  79. echo "iPrunedFiles: $iPrunedFiles";
  80. exit;
  81. }
  82. $oTranscoder = BxDolTranscoderAudio::getObjectInstance($sTranscoderObject);
  83. if (!$oTranscoder) {
  84. echo "Transcoder object is not available: " . $sTranscoder;
  85. exit;
  86. }
  87. echo "registerHandlers mp3: [" . $oTranscoder->registerHandlers() . "] <br />\n";
  88. $oStorageOrig = BxDolStorage::getObjectInstance($sStorageObjectOrig);
  89. if (!$oStorageOrig) {
  90. echo "Storage object is not available: " . $sStorageObjectOrig;
  91. exit;
  92. }
  93. if (isset($_POST['upload'])) {
  94. $iId = $oStorageOrig->storeFileFromForm($_FILES['file'], true, $iProfileId);
  95. if ($iId) {
  96. $iCount = $oStorageOrig->afterUploadCleanup($iId, $iProfileId);
  97. echo "<h2>Uploaded file id: " . $iId . "(deleted ghosts:" . $iCount . ") </h2>";
  98. // force transcode
  99. echo "Force transcode: <br />";
  100. echo "mp3: " . $oTranscoder->getFileUrl($iId) . '<br />';
  101. } else {
  102. echo "<h2>Error uploading file: " . $oStorage->getErrorString() . '</h2><hr class="bx-def-hr" />';
  103. }
  104. }
  105. elseif (isset($_POST['delete'])) {
  106. foreach ($_POST['file_id'] as $iFileId) {
  107. $bRet = $oStorageOrig->deleteFile($iFileId, $iProfileId);
  108. if ($bRet)
  109. echo "<h2>Deleted file id: " . $iFileId . '</h2><hr class="bx-def-hr" />';
  110. else
  111. echo "<h2>File deleting error: " . $oStorageOrig->getErrorString() . '</h2><hr class="bx-def-hr" />';
  112. }
  113. }
  114. else {
  115. $a = $oStorageOrig->getFilesAll();
  116. foreach ($a as $r) {
  117. $sUrlMP3 = $oTranscoder->getFileUrl($r['id']);
  118. echo '<h3>' . $r['file_name'] . '(' . $sUrlMP3 . ')</h3>';
  119. echo '<audio controls><source src="' . $sUrlMP3 . '" type="audio/mpeg" /></audio>';
  120. echo '<hr class="bx-def-hr" />';
  121. }
  122. }
  123. $a = $oStorageOrig->getFilesAll();
  124. ?>
  125. <h2>Files List</h2>
  126. <form method="POST">
  127. <?php foreach ($a as $r): ?>
  128. <input type="checkbox" name="file_id[]" value="<?=$r['id'] ?>" />
  129. <?=$r['file_name'] ?>
  130. <br />
  131. <?php endforeach; ?>
  132. <input type="submit" name="delete" value="Delete" class="bx-btn bx-btn-small bx-def-margin-sec-top" style="float:none;" />
  133. </form>
  134. <hr class="bx-def-hr" />
  135. <h2>Upload</h2>
  136. <form enctype="multipart/form-data" method="POST">
  137. <input type="file" name="file" />
  138. <br />
  139. <input type="submit" name="upload" value="Upload" class="bx-btn bx-btn-small bx-def-margin-sec-top" style="float:none;" />
  140. </form>
  141. <?php
  142. $s = ob_get_clean();
  143. return DesignBoxContent("Sample audio transcoder", $s, BX_DB_PADDING_DEF);
  144. }
  145. /** @} */