首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何编写一个方法来打开,开始播放,然后使用WPF中的MediaPlayer返回音频文件的持续时间?

要编写一个方法来打开、开始播放音频文件并返回其持续时间,可以使用WPF中的MediaPlayer类。以下是一个示例方法:

代码语言:csharp
复制
using System;
using System.IO;
using System.Windows.Media;

public static TimeSpan PlayAudioAndGetDuration(string audioFilePath)
{
    if (!File.Exists(audioFilePath))
    {
        throw new FileNotFoundException("音频文件未找到", audioFilePath);
    }

    var mediaPlayer = new MediaPlayer();
    mediaPlayer.Open(new Uri(audioFilePath));
    mediaPlayer.Play();

    return mediaPlayer.NaturalDuration.TimeSpan;
}

这个方法接受一个音频文件路径作为参数,并返回音频文件的持续时间。首先,检查文件是否存在,然后创建一个新的MediaPlayer实例,使用Open方法打开音频文件,并使用Play方法开始播放。最后,返回NaturalDuration属性的TimeSpan值作为音频文件的持续时间。

请注意,这个方法不会等待音频文件播放完成,而是立即返回持续时间。如果需要等待播放完成,可以使用MediaPlayer的MediaEnded事件。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Android应用必要功能——音频播放

start():开始或恢复播放。 stop():停止播放。 pause():暂停播放。 为了让MediaPlayer来装载指定音频文件MediaPlayer提供了如下简单静态方法。...上面两个方法用起来非常方便,但这两个方法每次都会返回新创建MediaPlayer对象,如果程序需要使用MediaPlayer循环播放多个音频文件使用 MediaPlayer静态create()方法就不太合适了...因此可以在创建一个MediaPlayer对象之后,通过为该MediaPlayer绑定监听器来监听相应事件。例如如下代码: ? 下面简单归纳一下使用MediaPlayer播放不同来源音频文件。...(2)调用AssetManager对象openFd(String name)方法打开指定原始资源,该方法返回一个AssetFileDescriptor对象。...)方法时指定打开哪个原始资源,MediaPlayer将总是播放一个原始音频资源。

1.8K20

Android编程实现震动与振铃方法详解

void cancel ()//关闭震动 其中方法三void vibrate (long[] pattern, int repeat)官方翻译是:传递一个int数组,它们是以毫秒为单位打开或关闭振动器持续时间...第一个值表示在打开振动器之前要等待毫秒数。下一个值表示在关闭振动器之前保持振动器毫秒数。随后值在以毫秒为单位持续时间之间交替,以关闭振动器或打开振动器。...——MediaPlayer类 (1)需要用到API void setDataSource (Context context , Uri uri)//根据Uri设置音频,当然还有其他几个重载方法来指定特定音频...void setLooping (boolean looping)//设置是否循环播放 void prepare ()//让MediaPlayer真正去装载音频文件 void start ()//开始或恢复播放.../释放与此MediaPlayer关联资源 (2)使用实例 同样写一个工具类封装 //开始播放 public static void playRing(final Activity activity){

2.1K10

Android多媒体应用使用MediaPlayer播放音频

通过AndroidAPI提供相关方法,在Android可以实现音频与视频播放。 下面介绍使用MediaPlayer播放音频 在Android,提供了MediaPlayer类来播放音频。...使用MediaPlayer播放音频比较简单,只需要创建该类对象,并为其指定要播放音频文件然后调用该类start()方法即可,下面进行详细介绍。.../sound/bg.mp3”); 使用creat()方法时,已经加载了音频,但是用无参构造方法来创建MediaPlayer对象时,需要单独指定要装载资源,这可以使用MediaPlayersetDataSource...使用无参构造方法来创建MediaPlayer对象并装载指定音频文件,可以使用下面的代码: MediaPlayer player=new MediaPlayer(); try { player.setDataSource...(); 下面做一个小实例,实现包括播放、暂停/继续和停止功能简易音乐播放器 将要播放音频文件上传到SD卡Music目录,这里要播放音频文件为Whistle.mp3 目录如图 布局文件,包括一个文本信息显示控件和三个按钮

1.5K40

C#开发可播放摄像头及任意格式视频播放

前言 本文主要讲述,在WPF,借助Vlc.DotNet调用VLC类库,实现视频播功能,下面我们先来做开发前准备工作。...现在我们回到我们刚刚创建项目WpfVLC,进入文件目录,打开debug文件夹,然后我们在其目录下创建一个文件夹libvlc,如下: ?...然后,在在liblic下建立一个文件夹win-x64,如下: ? 再然后,我们将刚刚复制vlc三个文件,放到这个文件夹下,如下: ? 到此,我们准备工作就完成了,现在开始编码。...使用Vlc.DotNet播放视频 现在,我们进入项目的代码开发。 首先我们将项目设置为64位项目,因为我们使用VLC是64。 ? 然后,我们打开MainWindow页面。...播放其他视频源 播放RTSP 通过上面的代码编写,我们了解到了,在C#里使用VLC播放视频代码非常简单,只要在Play函数写入地址即可。

2.8K30

Android编程实现播放音频方法示例

分享给大家供大家参考,具体如下: 在 Android 播放音频文件一般都是使用 MediaPlayer 类来实现,它对多种格式音 频文件提供了非常全面的控制方法,从而使得播放音乐工作变得十分简单...首先需要创建出一个 MediaPlayer 对象,然后调用 setDataSource()方法来设置音频文件路径,再调用 prepare()方法使 MediaPlayer 进入到准备状态,接下来调用...下面就让我们通过一个具体例子来学习一下吧,新建一个 PlayAudioTest 项目,然后修改 activity_main.xml 代码,如下所示: <LinearLayout xmlns:android...= null) { mediaPlayer.stop(); mediaPlayer.release(); } } } 可以看到,在类初始化时候我们就创建了一个 MediaPlayer 实例,然后在...在 initMediaPlayer() 方法,首先是通过创建一个 File 对象来指定音频文件路径,从这里可以看出,我们需要 事 先 在 SD 卡 根 目 录 下 放 置 一 个 名 为 music.mp3

