using System.Windows.Media;
using Newtonsoft.Json;
using System.ComponentModel; namespace ConsoleApp378
{
class Program:INotifyPropertyChanged
{
static void Main(string[] args)
{
Program obj = new Program();
obj.MediaPlayerDemo();
Console.ReadLine();
} static MediaPlayer mp3Player = new MediaPlayer();
void MediaPlayerDemo()
{
string mp3Path = Directory.GetCurrentDirectory() + @"\MediaResource\StarSky.mp3";
mp3Player.Open(new Uri(mp3Path));
mp3Player.MediaEnded += Mp3Player_MediaEnded;
Console.WriteLine(" Start:Y;Exit:Q;Amplify:A;Decrease:D;Pause:P;C:Acclerate;R:Replay from begining!");
string line;
while ((line = Console.ReadLine()) != null)
{
ControlMediaPlayer(line[]);
}
} private bool isMP3PlayerCompleted = false; public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(string propName)
{
if(PropertyChanged!=null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propName));
}
} public bool ISMP3PlayerCompleted
{
get
{
return isMP3PlayerCompleted;
}
set
{
if(value!=isMP3PlayerCompleted)
{
isMP3PlayerCompleted = value;
OnPropertyChanged("ISMP3PlayerCompleted");
} if(isMP3PlayerCompleted)
{
MessageBox.Show("Finished!");
}
}
}
private void Mp3Player_MediaEnded(object sender, EventArgs e)
{
ISMP3PlayerCompleted = true;
} void ControlMediaPlayer(char c)
{
if (mp3Player != null && mp3Player.HasAudio)
{
string jsonContent = "";
switch (c)
{
//Start
case 'Y':
mp3Player.Play();
jsonContent = JsonConvert.SerializeObject(mp3Player, Formatting.Indented);
ShowMsg(jsonContent);
break; //Exit
case 'Q':
mp3Player.Stop();
jsonContent = JsonConvert.SerializeObject(mp3Player, Formatting.Indented);
ShowMsg(jsonContent);
break; //Amplify
case 'A':
mp3Player.Volume = mp3Player.Volume + 0.1;
jsonContent = JsonConvert.SerializeObject(mp3Player, Formatting.Indented);
ShowMsg(jsonContent);
break; //Decrease
case 'D':
mp3Player.Volume = mp3Player.Volume - 0.1;
jsonContent = JsonConvert.SerializeObject(mp3Player, Formatting.Indented);
ShowMsg(jsonContent);
break; //Pause
case 'P':
mp3Player.Pause();
jsonContent = JsonConvert.SerializeObject(mp3Player, Formatting.Indented);
ShowMsg(jsonContent);
break; //Accelerate
case 'C':
mp3Player.SpeedRatio += 0.3;
jsonContent = JsonConvert.SerializeObject(mp3Player, Formatting.Indented);
ShowMsg(jsonContent);
break; case 'L':
mp3Player.SpeedRatio -= 0.3;
jsonContent = JsonConvert.SerializeObject(mp3Player, Formatting.Indented);
ShowMsg(jsonContent);
break; //Replay
case 'R':
mp3Player.Position = default(TimeSpan);
mp3Player.Play();
jsonContent = JsonConvert.SerializeObject(mp3Player, Formatting.Indented);
ShowMsg(jsonContent);
break;
}
}
} void ShowMsg(string msg)
{
Console.WriteLine(msg);
}
void ShowStatus(MediaPlayer mPlayer)
{
if(mPlayer!=null)
{
string msg = $"Position:{mp3Player.Position},SpeedRatio:{mp3Player.SpeedRatio},IsMuted:{mp3Player.IsMuted}," +
$"ScrubbingEnabled:{mp3Player.ScrubbingEnabled},Balance:{mp3Player.Balance},NaturalVideoWidth:{mp3Player.NaturalVideoWidth}"
+ $"Source:{mp3Player.Source}";
Console.WriteLine(msg);
}
}
}

