C#播放音频文件

要在代码中访问运行目录下的 Resources\audio 文件夹中的 MP3 文件,您需要构建文件的相对路径或绝对路径。由于您的 MP3 文件位于运行目录下,使用相对路径是一个简单且常见的方法。

这里有几个步骤需要注意:

  1. 正确的路径:确保您的路径字符串正确指向音频文件。例如,如果音频文件名是 song.mp3,并且它位于 Resources\audio 文件夹内,您的相对路径将是 Resources\audio\song.mp3

  2. 使用相对路径:在代码中,您可以直接使用这个相对路径,因为默认情况下,相对路径是相对于应用程序的运行目录的。

  3. 处理路径字符串:使用反斜杠(\)时,要么使用双反斜杠(\\),要么在字符串前加 @ 符号。

下面是一个使用 MediaPlayer 类加载和播放该 MP3 文件的示例代码:

using System.Windows.Media;MediaPlayer mediaPlayer = new MediaPlayer();// 构建相对路径
string relativePath = @"Resources\audio\song.mp3";// 设置音频源并播放
mediaPlayer.Open(new Uri(relativePath, UriKind.Relative));
mediaPlayer.Play();

在这个例子中,假设 song.mp3 是您的音频文件名,它位于 Resources\audio 文件夹中。确保该文件夹和文件在您的项目中,并且在编译时被复制到输出目录中。您可以在 Visual Studio 的解决方案资源管理器中设置文件的“复制到输出目录”属性为“始终复制”或“如果较新则复制”。

当您将文件(如MP3音频文件)添加到 Visual Studio 项目中时,需要设置该文件的“生成操作”属性,以便在编译和发布您的应用程序时,文件被正确处理。对于音频文件或其他资源文件(如图片、文本文件等),通常有两种常用的“生成操作”设置:

  1. 内容(Content):这是最常用的设置,用于资源文件。当文件的“生成操作”设置为“内容”,这意味着该文件会被复制到应用程序的输出目录中,保持其在项目中的相对路径不变。这适用于您希望在应用程序运行时从输出目录访问的文件。

    • 若要设置为“内容”,在解决方案资源管理器中选择文件,然后在属性窗口中将“生成操作”设置为“内容”。
  2. 嵌入的资源(Embedded Resource):这个设置用于将文件嵌入到最终的程序集(.exe 或 .dll 文件)中。当您想要将资源与应用程序的可执行文件打包在一起时,可以选择这个选项。然而,访问嵌入的资源比访问内容文件稍微复杂一些,因为您需要使用特定的 API 来从程序集中读取它们。

    • 若要设置为“嵌入的资源”,在解决方案资源管理器中选择文件,然后在属性窗口中将“生成操作”设置为“嵌入的资源”。

对于大多数情况,尤其是在处理音频文件、图片等时,选择“内容”是最直接和简单的方法。确保还设置了“复制到输出目录”,通常选择“始终复制”或“如果较新则复制”,以确保文件在编译时被复制到输出目录中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/594671.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在docekr中运行openwrt镜像

1镜像下载 地址: https://archive.openwrt.org/releases/23.05.1/targets/x86/64/ #linux 下下载命令为 wget https://archive.openwrt.org/releases/23.05.1/targets/x86/64/openwrt-23.05.1-x86-64-rootfs.tar.gz ./#加载镜像 docker import openwrt-23.05.1-x…

计算机毕业设计——基于SSM+Layui的图书管理系统(附源码)

1,项目背景 国家大力推进信息化建设的大背景下,城市网络基础设施和信息化应用水平得到了极大的提高和提高。特别是在经济发达的沿海地区,商业和服务业也比较发达,公众接受新事物的能力和消费水平也比较高。开展商贸流通产业的信息…

HTML5-简单文件操作

文件操作 简介 概念&#xff1a;可以通过file类型的input控件或者拖放的方式选择文件进行操作 语法格式&#xff1a; <input type"file" multiple>属性 multiple&#xff1a;表示是否选择多个文件 accept&#xff1a;用于设置文件的过滤类型&#xff08;MI…

java判断两个List是否存在相同元素

java判断两个List是否存在相同元素 package cn.包名.路径.demo;import cn.hutool.core.collection.CollUtil; import cn.hutool.core.convert.Convert; import cn.hutool.core.util.StrUtil;import java.util.ArrayList; import java.util.List; import java.util.Map; import …

ThreadLocal线程重用导致用户信息错乱的 Bug

在生产上遇到一个诡异的问题&#xff0c;有时获取到的用户信息是别人的。查看代码后&#xff0c;我发现他使用了 ThreadLocal 来缓存获取到的用户信息。 我们知道&#xff0c;ThreadLocal 适用于变量在线程间隔离&#xff0c;而在方法或类间共享的场景。如果用户信息的获取比较…

AI:106-基于卷积神经网络的遥感图像地物分类

🚀点击这里跳转到本专栏,可查阅专栏顶置最新的指南宝典~ 🎉🎊🎉 你的技术旅程将在这里启航! 从基础到实践,深入学习。无论你是初学者还是经验丰富的老手,对于本专栏案例和项目实践都有参考学习意义。 ✨✨✨ 每一个案例都附带有在本地跑过的关键代码,详细讲解供…

Linux22.04系统安装显卡驱动,cuda,cudnn流程

1. 安装显卡驱动 ubuntu-drivers deices显示所有适配显卡的驱动型号&#xff0c;recommended为推荐安装 安装 sudo apt install nvidia-driver-440重启 sudo reboot验证 nvidia-smi2. 安装cuda 在 CUDA Toolkit 的下载页面选择系统版本和安装方式&#xff0c;下载并运行…

