C# MediaPlayer
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的更多相关文章
- Mediaplayer error (-19,0)
Android MediaPlayer 发生 error (-19,0) 错误解决方法. 引起原因:由于多次实例化MediaPlayer.start() 进行播放操作引起的.由于没有及时释放内存资源导 ...
- 关于从Activity A跳转到Activity B ,其中Activity A中有一个VideoView,Activity B中有一个MediaPlayer。
两个不同的视频的跳转, 前面我是在onStop()方法中销毁VideoView(因为MediaPlayer是全局共用的,而VideoView内包含MediaPlayer),但是每次进入Activity ...
- Android四大组件--MediaPlayer详解(转)
一. MediaPlayer 状态机 介绍 Android MediaPlayer 状态即图例 : 1. Idle (闲置) 状态 和 End (结束) 状态 MediaPlayer 对象声明周期 : ...
- Android音视频之MediaPlayer音视频播放
前言: 昨天总结了视频录制,今天来学习一下视频的播放,Android的视频播放主要采用MediaPlayer类. MediaPlayer介绍 MediaPlayer类可用于控制音频/视频文件或流的播放 ...
- Android音频开发之MediaRecorder/MediaPlayer
前言: 上次我们介绍了实时采集音频数据以及播放,今天我们来认识一下直接录制文件的方式. 直接上代码:录制管理类 public class MediaRecorderManager { public s ...
- WPF语音播放MediaPlayer
private MediaPlayer player; public MainWindow() { InitializeComponent(); player = new MediaPlayer(); ...
- android下面使用SurfaceView+ mediaPlayer播放视频
final SurfaceView surfaceView = new SurfaceView(StartupActivity.this); StartupActivity.this.mediaPla ...
- SAP播放本地视频及音频(仅限于window MediaPlayer可播放文件)
这个是从SCN上看到的,自己稍加修改,编制,做的还可以,可以播放视频,音频,唯一的不足就是不能控制播放视频的显示窗口大小,希望有人能帮忙解决,感激! 视频播放类:(新建类Z_CL_MEDIA,点击基于 ...
- [原创]WPF应用MediaPlayer播放声音断续、不全解决方案
1.检查扬声器和驱动程序. 测试方法:首先,应用Windows Media Player播放器播放,看是否有问题,如果有问题,基本断定是驱动程序问题.其次,点击扬声器,选择测试,查看扬声器是否好用,如 ...
- Android MediaPlayer的生命周期
MediaPlayer的状态转换图也表征了它的生命周期,如下: 这张状态转换图清晰的描述了MediaPlayer的各个状态,也列举了主要的方法的调用时序,每种方法只能在一些特定的状态下使用,如果使用时 ...
随机推荐
- Map 集合 和 String 字符串相互转换工具类
package com.skynet.rimp.common.utils.util; import java.util.Arrays; import java.util.HashMap; import ...
- Spring 框架基础(01):核心组件总结,基础环境搭建
本文源码:GitHub·点这里 || GitEE·点这里 一.Spring框架 1.框架简介 Spring是一个开源框架,框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 ...
- python爬虫网页解析之parsel模块
08.06自我总结 python爬虫网页解析之parsel模块 一.parsel模块安装 官网链接https://pypi.org/project/parsel/1.0.2/ pip install ...
- 使用策略模式重构switch case 代码
目录 1.背景 2.案例 3.switch…case…方式实现 4.switch…case…带来的问题 5.使用策略模式重构switch…case…代码 6.总结 1.背景 之前在看<重构 ...
- 使用Navicat Premium 比较PostgreSql数据库 dev环境与test环境差异
Navicat Premium 功能很强大,支持不同数据库客户端的连接,并且使用工具可以生成两个库差异的sql脚本,方便dev与test环境表结构同步,具体操作方法如下 单击运行,实现两个库中模式表结 ...
- Cesium专栏-空间分析之坡度分析(附源码下载)
Cesium Cesium 是一款面向三维地球和地图的,世界级的JavaScript开源产品.它提供了基于JavaScript语言的开发包,方便用户快速搭建一款零插件的虚拟地球Web应用,并在性能,精 ...
- cell右侧的状态(accessoryType)
Cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; Cell.accessoryType = UITableViewCe ...
- 安装docker并部署web项目
一.docker简介 1.docker定义:docker是一个用来装应用的容器,就像杯子可以装水,笔筒可以装笔,书包可以放书一样.你可以把“Hello World!”放到docker中,也可以把网站放 ...
- HTML5应用 转 Android、Windows Phone 应用
一.HTML5 转 Android 目标SDK:API 20 1.新建一个 Blank Activity 的应用 2.在 AndroidManifest.xml 文件中添加联网权限 <uses- ...
- golang中的定向通道(Directional channels)
好像第一次看到这个知识点,作个记录. 注意通道在只能发射或只能接收信息时,<-这个符号放置的位置. package main import "fmt" import &quo ...