使用php提取文件的元数据
Extracting metadata of a file using php
现在有很多种文件格式(音频、视频、图像、文本)。我希望写一个php代码,可以让我的文件的元数据,无论其格式。
获取基本元数据(文件名、文件大小、文件类型和最后修改日期),可以使用文件系统API:
<input type="file" id="files" name="files[]" multiple />
<output id="list"></output>
<script>
function handleFileSelect(evt) {
var files = evt.target.files; // FileList object
// files is a FileList of File objects. List some properties.
var output = [];
for (var i = 0, f; f = files[i]; i++) {
output.push('<li><strong>', escape(f.name), '</strong> (', f.type || 'n/a', ') - ',
f.size, ' bytes, last modified: ',
f.lastModifiedDate ? f.lastModifiedDate.toLocaleDateString() : 'n/a',
'</li>');
}
document.getElementById('list').innerHTML = '<ul>' + output.join('') + '</ul>';
}
document.getElementById('files').addEventListener('change', handleFileSelect, false);
</script>
但是,我希望提取每一个该死的可能的东西我可以从文件中提取(每一个可能的元数据)。
示例:对于jpg图像,在提取其元数据时,我得到(使用exif标签):
FILE.FileName: idfo1.jpg
FILE.FileDateTime: 1369637595
FILE.FileSize: 126948
FILE.FileType: 2
FILE.MimeType: image/jpeg
FILE.SectionsFound: ANY_TAG, IFD0, EXIF
COMPUTED.html: width="915" height="1246"
COMPUTED.Height: 1246
COMPUTED.Width: 915
COMPUTED.IsColor: 1
COMPUTED.ByteOrderMotorola: 1
COMPUTED.ApertureFNumber: f/2.6
COMPUTED.UserComment:
IFD0.ImageWidth: 2048
IFD0.ImageLength: 1536
IFD0.Make: SAMSUNG
IFD0.Model: GT-S5830
IFD0.Software: S5830DXKPD
IFD0.DateTime: 2012:06:06 10:18:24
IFD0.YCbCrPositioning: 1
IFD0.Exif_IFD_Pointer: 2232
IFD0.UndefinedTag:0xEA1C: ê
EXIF.ExposureTime: 1/229
EXIF.FNumber: 26/10
EXIF.ExposureProgram: 3
EXIF.ISOSpeedRatings: 50
EXIF.ExifVersion: 0220
EXIF.DateTimeOriginal: 2012:06:06 10:18:24
EXIF.DateTimeDigitized: 2012:06:06 10:18:24
EXIF.MaxApertureValue: 30/10
EXIF.MeteringMode: 3
EXIF.Flash: 0
EXIF.FocalLength: 355/100
EXIF.UserComment:
EXIF.ColorSpace: 1
EXIF.ExifImageWidth: 2048
EXIF.ExifImageLength: 1536
EXIF.ExposureMode: 0
EXIF.WhiteBalance: 0
EXIF.SceneCaptureType: 0
EXIF.UndefinedTag:0xEA1C: ê
如果可能的话,我甚至希望得到地理标记数据。
同样,对于视频和音频类型的文件,我希望得到:- 比特率(音频和视频)
- 文件创建日期 论>
- 框架尺寸等
是否有任何php或javascript代码可以直接为我做这个?
有一个名为getid3()的类用于许多媒体类型。它使用起来非常简单,功能非常强大。U可以对元数据文件进行读写。
还有一些javascript类可以从文件中读取元数据,如exif,id3 .
搜索"read exif data with javascript"或"JavaScript ID3 Reader"
如果你有自己的服务器,你也可以使用一些命令行工具(你从php执行),可以读取exif,id3标签和新的mp4标签,如atomicparsley
这里是你可以用getid3和php做的事情的列表
Tag formats:
ID3v1 (v1.0 & v1.1)
ID3v2 (v2.2, v2.3 & v2.4)
APE tags (v1 & v2)
(Ogg) VorbisComment
Lyrics3 (v1 & v2)
IDivX
Lossy Audio-only formats:
MP3, MP2, MP1 (MPEG-1, layer III/II/I audio, including Fraunhofer, Xing and LAME VBR/CBR headers)
Ogg Vorbis
Musepack (versions SV4-SV8)
AAC & MP4
AC-3
DTS (including DTS-in-WAV)
RealAudio
VQF
Speex
Digital Speech Standard (DSS)
Audible Audiobooks
Lossless Audio-only formats:
WAV (including extended chunks such as BWF and CART)
AIFF
Monkey's Audio
FLAC & OggFLAC
LA (Lossless Audio)
OptimFROG
WavPack
TTA
LPAC (Lossless Predictive Audio Compressor)
Bonk
LiteWave
Shorten
RKAU
Apple Lossless Audio Codec
RealAudio Lossless
CD-audio (*.cda)
NeXT/Sun .au
Creative .voc
AVR (Audio Visual Research)
MIDI
Audio-Video formats:
AVI
Matroska (WebM)
ASF (ASF, Windows Media Audio (WMA), Windows Media Video (WMV))
MPEG-1 & MPEG-2
Quicktime (including MP4)
RealVideo
NSV (Nullsoft Streaming Video)
Graphic formats:
JPEG
PNG
GIF
BMP (Windows & OS/2)
TIFF
SWF (Flash)
PhotoCD
Data formats:
ZIP
TAR
GZIP
ISO 9660 (CD-ROM image)
CUEsheets (.cue)
SZIP
Metadata types:
EXIF (Exchangeable image file format)
IPTC
XMP (Adobe Extensible Metadata Platform)
Formats identified, but not parsed:
PDF
RAR
MS Office (.doc, .xls, etc)
不,没有这样的事情!你必须自己写代码,因为有上千种格式的音频&视频,不同的编解码器,不同的压缩,模式等。你必须为它们每一个写你自己的代码。
例如,基于所使用的编解码器,视频AVI文件可能包含许多不同的元数据-取决于编解码器(有数百种)。
可能你需要大量的经验和数月的编码和测试,但肯定没有快速的解决方案。
你可能会找到一些基本的工具,但没有什么能找到所有可能的东西在你可能使用的每一个文件类型。
如果我错了,你可以找到一些库来做,请分享,但逻辑上说,你想要的不存在
- 如何使用.log数据文件显示EXT-js网格
- 访问Twilio短信元数据
- Firebase-返回用户uid并将用户元数据值设置为不同的节点
- Chart.js2.X中的条形值-数据集元数据未定义
- E4X中是否有一种方法可以将基元数据类型的XMLList转换为类似于Array.join()的Array
- 获取javascript中的元数据属性
- 从 Google 云端硬盘请求文件元数据时缺少“downloadUrl”参数
- 如何在上传前在浏览器中去除图像元数据(javascript)
- Extjs 4,如何使用单个Json文件为多个动态网格发送多个元数据
- 从S3获取视频文件元数据
- Cordova 的文件 API 中的元数据
- 使用 Web 应用程序访问本地文件系统并提取文件元数据
- 将包含内容和元数据的文件上传到谷歌文档会返回400无效/错误请求
- 获取mp3文件元数据
- 使用php提取文件的元数据
- 统计GridFS中包含元数据的文件
- 通过WebRTC数据通道发送带有元数据的文件块
- 在NodeJS中使用gridfs通过元数据删除文件
- 谷歌驱动器文件元数据读取
- 用Javascript从. epub文件中获取元数据