微信语音——判断上传的音频时长




           今天在测试同事的微信平台的发送语音的时候,发现有时候语音能发过来,有时候就不行,经过检查,发现丢掉了检测音频时长(微信里面语言时长要限定在60S内),好吧,我补上,闲着也是闲着~



                    首先是读取语音的时长:


            

<span style="font-size:14px;"> /// <summary>
        /// 获取上传音频的时间长度
        /// </summary>
        /// <param name="strFullUrl">The STR full URL.</param>
        /// <returns>System.String.</returns>
        /// <remarks>Editor:v-liuhch CreateTime:2015/5/15 17:32:57</remarks>
        public string GetLocalVoiceTotalTime(string strFullUrl)
        {

            ShellClass sh = new ShellClass();
            Folder dir = sh.NameSpace(Path.GetDirectoryName(strFullUrl));
            FolderItem item = dir.ParseName(Path.GetFileName(strFullUrl));
            return dir.GetDetailsOf(item, 27); // 获取歌曲时长。

        }</span>



            使用shellclass的时候要先引用COM组件Microsoft Shell Controls And Automation,并将Embed Interop Type 设为False



                    由于上述函数只支持读取本地文件,所以,我们将得到的文件先放在临时文件夹中,判断完成之后立即删除。



             

<span style="font-size:14px;">/// <summary>
        /// 检查上传音频文件的总时间长度是否小于60s
        /// </summary>
        /// <param name="file">The file.</param>
        /// <returns><c>true</c> if XXXX, <c>false</c> otherwise</returns>
        /// <remarks>Editor:v-liuhch CreateTime:2015/5/15 17:34:51</remarks>
        public bool ChkVideoTotalTime(HttpPostedFile file)
        {
            string strTempUrl = Path.GetTempPath() + DateTime.Now.ToString("yyyyMMddHHmmssfff").ToString() + Path.GetExtension(file.FileName);
            file.SaveAs(strTempUrl);//保存到本地临时文件夹

            try
            { 
                string strTotalTime = GetLocalVoiceTotalTime(strTempUrl);  //获取文件时长

                return (Convert.ToDateTime(strTotalTime) - Convert.ToDateTime("00:01:00")).Seconds > 0 ? false : true;

            }
            catch (Exception)
            { return false;}
            finally { System.IO.File.Delete(strTempUrl);}//删除临时文件 
        }
</span>



               之后,在处理文件之前加入如下判断就ok了:


 

<span style="font-size:14px;">  if (int.TryParse(HttpContext.Current.Request.QueryString["MaterialVoice"], out MaterialVoice))//如果是素材里面上传音频的话
                    {
                        if (!ChkVideoTotalTime(files[0]))
                        {
                            return strRequest = "errorTime";  //如果超过60s
                        }
                    }</span>



               PS:别忘了前台验证。











             

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

水田如雅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值