Windows Phone实用开发技巧(35):保存音乐为铃声

本文介绍在Windows Phone 7.5上如何从一首完整的歌曲中截取高潮部分并将其转换为不超过40秒的铃声。文章提供了具体代码示例,并详细解释了音乐文件的格式、长度和版权等限制条件。

在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://www.cnblogs.com/alexis/archive/2012/02/05/save_music_as_ringtone.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值