Loading...
Форум / PHP, MySQL / Почему не загружает АУДИО
Вот код. ChatCPT постоянно забывает предыдущий код как и ответ соответственно
php
<?php  namespace App\Jobs\User\Timeline;  use Exception; use App\Models\Post; use Illuminate\Support\Str; use FFMpeg\Format\Audio\Mp3; use App\Constants\Filesystem; use App\Enums\Post\PostStatus; use App\Enums\Media\MediaStatus; use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Storage; use Illuminate\Foundation\Queue\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use App\Events\User\Timeline\MediaProcessedEvent; use App\Services\Filesystem\Upload\AudioUploadService;  class ConvertAndCompressPostAudio implements ShouldQueue {     use Queueable;      public $timeout = (60 * 30); // 30 minutes      private $postData;      public function __construct(Post $postData)     {         $this->postData = $postData;     }      public function handle(): void     {         $postMedia = $this->postData->media()->first();          try {             $audioUploadService = app(AudioUploadService::class);             $postMedia = $this->postData->media()->first();              if (! $audioUploadService) {                 throw new Exception('Required services are not available. Ensure that fileUploaderService and ffmpegService are properly injected.');             }              // Get audio local temporary path             $audioTempOldPath = $postMedia->source_path;              // Generate new audio temporary path for compressed audio marking it as compressed. [compressed.mp3]             $audioTempNewPath = $audioUploadService->generateAudioTemporaryFilePath("compressed.{$audioUploadService->audioDefaultExtension}");              $ffmpeg = $audioUploadService->getFFMpeg();             $audioOldAbsLocalPath = storage_local_path($audioTempOldPath);             $audioNewAbsLocalPath = storage_local_path($audioTempNewPath);              if(config('logging.debugging.audio_process_logging')) {                 $fileOldExists = (file_exists($audioOldAbsLocalPath)) ? 'Yes' : 'No';                  Log::info("Audio with path: {$audioOldAbsLocalPath} loaded. Audio file exists: {$fileOldExists}");             }              // Compress audio and save to new path converting it to mp3             $audio = $ffmpeg->open($audioOldAbsLocalPath);             $format = new Mp3();             $format = $format->setAudioKiloBitrate(128);              $audio->save($format, $audioNewAbsLocalPath);              if(file_exists($audioNewAbsLocalPath)) {                  // Upload compressed audio to public disk and update post media                 // Public disk is determined by post media with round robin algorithm                 // and it is not local public folder of the application.                  $audioFileDuration = $audioUploadService->getAudioDuration($audioTempNewPath);                  $audioFilePath = $audioUploadService                     ->setNamespace(Filesystem::getPostAudioNamespace())                     ->setStorageDisk($postMedia->disk)                     ->upload($audioNewAbsLocalPath);                  $audioFileSize = Storage::disk('local')->size($audioTempNewPath);                 $mediaMetadata = $postMedia->metadata;                 $newFilename = Str::beforeLast($mediaMetadata['file_name'], '.');                  $mediaMetadata['duration'] = $audioFileDuration;                 $mediaMetadata['file_name'] = "{$newFilename}.{$audioUploadService->audioDefaultExtension}";                 $postMedia->source_path = $audioFilePath['audio_path'];                 $postMedia->extension = $audioUploadService->audioDefaultExtension;                 $postMedia->status = MediaStatus::PROCESSED;                 $postMedia->metadata = $mediaMetadata;                 $postMedia->size = $audioFileSize;                 $postMedia->save();                  $this->postData->status = PostStatus::ACTIVE;                  $this->postData->save();                  if(config('logging.debugging.audio_process_logging')) {                     $fileNewExists = file_exists($audioNewAbsLocalPath) ? 'Yes' : 'No';                      Log::info("Compressed audio with new path: {$audioNewAbsLocalPath} saved. Audio new file exists: {$fileNewExists}");                 }                  Storage::disk('local')->delete($audioTempOldPath);                 Storage::disk('local')->delete($audioTempNewPath);                                  // Broadcast audio processed event with updated post media and user id                 // to notify users that audio has been processed.                  try {                     event(new MediaProcessedEvent($postMedia->refresh(), $this->postData->user_id));                 } catch (Exception $e) {                     Log::error('Failed to broadcast audio processed event: ' . $e->getMessage());                 }             }         }                  catch (Exception $e) {             Log::error('Post audio processing failed after 5 attempts. Error: ' . $e->getMessage());                          $this->fail();         }     }      public function tries(): int     {         return 5;     } }
Ffmpeg установлена библиотека?
Тем более в методе, есть логирование ошибок, можно посмотреть
Лара (Вчера в 16:53)
Ffmpeg установлена библиотека?
Да.

Вложение: изображение

------
89759_20251226152444.png (220.8 Kb)
Скачиваний: 7
Лара , C:\OSPanel\home\colibri.local>php artisanLaravel Framework 12.44.0
OZZY , что в файле для логов пишется?
[hljs class="php"]<?phpnamespace App\Jobs\User\Timeline;use Exception;use App\Models\Post;use Illuminate\Support\Str;use FFMpeg\Format\Audio\Mp3;use App\Constants\Filesystem;use App\Enums\Post\PostStatus;use App\Enums\Media\MediaStatus;use Illuminate\Support\Facades\Log;use Illuminate\Support\Facades\Storage;use Illuminate\Bus\Queueable;use Illuminate\Queue\SerializesModels;use Illuminate\Queue\InteractsWithQueue;use Illuminate\Foundation\Bus\Dispatchable;use Illuminate\Contracts\Queue\ShouldQueue;use App\Events\User\Timeline\MediaProcessedEvent;use App\Services\Filesystem\Upload\AudioUploadService;class ConvertAndCompressPostAudio implements ShouldQueue{ use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; public $timeout = 1800; // 30 minutes public function __construct(public Post $postData) { } public function handle(AudioUploadService $audioUploadService): void { $postMedia = $this->postData->media()->first(); // temp paths (relative paths in local disk) $audioTempOldPath = null; $audioTempNewPath = null; try { if (! $postMedia) { throw new Exception('Post has no media to process.'); } if (empty($postMedia->source_path)) { throw new Exception('Post media source_path is empty.'); } $audioTempOldPath = $postMedia->source_path; // Генерим новый временный путь (local disk) $audioTempNewPath = $audioUploadService->generateAudioTemporaryFilePath( "compressed.{$audioUploadService->audioDefaultExtension}" ); $ffmpeg = $audioUploadService->getFFMpeg(); // Абсолютные пути на local disk $audioOldAbsLocalPath = Storage::disk('local')->path($audioTempOldPath); $audioNewAbsLocalPath = Storage::disk('local')->path($audioTempNewPath); if (config('logging.debugging.audio_process_logging')) { Log::info("Audio old local path: {$audioOldAbsLocalPath}; exists: " . (file_exists($audioOldAbsLocalPath) ? 'Yes' : 'No')); } if (! file_exists($audioOldAbsLocalPath)) { throw new Exception("Source audio file not found on local disk: {$audioOldAbsLocalPath}"); } // Конвертация/сжатие в mp3 128kbps $audio = $ffmpeg->open($audioOldAbsLocalPath); $format = (new Mp3())->setAudioKiloBitrate(128); $audio->save($format, $audioNewAbsLocalPath); if (! file_exists($audioNewAbsLocalPath)) { throw new Exception("Compressed audio file was not created: {$audioNewAbsLocalPath}"); } // Длительность (если ваш сервис ожидает relative path — передаем $audioTempNewPath) $audioFileDuration = $audioUploadService->getAudioDuration($audioTempNewPath); // Загрузка в нужный диск (round robin у вас внутри по $postMedia->disk) $audioFilePath = $audioUploadService ->setNamespace(Filesystem::getPostAudioNamespace()) ->setStorageDisk($postMedia->disk) ->upload($audioNewAbsLocalPath); if (empty($audioFilePath['audio_path'])) { throw new Exception('Upload service did not return audio_path.'); } // Размер сжатого файла $audioFileSize = Storage::disk('local')->exists($audioTempNewPath) ? Storage::disk('local')->size($audioTempNewPath) : null; $mediaMetadata = $postMedia->metadata ?? []; $oldFileName = $mediaMetadata['file_name'] ?? null; $newFilename = $oldFileName ? Str::beforeLast($oldFileName, '.') : 'audio'; $mediaMetadata['duration'] = $audioFileDuration; $mediaMetadata['file_name'] = "{$newFilename}.{$audioUploadService->audioDefaultExtension}"; $postMedia->source_path = $audioFilePath['audio_path']; $postMedia->extension = $audioUploadService->audioDefaultExtension; $postMedia->status = MediaStatus::PROCESSED; $postMedia->metadata = $mediaMetadata; if ($audioFileSize !== null) { $postMedia->size = $audioFileSize; } $postMedia->save(); $this->postData->status = PostStatus::ACTIVE; $this->postData->save(); if (config('logging.debugging.audio_process_logging')) { Log::info("Audio compressed local path: {$audioNewAbsLocalPath}; exists: " . (file_exists($audioNewAbsLocalPath) ? 'Yes' : 'No')); } // Событие try { event(new MediaProcessedEvent($postMedia->refresh(), $this->postData->user_id)); } catch (Exception $e) { Log::error('Failed to broadcast audio processed event: ' . $e->getMessage()); } } catch (Exception $e) { Log::error('Post audio processing failed. Error: ' . $e->getMessage(), [ 'post_id' => $this->postData->id ?? null, 'media_id' => $postMedia->id ?? null, ]); // чтобы очередь пометила как failed корректно $this->fail($e); } finally { // чистим временные файлы, но аккуратно if ($audioTempOldPath && Storage::disk('local')->exists($audioTempOldPath)) { Storage::disk('local')->delete($audioTempOldPath); } if ($audioTempNewPath && Storage::disk
________
посл. ред. 26.12.2025 в 18:26; всего 2 раз(а); by Html
Лара (Вчера в 17:48)
OZZY , что в файле для логов пишется?
Нету в логах ничего. Просто файлы аудио и видео не загружаются на сервер. Висит как на скрине вот и все.

Вложение: изображение

------
89760_20251227083345.png (17.8 Kb)
Скачиваний: 1
Действия с темой
Онлайн: 6
Время:
Gen. 0.104
(c) Bym.Guru 2010-2025