Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Getid3 Laravel Package

james-heinrich/getid3

PHP library for reading and parsing audio/video file metadata. Extracts tags (ID3, APE, Lyrics3) and technical info from many formats including MP3, AAC/MP4, FLAC, Ogg (Vorbis/Opus), WAV/AIFF, AVI/ASF, MKV, and more.

View on GitHub
Deep Wiki
Context7

PHP script that extracts useful information from popular multimedia file formats

Frequently asked questions about Getid3
How do I install getID3 in a Laravel project?
Use Composer: `composer require james-heinrich/getid3`. Register it as a service provider in `config/app.php` or wrap core functions in a Laravel facade (e.g., `Metadata::analyze($file)`) for cleaner usage. Ensure PHP memory limit is ≥12MB for optimal performance.
Does getID3 support Laravel 10 and PHP 8.2?
getID3 works with PHP 7.0+, but PHP 8.x may trigger deprecation warnings due to its legacy codebase. Use `@` operator for deprecated functions or wrap calls in a compatibility layer. Test thoroughly in a staging environment before production deployment.
Can I use getID3 to extract metadata from remote files (e.g., S3 or HTTP URLs)?
No, getID3 requires local file paths. Use Laravel’s HTTP client (`Http::get()`) to download remote files to temporary storage, then pass the local path to getID3. Clean up temp files afterward to avoid disk clutter.
How do I optimize memory usage when processing large video files (e.g., 10GB MKV)?
Increase PHP memory limit via `ini_set('memory_limit', '256M')` or process files in chunks. For Laravel, use queue workers (Redis/Database) to offload extraction to background jobs and avoid timeouts. Avoid loading all parsers if only a subset of formats is needed.
Is there a way to cache metadata results to avoid reprocessing the same files?
Yes, cache results using Laravel’s cache system (e.g., Redis or file cache). Store metadata as JSON in a `media` table with a `cache_key` column, and check the cache before running getID3. Use `Cache::remember()` for automatic TTL management.
How do I handle errors or failed metadata extractions in Laravel?
Wrap getID3 calls in a try-catch block and log errors via Laravel’s logging system (`Log::error()`). For critical failures, trigger notifications (e.g., Slack or email) or retry via Laravel Queues. Skip non-critical files gracefully using `continue` in loops.
Can getID3 write metadata tags (e.g., update ID3v2 or APE tags) in Laravel?
Yes, getID3 supports writing tags to ID3v1/v2, APE, and VorbisComments. Use its `getid3_lib::Save()` method after modifying metadata. Ensure file permissions allow writes (e.g., `chmod 666` for temp files) and handle exceptions for locked files.
Are there alternatives to getID3 for Laravel that are more modern or Laravel-optimized?
For modern PHP, consider `phpffmpeg` (FFmpeg bindings) or `symfony/mime` for basic metadata. However, getID3 remains unmatched for deep tag support across 50+ formats. If you need Laravel-specific optimizations, wrap getID3 in a service class with caching and queue support.
How do I integrate getID3 with Eloquent for storing metadata in a database?
Create a `Media` model with JSON columns (e.g., `metadata`) to store getID3’s associative array output. Use accessors/mutators to serialize/deserialize data. For large datasets, consider a dedicated `media_metadata` table with normalized columns (e.g., `audio_bitrate`, `image_width`).
What’s the best way to process a directory of 10,000+ media files in Laravel?
Use Laravel’s Storage facade to iterate files, process in batches (e.g., 100 files per job), and queue each batch to a worker. For example: `Storage::disk('s3')->allFiles('media/')->chunk(100)->each(function ($files) { dispatch(new ProcessMediaJob($files)); })`. Monitor progress with Laravel Horizon.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
hexters/coinpayment
rjcodes/rjcms
act-training/laravel-permissions-manager
alimarchal/laravel-chart-of-accounts
babenkoivan/elastic-scout-driver
mkwebdesign/filament-watchdog-v5
renatomarinho/laravel-page-speed
zedmagdy/filament-business-hours
renatovdemoura/blade-elements-ui
devgeek/beacon-admin
benjamin-rqt/data-watcher-bundle
atriumphp/atrium
sandermuller/package-boost-laravel
sandermuller/boost-skills
redaxo/core
yusufgenc/filament-api-forge
l3aro/rating-star-for-filament
leek/filament-subtenant-scope
anil/file-picker
broqit/fields-ai