GVKun编程网logo

AxWindowsMediaPlayer剪辑有时不会播放(windows media player 剪辑)

11

想了解AxWindowsMediaPlayer剪辑有时不会播放的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于windowsmediaplayer剪辑的相关问题,此外,我们还将为您介绍关于a

想了解AxWindowsMediaPlayer剪辑有时不会播放的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于windows media player 剪辑的相关问题,此外,我们还将为您介绍关于axWindowsMediaPlayer 可以播放数据流吗?、C# WindowsMediaPlayer 的一些用法实例、C# 关于 windows mediaplayer 的用法、C#使用WindowsMediaPlayer实现视频播放的新知识。

本文目录一览:

AxWindowsMediaPlayer剪辑有时不会播放(windows media player 剪辑)

AxWindowsMediaPlayer剪辑有时不会播放(windows media player 剪辑)

我有一个简单的单线程的Windows窗体.NET 4.5应用程序,用户在那里听口说话(WAV文件),然后select正确的图片,代表这个词。

问题是,剪辑有时(很less – 约1%的时间,完全随机)不玩…

这是播放剪辑的方法:

public static void PlayWordAudio(Word word,AxWMPLib.AxWindowsMediaPlayer player) { string tempFile = Path.GetTempFileName() + ".wav"; MemoryStream stream = new MemoryStream(word.Audio); using (Stream fileStream = File.OpenWrite(tempFile)) { stream.Writeto(fileStream); } player.URL = tempFile; File.Delete(tempFile); }

有人可以请build议解决这个问题? 也许我不应该在方法结尾删除文件? 但是,临时文件将堆积…

拦截打印作业以添加额外的数据

防止对象被分页(VirtualLock相当于)

获取任务栏中的应用程序数量

什么会导致进程停止重新创build?

绘制窗口到图像文件

我在Windows 7上…

Windows操作系统和内存pipe理 – 应用程序最小化时会发生什么?

在WCF和Windows服务中下载大文件

获取每个用户的SpecialFolder.MyDocuments文件夹

WorkbookOpen事件与Windows服务没有触发,而它与Windows应用程序触发

.NET给我什么,Win32不是?

我猜这个文件被删除的速度比它能播放的快。

你可以尝试这个而不是File.Delete(tempFile); 利用PlayStateChange事件