1.4K21

Android-MediaPlayer

MediaPlayer 突然觉得这个音乐播放有点意思,我们来做一下吧。 首先我们来一个名为MediaPlayerDemo项目。...在类初始化时候就创建了一个MediaPlayer实例,然后在onCreate()方法中进行了运行时权限处理,动态申请WRITE_EXTERNAL_STORAGE权限,因为我们音乐文件是放在手机SD...用户同意授权之后就会调用initMediaPlayer()方法为MediaPlayer对象进行初始化操作,在initMediaPlayer()方法,首先是通过创建一个File(文件)对象来指定音频文件路径...,所以我们需要在SD卡根目录下面放置一个名为music.mp3音频文件。...下面的点击事件我们对每个按钮进行判断,当点击Play按钮时会进行判断,如果当前MediaPlayer没有正在播放音频就调用start()方法开始播放

66220

android学习笔记----关于音频焦点Audio Focus

AUDIOFOCUS_GAIN_TRANSIENT表示我们要请求 Audio Focus并使用很短时间,因为我们音频文件非常短,只播放几秒钟,所以很合适。...我们应该继续播放音频文件。 对于AUDIOFOCUS_LOSS,用于表示未知持续时间音频焦点丢失。...此时,您可以将音量恢复到正常水平或重新开始播放。 永久失去焦点 如果音频焦点丢失是永久性(AUDIOFOCUS_LOSS),另一个应用程序正在播放音频。...您应用应立即暂停播放(或者释放资源),因为它不会收到AUDIOFOCUS_GAIN回调。要重新开始播放,用户必须采取明确操作,例如在通知或应用UI播放传输控件。...当某项内容被点击后,我希望使用 AudioManager 来请求 Audio Focus,然后再设置 MediaPlayer播放声音。所以在ListView点击监听事件里面操作。

1.4K10

Android MediaPalyer

可以使用MediaPlayer api从存储在应用程序资源(原始资源)媒体文件、文件系统独立文件或通过网络连接到达数据流播放音频或视频。...MediaPlayer 生命周期 这张图很好向我们展示MediaPlayer各个生命周期,以及处于那种状态如何变换到另一种状态,必须正确使用一个状态,以及状态之间转换,否则就会报IllegalStateException...下面根据官方文档翻译以及结合自己理解 Idle 状态:当使用new()方法创建一个MediaPlayer对象或者调用了其reset()方法时,该MediaPlayer对象处于idle状态。...视频尺寸监听 setScreenOnWhilePlaying 设置是否使用SurfaceHolder来保持屏幕显示 setVolume 设置音量 start 开始播放 stop 停止播放 MedialPlayer...工作流程 MediaPlayer工作流程是这样: 首先创建MediaPlaer对象; * 然后调用setDataSource()方法来设置音频文件路径; 再调用prepare()方法使MediaPlayer

97611

android学习笔记----来看看MediaPlayer释放资源release()使用

方法,使用一个异步回调,当 MediaPlayer 播放完歌曲后,我会获得通知,在此期间,我可以执行其他操作,例如对用户其他按钮点击操作做出响应,并等待着获得回调。...当音频文件完成播放时,要调用刚刚添加这个 releaseMediaPlayer() 方法,这意味着需要对 MediaPlayer注册一个 onCompletionListener,注意,在 MediaPlayer...在 MediaPlayer 被创建初始化以便播放不同声音前,也要释放 MediaPlayer 资源,这么做是为了配置播放不同音频文件而准备。...,那么我们需要停止播放并释放该 MediaPlayer 资源,然后立即为当前歌曲创建一个 MediaPlayer 对象。...mMediaPlayer = null; } } } 这样无论是该 Activity 完成音频文件播放还是被停止了,我们都可以释放该 Activity MediaPlayer

90310

设计模式-适配器模式

