plutuss/getid3-laravel

一个围绕 james-heinrich/getid3 的包装,用于从媒体文件中提取各种信息。

1.3.0 2024-09-24 16:33 UTC

This package is auto-updated.

Last update: 2024-09-26 09:03:12 UTC


README

Laravel

注意

由 James Heinrich 开发的 getID3 包是一款强大的分析音频和视频文件元数据工具。以下是其部分功能:

  1. 元数据提取:getID3 可以从多媒体文件中提取各种类型的元数据,包括格式、编解码器、时长、比特率、采样率等信息。
  2. 支持多种格式:该包支持广泛的音频和视频格式,包括 MP3、WAV、FLAC、OGG、AAC、WMA、AVI、MPEG、QuickTime 等。
  3. 标签处理:它还能够分析和提取元数据标签中的信息,例如 MP3 文件的 ID3 标签或其他格式的类似标签。
  4. 字符编码检测:getID3 可以自动检测元数据中使用的文本编码,以便正确处理不同语言和特殊字符。
  5. 流信息检索:此包可以分析多媒体文件的结构,并提供其中包含的音频和视频流信息。
  6. 灵活性和可定制性:getID3 为用户提供各种选项和设置,允许他们根据项目的具体需求和要求自定义其行为。

注意

这些功能使 getID3 包成为处理多媒体文件的开发者的宝贵工具,同时也是创建需要分析和处理音频和视频数据的应用的理想选择。

 composer require plutuss/getid3-laravel

使用 Facade MediaAnalyzer

  • uploadFile()
  • fromLocalFile()
<?php

use Plutuss\Facades\MediaAnalyzer;
use Illuminate\Http\Request;

class MediaAnalyzerController extends Controller
{
    public function index(Request $request)
    {
    
    // To add a file locally it must be in storage.
    // So that the Storage facade can read it.
    // The default disk value is taken from the .env file FILESYSTEM_DISK
     MediaAnalyzer::fromLocalFile('/video.mov')->getAllInfo();
     
      // OR
      
     MediaAnalyzer::fromLocalFile(
         path: 'files/video.mov',
         disk: 'public',  // "local", "ftp", "sftp", "s3"
     )->getAllInfo();
     
     
     // Request file
     MediaAnalyzer::uploadFile($request->file('video'))->getAllInfo();
     
    }

}
  • 可用方法列表
    
    $media = MediaAnalyzer::uploadFile($request->file('video'))
    
    $media->getAllInfo();
    
    $media->getDuration();
    
    $media->comments();
    
    $media->getResolution();
    
    $media->getImage();
    
    $media->getTitle();
    
    $media->getAlbum();
    
    $media->getPlaytime();
    
    $media->getGenres();
    
    $media->getArtist();
    
    $media->getComposer();
    
    $media->getTrackNumber();
    
    $media->getCopyrightInfo();
    
    $media->getFileFormat();
    
    $media->getNestedValue('key.array')
  • 您还可以参考以下属性
  $media = MediaAnalyzer::uploadFile($request->file('video'))
  
      "video" => array:11 [▶]
      "warning" => array:5 [▶]
      "comments" => array:1 [▶]
      "encoding" => "UTF-8"
      "mime_type" => "video/quicktime"
      "quicktime" => array:11 [▶]
      "playtime_seconds" => 9.56
      "bitrate" => 50294133.891213
      "playtime_string" => "0:10"

    $media->video;
    
    $media->playtime_seconds;
    
    $media->playtime_string;
    
    $media->mime_type;
  • getNestedValue() 方法通过“点”符号从深层嵌套数组中检索值
    $media = MediaAnalyzer::uploadFile($request->file('video'))

          "avdataoffset" => 48
          "avdataend" => 60101538
          "fileformat" => "quicktime"
          "video" => array:11 [▼
            "dataformat" => "quicktime"
            "resolution_x" => 1920.0
            "resolution_y" => 1080.0
            "codec" => "H.264"
            "bits_per_sample" => 24
            "frame_rate" => 25.0
            "bitrate" => 50294133.891213
            "compression_ratio" => 0.040424168829743
          ]
          "warning" => array:5 [▶]
          "comments" => array:1 [▶]


    $media->getNestedValue('video.codec')  // H.264
    $media->getNestedValue('video.resolution_x')   //  1920.0