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. VS出现未加载wntdll.pdb的解决办法

    无缘无故出现了未加载wntdll.pdb的的错误,不知道原因是什么,但找到了解决方法.在调试中选择选项,然后选择调试->符号,勾选Microsoft符号服务器,确定.重新生成项目时会有各种加载, ...

  2. C++入门到理解阶段二基础篇(7)——C++函数

    目录 函数作用 函数定义 函数声明 函数调用 函数值传递 函数常见的样式 函数的分文件书写 函数作用 将经常使用的代码封装起来,减少重复代码 函数定义 C++ 中的函数定义的一般形式如下: retur ...

  3. SpringCloud微服务(06):Config组件,实现配置统一管理

    本文源码:GitHub·点这里 || GitEE·点这里 一.Config简介 在微服务系统中,服务较多,相同的配置:如数据库信息.缓存.参数等,会出现在不同的服务上,如果一个配置发生变化,需要修改很 ...

  4. Java入门系列之包装类(四)

    前言 上一节我们讲解了StringBuilder VS StringBuffer以及二者区别,本节我们来讲解包装类. 包装类 我们知道在Java中有8中基本数据类型,分为数值类型:byte.short ...

  5. 记录一次Mac VSCode运行Grpc模板项目

    1.使用dotnet new grpc -o GrpcGreeter && cd GrpcGreeter && code . ,进入项目文件中,使用code .使用vs ...

  6. Netty服务端Channel注册Selector及绑定服务器端口

    当服务端Channel 创建并且初始化完成之后,会将其注册到 selector,通过语句config().group().register(channel)进行注册工作,该方法最终调用 Abstrac ...

  7. SSM框架之Spring(4)AOP

    Spring(4)AOP 1.AOP概述 在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种 ...

  8. Android 查看项目依赖树的四种方式

    Android 查看项目依赖树的四种方式: 方式一: ./gradlew 模块名:dependencies //查看单独模块的依赖 ./gradlew :app:dependencies --conf ...

  9. Linux-3.14.12内存管理笔记【建立内核页表(2)】-低端内存的建立

    前面的前奏已经分析介绍了建立内核页表相关变量的设置准备,接下来转入正题分析内核页表的建立. 建立内核页表的关键函数init_mem_mapping(): [file:/arch/x86/mm/init ...

  10. 如何在mysql数据库生成百万条数据来测试页面加载速度

    1.首先复制一条sql 在复制前,需要确定该记录是否有主键 若无,则代码非常简单, "; 复制的表名↑                                   粘贴的表名↑    ...