下面是一个适配器模式Java代码示例:首先定义一个目标接口:public interface MediaPlayer { public void play(String audioType, String...,它通过目标接口调用适配器方法来与被适配对象进行交互:public class AudioPlayer implements MediaPlayer { MediaAdapter mediaAdapter...如果传入文件类型是 mp3,则直接在 AudioPlayer 类播放,否则就通过适配器模式实现播放其他格式音频文件。...当需要播放不支持音频格式时,AudioPlayer 类会创建一个 MediaAdapter 对象,该对象可以将不支持音频格式转换成支持格式,然后调用 MediaPlayer 接口 play 方法来播放该格式音频文件...使用适配器模式好处是可以将两个不兼容接口进行连接,从而实现代码复用和扩展性提高。如果有新音频格式需要支持,只需要实现一个适配器即可。

28441

Android编程实现播放视频方法示例

本文实例讲述了Android编程实现播放视频方法。分享给大家供大家参考,具体如下: 播放视频文件其实并不比播放音频文件复杂,主要是使用 VideoView 类来实现。...那么我们还是通过一个实际例子来学习一下吧,新建 PlayVideoTest 项目,然后修改activity_main.xml 代码,如下所示: <LinearLayout xmlns:android...首先在 onCreate()方法仍然是去获取一些控件实例,然后调用了 initVideoPath()方法来设置视频 文件路径,这里我们需要事先在 SD 卡根目录下放置一个名为 movie.3gp...其实 VideoView 只是帮我们做了一个很好封装而已,它背 后仍然是使用 MediaPlayer 来对视频文件进行控制。...所 以,如果想要仅仅使用 VideoView 就编写一个功能非常强大视频播放器是不太现实

86351

Android-MediaPlayer(2)加进度条和时间显示

SeekBar使用显示歌曲播放进度及时间 上一篇:Android MediaPlayer 我们之前播放音乐时候都会有进度条,今天我们就来加一个进度条,并显示你播放进度和当前歌曲时间。...我们想一下,我们已经知道这个音频文件放在手机里面了,也已经可以播放了,那么我要用进度条来显示当前歌曲播放进度该怎么做,并且你可以通过手指拖拽这个Seekbar来到你想要歌曲片段出,并且松手就要播放音乐...(file.getPath());//指定音频文件路径 mediaPlayer.prepare();//让MediaPlayer进入到准备状态 }catch (...(position / 1000)); tv_end.setText(calculateTime(duration2)); } 通过定义一个两个值,一个播放时间,一个播放位置,开始时间通过刚才算法得出赋值给...(file.getPath());//指定音频文件路径 mediaPlayer.prepare();//让MediaPlayer进入到准备状态 }catch (

5.2K20

【愚公系列】2023年11月 WPF控件专题 MediaElement控件详解

一、MediaElement控件详解MediaElement控件是WPF一个重要控件,用于显示媒体文件,包括音频和视频。...使用MediaElement控件非常简单,只需要指定要播放媒体文件路径,然后在代码中使用相应播放控制方法即可。同时,可以通过设置属性来自定义控件外观、行为和功能。...下面是一个简单MediaElement控件使用示例:<Button Content..., RoutedEventArgs e){ mediaPlayer.Stop();}在上面的示例,MediaElement控件指定了要播放视频文件路径,然后当点击“播放”和“停止”按钮时,分别调用了...MediaElement控件是WPF中非常有用一个控件,可以方便地实现多媒体文件播放和控制,如果需要在WPF应用程序播放音频和视频,可以考虑使用它。

46611

Android SoundPool实现简短小音效

一、SoundPool介绍 我们之前有用过MediaPlayer进行播放音频文件,但是当我们应用程序需要经常播放密集、短促音效时,调用MediaPlayer则会占用系统大量资源,且延时时间较长,...这种简单音乐播放就运用到了我们SoundPool,它使用音效池概念来管理短促音效,例如它可以开始就加载20 个音效,通过他们id进行管理与播放。...二、使用示例 注意:使用时我们需要在res目录下新建一个文件夹raw(这个名字是固定,必须这样写),将音乐放在该文件夹下面。 ?...,返回音频文件id int id=spool.load(getApplicationContext(),R.raw.mali,1); return id; } @Override...rate      playback rate (1.0 = normal playback, range 0.5 to 2.0)属性设置或返回音频/视频的当前播放速度 以上就是本文全部内容,希望对大家学习有所帮助

75120

《移动互联网技术》第九章 感知与多媒体: 了解质感设计基本原则和设计方法

第九章 感知与多媒体 本章小结: 1**、本单元学习目的** 通过学习如何使用移动设备各种传感器和硬件设备来获取环境信息,掌握如何使用GPS实现定位功能,音视频播放功能,摄像头拍照功能;掌握界面设计原则...调用LocationManagergetProviders 函数获取所有可用位置提供器,然后判断GPS是否打开,如果无法使用GPS,则看看是否能通过网络来定位。...(2)使用VideoView控件来播放视频。在布局文件设置VideoView控件,然后编写视频播放控制函数来控制播放。...(3)使用系统MediaPlayer类和SurfaceView控件来播放视频。 下面用VideoView控件来实现一个简易视频播放器。...答案:在Android开发中经常使用MediaPlayer播放音频文件,但是MediaPlayer存在一些不足:资源占用量较高、延迟时间较长、不支持多个音频同时播放等。

7510
领券