我无法从 uwp App 中的 ID3 标签读取信息
i can't read info from ID3 tags in uwp App
我有一个 c# UWP 应用程序。为了增加休息时间,我需要阅读 DAI 的 ID3 标签。
我正在注册 timeMetadataTracksChanged 事件,然后注册 CueEntered 事件。它们都正确触发,我可以读取 id3 标签 header 但不能读取其余数据。我该怎么做?
private void metadata_ID3CueEntered(TimedMetadataTrack timedMetadataTrack, MediaCueEventArgs args)
{
Debug.WriteLine("metadata_ID3CueEntered");
Debug.WriteLine("id: "+args.Cue.Id.ToString());
var dataCue = args.Cue as DataCue;
Debug.WriteLine("dispatch type: " + timedMetadataTrack.DispatchType);
Debug.WriteLine("trackLabel: " + timedMetadataTrack.Label.ToString());
if (dataCue != null && dataCue.Data != null)
{
// The payload is the raw ID3 bytes found in a TS stream
// Ref: http://id3.org/id3v2.4.0-structure
var dr = Windows.Storage.Streams.DataReader.FromBuffer(dataCue.Data);
var header_version_major = dr.ReadByte();
var header_version_minor = dr.ReadByte();
var header_flags = dr.ReadByte();
var header_tagSize = dr.ReadUInt32();
System.Diagnostics.Debug.WriteLine($"ID3 tag data: major {header_version_major}, minor: {header_version_minor}");
}
}
虽然花了我一天的时间才弄明白,但最终还是很容易。
Convert.ToBase64String(dataCue.Data.ToArray())
我有一个 c# UWP 应用程序。为了增加休息时间,我需要阅读 DAI 的 ID3 标签。
我正在注册 timeMetadataTracksChanged 事件,然后注册 CueEntered 事件。它们都正确触发,我可以读取 id3 标签 header 但不能读取其余数据。我该怎么做?
private void metadata_ID3CueEntered(TimedMetadataTrack timedMetadataTrack, MediaCueEventArgs args)
{
Debug.WriteLine("metadata_ID3CueEntered");
Debug.WriteLine("id: "+args.Cue.Id.ToString());
var dataCue = args.Cue as DataCue;
Debug.WriteLine("dispatch type: " + timedMetadataTrack.DispatchType);
Debug.WriteLine("trackLabel: " + timedMetadataTrack.Label.ToString());
if (dataCue != null && dataCue.Data != null)
{
// The payload is the raw ID3 bytes found in a TS stream
// Ref: http://id3.org/id3v2.4.0-structure
var dr = Windows.Storage.Streams.DataReader.FromBuffer(dataCue.Data);
var header_version_major = dr.ReadByte();
var header_version_minor = dr.ReadByte();
var header_flags = dr.ReadByte();
var header_tagSize = dr.ReadUInt32();
System.Diagnostics.Debug.WriteLine($"ID3 tag data: major {header_version_major}, minor: {header_version_minor}");
}
}
虽然花了我一天的时间才弄明白,但最终还是很容易。
Convert.ToBase64String(dataCue.Data.ToArray())