player.PlayStateChange += (snd,psce) => { switch (psce.newState) { case 1: // Stopped (maybe use 12 => Last ) File.Delete(tempFile); break; default: Debug.WriteLine(psce.newState); break; } };

如果您长时间保持播放器对象,则可能必须取消订阅该事件。

看来我解决了这个问题…实际上是删除文件造成了这个…

解:

public static void PlayWordAudio(Word word,AxWMPLib.AxWindowsMediaPlayer player) { string tempFile = Path.GetTempFileName() + ".wav"; MemoryStream stream = new MemoryStream(word.Audio); using (Stream fileStream = File.OpenWrite(tempFile)) { stream.Writeto(fileStream); } player.URL = tempFile; RunDelayed(5000,File.Delete,tempFile); //if we delete file immediately then clip sometimes would not be played } public delegate void DelayedFuncion(string param); public static void RunDelayed(int delay,DelayedFuncion function,string param = null) { System.Windows.Forms.Timer timer = new System.Windows.Forms.Timer(); DelayedArgs args = new DelayedArgs() { delayedFunction = function,param = param }; timer.Tag = args; timer.Tick += TimerElapsed; timer.Interval = delay; timer.Start(); } private static void TimerElapsed(object sender,EventArgs e) { System.Windows.Forms.Timer timer = sender as System.Windows.Forms.Timer; timer.Stop(); DelayedArgs args = timer.Tag as DelayedArgs; args.delayedFunction(args.param); } class DelayedArgs { public Util.DelayedFuncion delayedFunction; public string param; }

axWindowsMediaPlayer 可以播放数据流吗?

axWindowsMediaPlayer 可以播放数据流吗?

我用c#写得程序,想把一段mp3做成嵌入的资源,用axWindowsMediaPlayer播放。
axWindowsMediaPlayer有一个URL属性,指向要播放的地址;但嵌入的资源只能以stream的形式读出来而不是并没有存在硬盘上,请问要怎么做啊?
SoundPlayer 可以播放stream,但却只能是wav格式的,但wav格式的音乐文件太大了我不想用

C# WindowsMediaPlayer 的一些用法实例

C# WindowsMediaPlayer 的一些用法实例

播放单首歌曲

复制代码 代码如下:

player.URL = "歌曲文件路径";
player.Ctlcontrols.play();

添加多首歌曲到播放列表

复制代码 代码如下:

IWMPPlaylist playList = player.playlistCollection.newPlaylist("MyPlayList"); //新建列表
            IWMPMedia media;

            foreach (DataRow drItem in MusicSettings.DtMusic.Rows)
            {
                media = player.newMedia(drItem["路径"].ToString()); //参数为歌曲路径
                playList.appendItem(media);
            }

            player.currentPlaylist = playList;
            player.Ctlcontrols.play();    //开始播放

 或者直接在当前列表上添加

复制代码 代码如下:

player.currentPlaylist.clear();

            IWMPMedia media;

            foreach (DataRow drItem in MusicSettings.DtMusic.Rows)
            {
                media = player.newMedia(drItem["路径"].ToString()); //参数为歌曲路径
                player.currentPlaylist.appendItem(media);
            }


设置播放器音量

复制代码 代码如下:

 player.settings.volume=100;

C# 关于 windows mediaplayer 的用法

C# 关于 windows mediaplayer 的用法

OSC 请你来轰趴啦!1028 苏州源创会,一起寻宝 AI 时代

 

AxWindowsMediaPlayer 主要属性与方法

 

属性 / 方法名: 说明:

[基本属性]  

URL:String; 指定媒体位置,本机或网络地址

uiMode:String; 播放器界面模式,可为 Full, Mini, None, Invisible

playState:integer; 播放状态,1= 停止,2= 暂停,3= 播放,6= 正在缓冲,9= 正在连接,10= 准备就绪

enableContextMenu:Boolean; 启用 / 禁用右键菜单

fullScreen:boolean; 是否全屏显示

// 播放器基本控制

Ctlcontrols.play; 播放

Ctlcontrols.pause; 暂停

Ctlcontrols.stop; 停止

Ctlcontrols.currentPosition:double; 当前进度

Ctlcontrols.currentPositionString:string; 当前进度,字符串格式。如 “00:23

Ctlcontrols.fastForward; 快进

Ctlcontrols.fastReverse; 快退

Ctlcontrols.next; 下一曲

Ctlcontrols.previous; 上一曲

[settings] wmp.settings // 播放器基本设置

settings.volume:integer; 音量,0-100

settings.autoStart:Boolean; 是否自动播放

settings.mute:Boolean; 是否静音

settings.playCount:integer; 播放次数

[currentMedia] wmp.currentMedia // 当前媒体属性

currentMedia.duration:double; 媒体总长度

currentMedia.durationString:string; 媒体总长度,字符串格式。如 “03:24

currentMedia.getItemInfo(const string); 获取当前媒体信息 "Title"= 媒体标题,"Author"= 艺术家,"Copyright"= 版权信息,"Description"= 媒体内容描述, "Duration"= 持续时间(秒),"FileSize"= 文件大小,"FileType"= 文件类型,"sourceURL"= 原始地址

currentMedia.setItemInfo(const string); 通过属性名设置媒体信息

currentMedia.name:string; currentMedia.getItemInfo("Title")

[currentPlaylist] wmp.currentPlaylist // 当前播放列表属性

currentPlaylist.count:integer; 当前播放列表所包含媒体数

currentPlaylist.Item[integer]; 获取或设置指定项目媒体信息,其子属性同 wmp.currentMedia

axWindowsMediaPlayer1.currentMedia.sourceURL; // 获取正在播放的媒体文件的路径

axWindowsMediaPlayer1.currentMedia.name;          // 获取正在播放的媒体文件的名称

axWindowsMediaPlayer1.Ctlcontrols.Play          播放 

axWindowsMediaPlayer1.Ctlcontrols.Stop          停止 

axWindowsMediaPlayer1.Ctlcontrols.Pause          暂停 

axWindowsMediaPlayer1.Ctlcontrols.PlayCount        文件播放次数 

axWindowsMediaPlayer1.Ctlcontrols.AutoRewind       是否循环播放 

axWindowsMediaPlayer1.Ctlcontrols.Balance         声道 

axWindowsMediaPlayer1.Ctlcontrols.Volume         音量 

axWindowsMediaPlayer1.Ctlcontrols.Mute          静音 

axWindowsMediaPlayer1.Ctlcontrols.EnableContextMenu    是否允许在控件上点击鼠标右键时弹出快捷菜单 

axWindowsMediaPlayer1.Ctlcontrols.AnimationAtStart    是否在播放前先播放动画 

axWindowsMediaPlayer1.Ctlcontrols.ShowControls      是否显示控件工具栏 

axWindowsMediaPlayer1.Ctlcontrols.ShowAudioControls    是否显示声音控制按钮 

axWindowsMediaPlayer1.Ctlcontrols.ShowDisplay       是否显示数据文件的相关信息 

axWindowsMediaPlayer1.Ctlcontrols.ShowGotoBar       是否显示 Goto 

axWindowsMediaPlayer1.Ctlcontrols.ShowPositionControls  是否显示位置调节按钮 

axWindowsMediaPlayer1.Ctlcontrols.ShowStatusBar      是否显示状态栏 

axWindowsMediaPlayer1.Ctlcontrols.ShowTracker       是否显示进度条 

axWindowsMediaPlayer1.Ctlcontrols.FastForward       快进 

axWindowsMediaPlayer1.Ctlcontrols.FastReverse       快退 

axWindowsMediaPlayer1.Ctlcontrols.Rate          快进/快退速率 

axWindowsMediaPlayer1.AllowChangeDisplaySize 是否允许自由设置播放图象大小 

axWindowsMediaPlayer1.DisplaySize       设置播放图象大小 

1-MpDefaultSize         原始大小  

    2-MpHalfSize           原始大小的一半 

    3-MpDoubleSize          原始大小的两倍 

    4-MpFullScreen          全屏 

    5-MpOneSixteenthScreen      屏幕大小的 1/16 

    6-MpOneFourthScreen       屏幕大小的 1/4 

    7-MpOneHalfScreen        屏幕大小的 1/2 

axWindowsMediaPlayer1.ClickToPlay       是否允许单击播放窗口启动 Media Player 

在视频播放之后 , 可以通过如下方式读取源视频的宽度和高度 , 然后设置其还原为原始的大小.

        private void ResizeOriginal()

        {

            int intWidth = axWindowsMediaPlayer1.currentMedia.imageSourceWidth;

            int intHeight = axWindowsMediaPlayer1.currentMedia.imageSourceHeight;

            axWindowsMediaPlayer1.Width = intWidth + 2;

            axWindowsMediaPlayer1.Height = intHeight + 2;

        }

打开媒体文件并播放:

        Dim filePath As String

        With Me.OpenFileDialog1

            .Title = " 打开语音文件 "

            .CheckPathExists = True

            .CheckFileExists = True

            .Multiselect = False

            .Filter = "mp3 文件 (*.mp3) |*.mp3 | 所有文件 (*.*) |*.*"

            If .ShowDialog = DialogResult.Cancel Then

                Exit Sub

            End If

            filePath = .FileName

        End With

        Me.Text = "PC 复读机 - 文件 " & filePath

        AxWindowsMediaPlayer1.URL = filePath

        Try

            Me.AxWindowsMediaPlayer1.Ctlcontrols.play()

        Catch ex As Exception

            MsgBox(" 对不起,不能播放此格式语音文件 ", MsgBoxStyle.OKOnly, "PC 复读机 ")

            Exit Sub

        End Try

注意:

AxWindowsMediaPlayer1.URL URL 是表示要播放的文件名 , 取消了原来的 Name 属性.

AxWindowsMediaPlayer1.Ctlcontrols.play() 播放 , 同样还有 Pause,Stop 等其他属性.

AxWindowsMediaPlayer1.settings.balance 表示媒体播放的声道设置 ,0 表示均衡 ,-1 1 表示左右声道.

AxWindowsMediaPlayer1.currentMedia.duration 表示要播放的文件的时间长度. 可用它获取文件长度.

AxWindowsMediaPlayer1.Ctlcontrols.currentPosition 表示正在播放的文件的当前播放位置 , 可用这个属性来对媒体文件进行前进后退等设置.

AxWindowsMediaPlayer1.Ctlcontrols.currentPosition+1 表示前进 1 个时间单位.

AxWindowsMediaPlayer1.settings.rate 播放速率 , 一般乘以 16 后再显示 kbps 单位.

注意: 在上面程序中 , 如果在后面加上一个:

msgbox(AxWindowsMediaPlayer1.currentMedia.duration.ToString )

则显示结果很可能为 0,因此,这时候很可能获取不到文件的播放时间长度,容易出错。所以在利用的时候可以加一个 timer 控件:

Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick

        EndPoint = AxWindowsMediaPlayer1.currentMedia.duration

        If EndPoint = 0 Then Exit Sub '' 可能因为媒体文件的打开需要一定时间,这里等待媒体文件的打开

        msgbox(AxWindowsMediaPlayer1.currentMedia.duration.ToString )

End Sub

此时 msgbox 便会显示文件播放长度。

2. Ctlcontrols 属性

Ctlcontrols 属性是 AxWindowsMediaPlayer 的一个重要属性, 此控件中有许多常用成员。

(1) 方法 play

用于播放多媒体文件,其格式为:

窗体名. 控件名.Ctlcontrols.play()

如: AxWindowsMediaPlayer1.Ctlcontrols.play()  ‘此处缺省窗体名是 Me

(2) 方法 pause

用于暂停正在播放的多媒体文件,其格式为:

窗体名. 控件名.Ctlcontrols.pause()

如: AxWindowsMediaPlayer1.Ctlcontrols.pause()

(3) 方法 stop

用于停止正在播放的多媒体文件,其格式为:

窗体名. 控件名.Ctlcontrols.stop()

如: AxWindowsMediaPlayer1.Ctlcontrols.stop()

(4) 方法 fastforward

用于将正在播放的多媒体文件快进,其格式为:

窗体名. 控件名.Ctlcontrols.fastforward()

如: AxWindowsMediaPlayer1.Ctlcontrols.forward()

(5) 方法 fastreverse

窗体名. 控件名.Ctlcontrols.fastreverse()

如: AxWindowsMediaPlayer1.Ctlcontrols.fastreverse()

6. 属性 CurrentPosition

用于获取多媒体文件当前的播放进度,其值是数值类型,使用格式为:

窗体名. 控件名.Ctlcontrols.currentPosition

d1 =AxWindowsMediaPlayer1.Ctlcontrols.currentPosition

其中 d1 是一个整型变量。

7. 属性 Duration

用于获取当前多媒体文件的播放的总时间,其值为数值类型,其使用格式为:

窗体名. 控件名.currentMedia.duration

如:d2 =AxWindowsMediaPlayer1.currentMedia.duration

其中 d2 是一个整型变量。

 

C#使用WindowsMediaPlayer实现视频播放

C#使用WindowsMediaPlayer实现视频播放

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices;
using System.Security;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Windows.Forms.DataVisualization.Charting;

namespace WindowsFormsApplication2
{


public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
string playPath = null;
string directory = null;
List<string> playArray = null;
private void 打开文件ToolStripMenuItem_Click(object sender, EventArgs e)
{
using (OpenFileDialog openFileDialog = new OpenFileDialog())
{
openFileDialog.Filter = "mp4|*.mp4|视频文件(*.avi;*.wmv)|(*.avi;*.wmv)|All File(*.*)|(*.*)";
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
playPath = openFileDialog.FileName;
directory = Path.GetDirectoryName(playPath);

playArray = Form1.GetplayCollection(directory);

}
axWindowsMediaPlayer1.URL = playPath;

}
}

public static List<string> GetplayCollection(string path)
{
string[] playarray = Directory.GetFiles(path);
var result = from playstring in playarray
where playstring.EndsWith("wmv", StringComparison.OrdinalIgnoreCase) ||
playstring.EndsWith("avi", StringComparison.OrdinalIgnoreCase)||
playstring.EndsWith("mp4", StringComparison.OrdinalIgnoreCase)
select playstring;
return result.ToList();
}

private void 退出ToolStripMenuItem_Click(object sender, EventArgs e)
{
Application.Exit();
}

private void 播放暂停ToolStripMenuItem_Click(object sender, EventArgs e)
{
if ((int)axWindowsMediaPlayer1.playState == 2)
axWindowsMediaPlayer1.Ctlcontrols.play();
else if ((int)axWindowsMediaPlayer1.playState == 3)
axWindowsMediaPlayer1.Ctlcontrols.pause();
}

private void 停止ToolStripMenuItem_Click(object sender, EventArgs e)
{
axWindowsMediaPlayer1.Ctlcontrols.pause();
}

private void 快进ToolStripMenuItem_Click(object sender, EventArgs e)
{
axWindowsMediaPlayer1.Ctlcontrols.fastForward();
}

private void 快退ToolStripMenuItem_Click(object sender, EventArgs e)
{
axWindowsMediaPlayer1.Ctlcontrols.fastReverse();
}

private void 上一曲ToolStripMenuItem_Click(object sender, EventArgs e)
{
axWindowsMediaPlayer1.Ctlcontrols.previous();
}

private void 下一曲ToolStripMenuItem_Click(object sender, EventArgs e)
{
axWindowsMediaPlayer1.Ctlcontrols.next();
}

private void 升高音量ToolStripMenuItem_Click(object sender, EventArgs e)
{
if (axWindowsMediaPlayer1.settings.volume <= 90)
{
axWindowsMediaPlayer1.settings.volume += 10;
}
else
{
axWindowsMediaPlayer1.settings.volume = 100;
}
}

private void 降低音量ToolStripMenuItem_Click(object sender, EventArgs e)
{
if (axWindowsMediaPlayer1.settings.volume >= 10)
{
axWindowsMediaPlayer1.settings.volume -= 10;
}
else
{
axWindowsMediaPlayer1.settings.volume = 0;
}
}

private void 静音ToolStripMenuItem_Click(object sender, EventArgs e)
{
axWindowsMediaPlayer1.settings.volume = 0;
}
}
}

今天关于AxWindowsMediaPlayer剪辑有时不会播放windows media player 剪辑的介绍到此结束,谢谢您的阅读,有关axWindowsMediaPlayer 可以播放数据流吗?、C# WindowsMediaPlayer 的一些用法实例、C# 关于 windows mediaplayer 的用法、C#使用WindowsMediaPlayer实现视频播放等更多相关知识的信息可以在本站进行查询。

本文标签:

上一篇SysInternal的WinObj设备列表机制(win10设备列表)

下一篇.net和Windows中的.dat *文件名处理(.net在哪个文件夹)