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(task_Completed);
task.Show();注意引用独立存储空间中的文件可以使用new Uri(@"isostore:/" + fileName); 的方式。
|