从媒体流中读取信息 [英] Reading info from media stream

查看:100
本文介绍了从媒体流中读取信息的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

您好, 


我需要从媒体流中获取信息,我发现了类似的主题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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