[Flutter]WindowsOS上运行遇到的问题总结

[Flutter]WindowsOS上运行遇到的问题总结 写在开头 Flutter项目已能在移动端完美使用后&#xff0c;想看看在桌面端等使用情况 基于Flutter3.0后已支持Windows/MacOS等桌面端&#xff0c;不过具体的系统&#xff0c;还需要看下官方文档解释。 这里抛出文档地址&#xff0c;可…

【数值分析】高斯型求积公式,任意区间三点gauss求积公式,matlab实现

Gauss型求积公式 Gauss型求积公式定义 ∫ a b ρ ( x ) f ( x ) d x ≈ ∑ i 1 n A i f ( x i ) \int_{ a }^{b} \rho(x)f(x) \mathrm dx \approx \sum_{i1}^{ n}A_if(x_i) ∫ab​ρ(x)f(x)dx≈i1∑n​Ai​f(xi​) 如果求积公式具有 2 n − 1 {2n-1} 2n−1 次代数精度&…

代码随想录刷题笔记(DAY 8)

今日总结&#xff1a;最后一道题解决的比较糟糕&#xff0c;后续会补上新解法&#xff0c;今天还是将中心放在了前端。 Day 8 01. 反转字符串&#xff08;No. 344&#xff09; 题目链接 代码随想录题解 1.1 题目 编写一个函数&#xff0c;其作用是将输入的字符串反转过来。…

医院信息系统集成平台—Ensemble集成平台中间件

Ensemble HIE(健康信息交换)是InterSystems公司一个新的产品,它采用了一种全新的解决方案,是一个强大的应用软件整合平台,它包括了为医疗信息交换预先开发好的组件,使用Ensemble可以快速地整合和开发复合应用程序。Ensemble在增强现有软件功能、协调新的商业过程和集中企…

力扣hot100 二叉树的层序遍历 BFS 队列

&#x1f468;‍&#x1f3eb; 题目地址 时间复杂度&#xff1a; O ( n ) O(n) O(n)空间复杂度&#xff1a; O ( n ) O(n) O(n) &#x1f60b; 队列写法 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode…

Java 第19章 IO流 课堂练习+本章作业

文章目录 Buffered流拷贝二进制文件创建文件写入文本读取文本文件存读Properties文件 Buffered流拷贝二进制文件 package com.hspedu.chapter19.outputStream;import java.io.*;public class BufferedCopy02 {public static void main(String[] args) {String srcFilePath &q…

RC4算法解析

RC4是由RSA Security的罗纳德李维斯特在1987年开发出来的&#xff0c;虽然它的官方名是“Rivest Cipher 4”&#xff0c;但是首字母缩写RC也可以理解为"Ron’s Code"。 RC4加解密原理 加解密分为两个步骤&#xff1a;密钥的初始化和加解密。 初始化&#xff1a; …

【面试高频算法解析】算法练习2 回溯

目录 前言算法解析练习题组合总和全排列II单词搜索 前言 本篇章开放目的是按算法类型学习算法&#xff0c;学习对应算法理论&#xff0c;并通过练习一些经典算法题深入理解这类算法&#xff0c;避免出现刷了很多算法题&#xff0c;还是一知半解的状态 算法解析 回溯&#xff…

es 简单集群搭建,版本8.6.2

Node-1 配置&#xff1a; # elasticsearch.yml for Node-1cluster.name: my-test-cluster node.name: node-1 path.data: /path/to/data/node-1 path.logs: /path/to/logs/node-1 network.host: 127.0.0.1 http.port: 9200 transport.port: 9300 discovery.seed_hosts: ["…

Canal+RabbitMQ实现MySQL数据同步至ClickHouse

ClickHouse作为一个被广泛使用OLAP分析引擎&#xff0c;在执行分析查询时的速度优势很好的弥补了MySQL的不足&#xff0c;但是如何将MySQL数据同步到ClickHouse就成了用户面临的第一个问题。本文利用Canal来实现ClickHouse实时同步MySQL数据&#xff0c;使用RabbitMQ来做消息队…

FreeRTOS——计数型信号量知识总结及实战

1计数型信号量概念 1&#xff09;计数型信号量相当于队列长度大于1 的队列&#xff0c;因此计数型信号量能够容纳多个资源 2&#xff09;适用场景&#xff1a; 事件计数&#xff1a; 当每次事件发生后&#xff0c;在事件处理函数中释放计数型信号量&#xff08;计数值1&#x…

【C语言】汉诺塔问题/数据结构经典问题/详细总结讲解

1. 前言 汉诺塔问题是一个经典的递归问题&#xff0c;源于印度的一个古老传说。这个问题的特点是其独特的解决方式&#xff0c;需要将一堆盘子从一个柱子移动到另一个柱子&#xff0c;每次只能移动一个盘子&#xff0c;并且不能将一个较大的盘子放在较小的盘子上面。这个问题的…

MySQL存储引擎InnoDB和MyISAM的区别?

MySQL存储引擎InnoDB和MyISAM的区别? InnoDB和MyISAM是MySQL数据库两种常见的存储引擎&#xff0c;它们在性能、事务支持等方面有一些重要的区别。以下是它们的一些主要区别&#xff1a; 事务支持&#xff1a; InnoDB&#xff1a; 支持事务&#xff0c;具有ACID&#xff08;原…