如何通过fileReference从本地上传的mp3中提取id3标签? (AS3)

Posted

技术标签:

【中文标题】如何通过fileReference从本地上传的mp3中提取id3标签? (AS3)【英文标题】:How to extract id3 tag from locally uploaded mp3 by fileReference? (AS3) 【发布时间】:2014-07-23 05:33:58 【问题描述】:

在 AS3(用于闪存)中,我们可以使用 FileReference 类浏览本地 mp3 文件并将数据传递给 ByteArray。 但是,这种方式如何提取id3标签呢?

(有一个外部库http://www.emanuelz.com.mx/blog/parsing-local-mp3-with-filereference-and-audiofx-library-106 可以将字节数组解析为声音对象,但是缺少 id3 标签。当您调用 sound.id3.songName 时,它​​返回 NULL。)

【问题讨论】:

【参考方案1】:

您应该加载那个ByteArray,然后创建一个新的Sound 对象,在其上创建一个ID3 事件监听器,然后调用loadCompressedDataFromByteArray(),这将使Flash 将加载的文件解析为MP3,如果它有 ID3 标签,事件将被调度,允许您读取 id3 数据。

var themp3:Sound=new Sound();
themp3.addEventListener(Event.ID3,getid3);
themp3.loadCompressedDataFromByteArray(thefile,thefile.length);
// thefile is the ByteArray in question
function getid3(e:Event):void 
    if (e.target is Sound) 
        var s:Sound=e.target as Sound;
        trace(s.id3.songName);
    

【讨论】:

好问题。还有另一种更高级/手动的方法(字节读取),我稍后会添加作为答案(以防未来的读者需要它)。为什么?只是 Flash 的 ID3 解析器不能很好地处理某些事情,例如日语 .songName 将是 □□□□ 而不是 チェリ

以上是关于如何通过fileReference从本地上传的mp3中提取id3标签? (AS3)的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET Web API,从 Flex FileReference 上传时 MIME 多部分流意外结束

使用AS3中的FileReference API上载MP3&ŧ039;s

在 c# 中编辑从 asp.net 上传的文件的 mp3

Ueditor上传本地音频MP3

在 Flex 中为 PNG 图像识别由 FileReference 对象编码的数据的性质

如何使用 express、mongoose 将 mp3 上传到 mongodb