Windows Phone实用开发技巧(35):保存音乐为铃声
在Windows Phone 7.5 中,我们在程序中可以将某段音乐保存为手机的铃声。但是保存的时候对音乐文件有一些限制:
1. 必须是MP3或者WMA格式的文件
2. 铃声文件的长度必须小于40秒
3. 铃声文件没有版权限制
4. 铃声文件大小必须小于1M
因为在实际处理中,我们想要保存为铃声的文件很有可能是一首完整的歌曲,大小会超过1M。那么我们如何才能将歌曲高潮部分保存为铃声呢? 比如《上海滩》肯定想保存什么“浪奔,浪涌”的部分。
根据我的一些非专业的理解:一首歌曲一般有两个轮回,高潮部分一般出现在每个轮回的最后,即大致一首歌四分之一和三分之一之间。那我们就可以只保存那一部分为另一个文件即可。
下面的Demo演示了如何从本地的一首歌里面截取部分保存为铃声的。
首先来看看截取的代码:
private void SaveIntoIso() { Stream stream = App.GetResourceStream(new Uri("mangoRingtones;component/beat_it.mp3", UriKind.Relative)).Stream; //read some of them stream.Seek(stream.Length / 4, 0); byte[] buffer = new byte[stream.Length / 3 - stream.Length / 4]; stream.Read(buffer, 0, buffer.Length); //save into isostore using (var isostore = IsolatedStorageFile.GetUserStoreForApplication()) { using (var inp = isostore.OpenFile(fileName, FileMode.OpenOrCreate, FileAccess.Write)) { inp.Write(buffer, 0, buffer.Length); } } stream.Close(); stream.Dispose(); }
从本地读取流,取其部分保存为另一个文件。
那么再来看看,我们如何在Windows Phone 中将音频文件保存为手机铃声。
SaveRingtoneTask task = new SaveRingtoneTask(); task.DisplayName = "beat it"; task.Source = new Uri(@"isostore:/" + fileName); task.Completed += new EventHandler<TaskEventArgs>(task_Completed); task.Show();
注意引用独立存储空间中的文件可以使用new Uri(@"isostore:/" + fileName); 的方式。
你可以在这里找到本篇文章的源代码。
如果您喜欢我的文章,您可以通过支付宝对我进行捐助,您的支持是我最大的动力https://me.alipay.com/alexis
作者:Alexis
出处:http://www.cnblogs.com/alexis/
关于作者:专注于Windows Phone 7、Silverlight、Web前端(jQuery)。
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,如有问题,可以通过shuifengxuATgmail.com 联系我,非常感谢。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库