Allows you easily get meta information about any media file with unified interface.
It can retrieve following information:
- For any audio: length, bitRate, sampleRate, channels
- For any video: length, width, height, frameRate
- For any container: number of streams, type of streams, formats of streams
Table of contents:
- Usage
- Supported formats
- API
- Why not using getID3?
- Technical details
try {
$media = wapmorgan\MediaFile\MediaFile::open('123.mp3');
// for audio
if ($media->isAudio()) {
// calls to AudioAdapter interface
echo 'Duration: '.$media->getAudio()->getLength().PHP_EOL;
echo 'Bit rate: '.$media->getAudio()->getBitRate().PHP_EOL;
echo 'Sample rate: '.$media->getAudio()->getSampleRate().PHP_EOL;
echo 'Channels: '.$media->getAudio()->getChannels().PHP_EOL;
}
// for video
else {
// calls to VideoAdapter interface
echo 'Duration: '.$media->getVideo()->getLength().PHP_EOL;
echo 'Dimensions: '.$media->getVideo()->getWidth().'x'.$media->getVideo()->getHeight().PHP_EOL;
echo 'Framerate: '.$media->getVideo()->getFramerate().PHP_EOL;
}
} catch (wapmorgan\MediaFile\Exception $e) {
// not a media or file is corrupted
if ($e instanceof wapmorgan\MediaFile\FileAccessException)
echo 'File '.$file.' is not a media file'.PHP_EOL;
else {
echo 'File is propably corrupted: '.$e->getMessage().PHP_EOL;
}
}
-
Audio
- wav
- flac
- aac
- ogg
- mp3
- amr
- wma
-
Video
- avi (also as container)
- wmv (also as container)
- mp4 (also as container)
Other formats support coming soon.
wapmorgan\wapmorgan\MediaFile
Method | Description | Notes |
---|---|---|
static open($filename) |
Detects file type and format and calls constructor with these parameters. | Throws an \Exception if file is not a media or is not accessible. |
__construct($filename, $type, $format) |
Opens file and reads metadata. | Available $type values: MediaFile::AUDIO , MediaFile::VIDEO . Available $format values see below. |
isAudio() |
Returns true if media is just audio. | |
isVideo() |
Returns true if media is a video with audio. | |
isContainer() |
Returns true if media is also a container (can store multiple audios and videos). | |
getType() |
Returns media file type. | |
getFormat() |
Returns media file format. | |
getAudio() |
Returns an AudioAdapter interface for audio. |
|
getVideo() |
Returns an VideoAdapter interface for video. |
Available formats:
- For
MediaFile::AUDIO
:
MediaFile::WAV |
MediaFile::FLAC |
MediaFile::AAC |
MediaFile::OGG |
---|---|---|---|
MediaFile::MP3 |
MediaFile::AMR |
MediaFile::WMA |
- For
MediaFile::VIDEO
:
MediaFile::AVI |
MediaFile::WMV |
MediaFile::MP4 |
---|---|---|
wapmorgan\MediaFile\AudioAdapter
Method | Description |
---|---|
getLength() |
Returns audio length in seconds and microseconds as float. |
getBitRate() |
Returns audio bit rate as int. |
getSampleRate() |
Returns audio sampling rate as int. |
getChannels() |
Returns number of channels used in audio as int. |
isVariableBitRate() |
Returns whether format support VBR and file has VBR as boolean. |
isLossless() |
Returns whether format has compression lossless as boolean. |
wapmorgan\MediaFile\VideoAdapter
Method | Description |
---|---|
getLength() |
Returns video length in seconds and microseconds as float. |
getWidth() |
Returns width of video as int. |
getHeight() |
Returns height of video as int. |
getFramerate() |
Returns video frame rate of video as int. |
wapmorgan\MediaFile\ContainerAdapter
Method | Description |
---|---|
countStreams() |
Returns number of streams in container as int. |
countVideoStreams() |
Returns number of video streams as int. |
countAudioStreams() |
Returns number of audio streams as int. |
getStreams() |
Returns streams information as array. |
getID3 library is very popular and has a lot of features, but it's old and slow. Following table shows comparation of analyzing speed of fixtures, distributed with first release of MediaFile:
File | getID3 | MediaFile | Speed gain |
---|---|---|---|
video.avi | 0.215 | 0.126 | 1.71x |
video.mp4 | 3.055 | 0.429 | 7.12x |
video.wmv | 0.354 | 0.372 | 0.95x |
audio.aac | 0.560 | 0.262 | 2.13x |
audio.amr | 8.241 | 12.248 | 0.67x |
audio.flac | 1.880 | 0.071 | 26.41x |
audio.m4a | 13.372 | 0.169 | 79.14x |
audio.mp3 | 10.931 | 0.077 | 141.54x |
audio.ogg | 0.170 | 0.096 | 1.78x |
audio.wav | 0.114 | 0.070 | 1.64x |
audio.wma | 0.195 | 0.158 | 1.23x |