C# MediaPlayer的更多相关文章

  1. Mediaplayer error (-19,0)

    Android MediaPlayer 发生 error (-19,0) 错误解决方法. 引起原因:由于多次实例化MediaPlayer.start() 进行播放操作引起的.由于没有及时释放内存资源导 ...

  2. 关于从Activity A跳转到Activity B ,其中Activity A中有一个VideoView,Activity B中有一个MediaPlayer。

    两个不同的视频的跳转, 前面我是在onStop()方法中销毁VideoView(因为MediaPlayer是全局共用的,而VideoView内包含MediaPlayer),但是每次进入Activity ...

  3. Android四大组件--MediaPlayer详解(转)

    一. MediaPlayer 状态机 介绍 Android MediaPlayer 状态即图例 : 1. Idle (闲置) 状态 和 End (结束) 状态 MediaPlayer 对象声明周期 : ...

  4. Android音视频之MediaPlayer音视频播放

    前言: 昨天总结了视频录制,今天来学习一下视频的播放,Android的视频播放主要采用MediaPlayer类. MediaPlayer介绍 MediaPlayer类可用于控制音频/视频文件或流的播放 ...

  5. Android音频开发之MediaRecorder/MediaPlayer

    前言: 上次我们介绍了实时采集音频数据以及播放,今天我们来认识一下直接录制文件的方式. 直接上代码:录制管理类 public class MediaRecorderManager { public s ...

  6. WPF语音播放MediaPlayer

    private MediaPlayer player; public MainWindow() { InitializeComponent(); player = new MediaPlayer(); ...

  7. android下面使用SurfaceView+ mediaPlayer播放视频

    final SurfaceView surfaceView = new SurfaceView(StartupActivity.this); StartupActivity.this.mediaPla ...

  8. SAP播放本地视频及音频(仅限于window MediaPlayer可播放文件)

    这个是从SCN上看到的,自己稍加修改,编制,做的还可以,可以播放视频,音频,唯一的不足就是不能控制播放视频的显示窗口大小,希望有人能帮忙解决,感激! 视频播放类:(新建类Z_CL_MEDIA,点击基于 ...

  9. [原创]WPF应用MediaPlayer播放声音断续、不全解决方案

    1.检查扬声器和驱动程序. 测试方法:首先,应用Windows Media Player播放器播放,看是否有问题,如果有问题,基本断定是驱动程序问题.其次,点击扬声器,选择测试,查看扬声器是否好用,如 ...

  10. Android MediaPlayer的生命周期

    MediaPlayer的状态转换图也表征了它的生命周期,如下: 这张状态转换图清晰的描述了MediaPlayer的各个状态,也列举了主要的方法的调用时序,每种方法只能在一些特定的状态下使用,如果使用时 ...

随机推荐

  1. Codeforces 1238 D. AB-string

    思维题 这次cf思维题好多啊 定义了good string 指一个串,其中每一个字符都属于一个长度>=2 的回文串的一部分.叫你求一个串中有几个good substring. 显然ab串 goo ...

  2. 高并发 Nginx+Lua OpenResty系列(11)——流量复制/AB测试/协程

    流量复制 在实际开发中经常涉及到项目的升级,而该升级不能简单的上线就完事了,需要验证该升级是否兼容老的上线,因此可能需要并行运行两个项目一段时间进行数据比对和校验,待没问题后再进行上线.这其实就需要进 ...

  3. Java 并发编程 | 线程池详解

    原文: https://chenmingyu.top/concurrent-threadpool/ 线程池 线程池用来处理异步任务或者并发执行的任务 优点: 重复利用已创建的线程,减少创建和销毁线程造 ...

  4. Postman安装出错.NET Framework 4.5 failed to install

    正常情况下安装Postman不会出错,联网下载即可,这里的异常是因为环境不允许升级.NET4.5 解决方法:找到Postman的安装文件夹,将postman.exe启动发现可以使用 若没有安装过的文件 ...

  5. 03-JVM-垃圾回收算法

    1.JVM内存分配与回收 1.1 对象优先在Eden区进行分配 堆中存储的对象,大多数情况下优先存储在Eden区,当Eden区存满没有足够的空间的时候,虚拟机将进行一次minorGC.当满足一定条件以 ...

  6. .NET Core 数据结构与算法 1-1

    .NET Core 数据结构与算法 1-1 本节内容为顺序表 简介 线性表是简单.基本.常用的数据结构.线性表是线性结构的抽象 (Abstract),线性结构的特点是结构中的数据元素之间存在一对一的线 ...

  7. Git - Git本地仓库与GitHub远程仓库关联

    前言 Git本地仓库与GitHub仓库的关联逻辑如下 创建Key 在本地仓库下,新建Key文件夹,然后打开Key文件夹,单击鼠标右键,选择Git Bash Here. 输入命令:ssh-keygen ...

  8. ASP.NET Core 2.2 WebApi 系列【五】MiniProfiler与Swagger集成

    MiniProfiler 是一款性能分析的轻量级程序,可以基于action(request)记录每个阶段的耗时时长,还是可以显示访问数据库时的SQL(支持EF.EF Code First)等 一.安装 ...

  9. JAVAEE学期总结

         声明:除第一张思维导图为博主所制作,其他思维导图皆来自网络,若侵权,望告知,必删除.                                                      ...

  10. Wappalyzer(chrome网站分析插件)

    Wappalyzer是一款功能强大的.且非常实用的chrome网站技术分析插件,通过该插件能够分析目标网站所采用的平台构架. 网站环境.服务器配置环境.JavaScript框架.编程语言等参数,使用时 ...