从媒体流中读取信息 [英] Reading info from media stream
本文介绍了从媒体流中读取信息的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
您好,
我需要从媒体流中获取信息,我发现了类似的主题http://social.msdn.microsoft.com/Forums/en -US / csharpgeneral / thread / 3d2e9e48-8a02-419f-91e1-c61faf28bcf7 /有答案,但FileStream不适用于Windows应用商店应用,我可以使用什么来
从Windows Stor App中的媒体流获取信息?
解决方案
使用帖子中链接的方法,这对我有用:
< pre class ="prettyprint"> private async void Button_Click(object sender,RoutedEventArgs e)
{
FileOpenPicker openPicker = new FileOpenPicker();
openPicker.ViewMode = PickerViewMode.Thumbnail;
openPicker.SuggestedStartLocation = PickerLocationId.MusicLibrary;
openPicker.FileTypeFilter.Add(" .mp3");
byte [] b =新字节[128];
StorageFile file = await openPicker.PickSingleFileAsync();
if(file!= null)
{
var stream = await file.OpenAsync(Windows.Storage.FileAccessMode.Read);
var size = stream.Size;
using(var inputStream = stream.GetInputStreamAt(stream.Size - 128))
{
DataReader dataReader = new DataReader(inputStream);
uint numBytesLoaded = await dataReader.LoadAsync(128);
dataReader.ReadBytes(b);
String sFlag = System.Text.UTF8Encoding.UTF8.GetString(b,0,3).TrimEnd(new char [] {'\ 0'});
if(sFlag.CompareTo(" TAG")== 0)
{
MetaData.Text ="找到标签! " + Environment.NewLine;
//获得歌曲的标题;
var sTitle = System.Text.UTF8Encoding.UTF8.GetString(b,3,30).TrimEnd(new char [] {'\ 0'});
MetaData.Text + =" Title:" + sTitle + Environment.NewLine;
//得到歌手;
var sSinger = System.Text.UTF8Encoding.UTF8.GetString(b,33,30).TrimEnd(new char [] {'\ 0'});
MetaData.Text + ="歌手:" + sSinger + Environment.NewLine;
//获得专辑;
var sAlbum = System.Text.UTF8Encoding.UTF8.GetString(b,63,30).TrimEnd(new char [] {'\ 0'});
MetaData.Text + ="相册:" + sAlbum + Environment.NewLine;
//获得发布年份;
var sYear = System.Text.UTF8Encoding.UTF8.GetString(b,93,4).TrimEnd(new char [] {'\ 0'});
MetaData.Text + =" Year:" + sYear + Environment.NewLine;
//获取评论;
var sComm = System.Text.UTF8Encoding.UTF8.GetString(b,97,30).TrimEnd(new char [] {'\ 0'});
MetaData.Text + ="评论:" + sComm + Environment.NewLine;
}
}
}
其他
{
MetaData.Text ="操作已取消。" ;;
}
}
Hello,
I need to get info from a media stream, I found similar topic http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/3d2e9e48-8a02-419f-91e1-c61faf28bcf7/ with answer, but FileStream is not presented for Windows Store Apps, what can I use to get info from media stream in the Windows Stor App?
解决方案
Using the method from the link in your post, here is what works for me:
private async void Button_Click(object sender, RoutedEventArgs e) { FileOpenPicker openPicker = new FileOpenPicker(); openPicker.ViewMode = PickerViewMode.Thumbnail; openPicker.SuggestedStartLocation = PickerLocationId.MusicLibrary; openPicker.FileTypeFilter.Add(".mp3"); byte[] b = new byte[128]; StorageFile file = await openPicker.PickSingleFileAsync(); if (file != null) { var stream = await file.OpenAsync(Windows.Storage.FileAccessMode.Read); var size = stream.Size; using (var inputStream = stream.GetInputStreamAt(stream.Size - 128)) { DataReader dataReader = new DataReader(inputStream); uint numBytesLoaded = await dataReader.LoadAsync(128); dataReader.ReadBytes(b); String sFlag = System.Text.UTF8Encoding.UTF8.GetString(b, 0, 3).TrimEnd(new char[] { '\0' }); if (sFlag.CompareTo("TAG") == 0) { MetaData.Text = "Tag is found! " + Environment.NewLine; //get title of song; var sTitle = System.Text.UTF8Encoding.UTF8.GetString(b, 3, 30).TrimEnd(new char[] { '\0' }); MetaData.Text += "Title: " + sTitle + Environment.NewLine; //get singer; var sSinger = System.Text.UTF8Encoding.UTF8.GetString(b, 33, 30).TrimEnd(new char[] { '\0' }); MetaData.Text += "Singer: " + sSinger + Environment.NewLine; //get album; var sAlbum = System.Text.UTF8Encoding.UTF8.GetString(b, 63, 30).TrimEnd(new char[] { '\0' }); MetaData.Text += "Album: " + sAlbum + Environment.NewLine; //get Year of publish; var sYear = System.Text.UTF8Encoding.UTF8.GetString(b, 93, 4).TrimEnd(new char[] { '\0' }); MetaData.Text += "Year: " + sYear + Environment.NewLine; //get Comment; var sComm = System.Text.UTF8Encoding.UTF8.GetString(b, 97, 30).TrimEnd(new char[] { '\0' }); MetaData.Text += "Comment: " + sComm + Environment.NewLine; } } } else { MetaData.Text = "Operation cancelled."; } }
这篇关于从媒体流中读取信息的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文