所以这很奇怪......在我的C#,WPF应用程序中,我有一个按钮,当点击它时,播放一个简短的音频剪辑,作为帮助文本.大约50%的时间它工作得很漂亮...另外50%它被切断了,我无法弄清楚原因.甚至它被切断的点也各不相同.
我想,也许,代码超出了范围或者某些东西然后停止所以我把它放在另一个线程中...根本不起作用...所以现在我不知道该怎么做.
这是我的按钮点击事件的代码.
try
{
string path = System.IO.Path.Combine(ConfigurationManager.AppSettings["MediaPath"], Global.Language);
path = System.IO.Path.Combine(path, "visitorTypes.mp3");
if (Global.PlaySound)
{
string p = path.ToString();
MediaPlayer mplayer = new MediaPlayer();
mplayer.Open(new Uri(p, UriKind.Absolute));
mplayer.Play();
}
//a bunch of other code
}
catch (Exception ex)
{
Util.HandleError(ex);
}
Run Code Online (Sandbox Code Playgroud)
思考?
我正在开发应用程序以从SD卡中获取数据.
我使用此选项进行过滤,但是当我使用logcat时,我发现我只获取了只有文件的数据 sdcard/some_dir
但我有声音文件到不同的文件夹,所以如果可能的话给我通用代码从sdcard获取所有的mp3文件.
class FileExtensionFilter implements FilenameFilter {
public boolean accept(File dir, String name) {
return (name.endsWith(".mp3") || name.endsWith(".MP3"));
}
}
Run Code Online (Sandbox Code Playgroud) 我正在编写一个音乐播放器,我想标准化不同歌曲的音量。
我可以想到一些不同的方法来做到这一点,例如:
遍历所有 PCM 样本(假设浮点数从 -1 到 1)并选择 m = max(abs(sample))。然后将因子 1/m 应用于所有 PCM 样本。这将使峰值为 1。
遍历 PCM 流,对于每个位置,取其周围一定宽度的汉宁窗口,计算绝对样本的平均值,然后从这些数据中选取最大值并标准化所有内容。
与 2 相同,但可以通过其他方式获得某种平均值。
2 和 3 的缺点是我可能需要一些剪辑,从而失去一些质量。不过,通过不标准化为 1 而是标准化为 0.95 左右,我也许可以在某种程度上避免这种情况。但我认为 2 和 3 的优点是这对用户来说可能是更自然的归一化。维基百科也有一些关于此的信息,并提到RMS、ReplayGain或EBU R128来测量歌曲的响度。
其他流行的音乐播放器(如 iTunes 等)是如何做到这一点的?
如果这被证明是一个愚蠢的问题,我深表歉意,这可能是一个快速解决方案,但我就是无法弄清楚。我正在 android studio 中构建一个音乐播放器,尽管我确实实现了 getExternalStorageDirectory() 并在清单文件中添加了权限,但 sdcard 上的所有歌曲都不会显示在列表视图中,只有内部存储器中的歌曲。对此的任何意见或建设性批评都将受到高度赞赏。这是主要的 java 类。
public class MainActivity extends AppCompatActivity {
ListView lv;
String[] items;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv = (ListView) findViewById(R.id.lvPlayList);
//---------------------------------------------> V HERE V <-------------------------
final ArrayList<File> mySongs = findSongs(Environment.getExternalStorageDirectory());
//----------------------------------------------------------------------------------
items = new String[ mySongs.size() ];
for(int i = 0; i<mySongs.size(); i++) {
toast(mySongs.get(i).getName().toString());
items[i] = mySongs.get(i).getName().toString().replace(".mp3", "").replace(".wav", "");
}
ArrayAdapter<String> adp = new ArrayAdapter<>(getApplicationContext(), R.layout.song_layout, R.id.textView, items);
lv.setAdapter(adp);
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, …Run Code Online (Sandbox Code Playgroud) 我想在播放歌曲时进行跟踪。我尝试了网络上的不同解决方案,但他们无法解决我的问题。我实现了audioPlayerDidFinishPlaying方法,但它不起作用。我怎么知道播放歌曲是否完成?
我正在播放带有playSound功能的歌曲
播放声音 功能:
func playSound(name: String ) {
guard let url = Bundle.main.url(forResource: name, withExtension: "mp3") else {
print("url not found")
return
}
do {
/// this codes for making this app ready to takeover the device audio
try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
try AVAudioSession.sharedInstance().setActive(true)
/// change fileTypeHint according to the type of your audio file (you can omit this)
player = try AVAudioPlayer(contentsOf: url, fileTypeHint: AVFileTypeMPEGLayer3)
// no need for prepareToPlay because prepareToPlay is happen automatically when …Run Code Online (Sandbox Code Playgroud) 我想在 Flutter 中播放音乐文件,例如Google Drivemp3, m4a中的文件。到目前为止,我可以获取我的谷歌驱动器中的文件链接
我URL得到的是正确的,但我不知道如何播放其中的音乐。因为它URL实际上是 Google 驱动器中的文件而不是音乐文件
我现在得到的链接:https://drive.google.com/file/d/19kULSF4uayHozAdyV59kGb7Fum8SJS8s
我真正想要的链接:cea6cf6223f140ee8037d7ba382ef034_en_GoldenTemplestory by Vanshika FormateConversion - Vanshika Mehra.mp3
我不确定您是否能够从我的组织帐户访问此内容。
任何帮助将非常感激 :)
我想从缓冲区播放音频.比如使用AudioRecord将音频录制到缓冲区并从缓冲区播放.
有办法吗?在MediaPlayer中没有这样的选项.
我想知道是否可以使用vlc.py打开(播放)音乐播放列表(.m3u文件)?我搜索了一个答案,但找不到它.我设法播放了一个简单的mp3文件,甚至是mp3流,但我对播放列表没有任何好运.你能帮我一下,给我一些示例代码吗?我希望能够在我的python程序中浏览曲目(Next和Previous).提前到达
我正在尝试在我的AngularJS应用程序中实现Videogular.开箱即用的示例运行良好,没有问题.但我无法让玩家手动播放不同的文件,而不是播放音频.
这是我的HTML.
<div ng-controller="HomeCtrl as controller" class="videogular-container" ng-model="sharedProperty">
sharedProperty.data = {{sharedProperty.data}}
<button ng-click="SetValue('http://example.com/myfile.mp3')" type="button" class="btn btn-default">Change Audio</button>
<videogular vg-theme="controller.config.theme.url" class="videogular-container audio">
<vg-media vg-src="controller.config.sources"></vg-media>
<vg-controls>
<vg-play-pause-button></vg-play-pause-button>
<vg-time-display>{{ currentTime | date:'mm:ss' }}</vg-time-display>
<vg-scrub-bar>
<vg-scrub-bar-current-time></vg-scrub-bar-current-time>
</vg-scrub-bar>
<vg-time-display>{{ timeLeft | date:'mm:ss' }}</vg-time-display>
<vg-volume>
<vg-mute-button></vg-mute-button>
</vg-volume>
</vg-controls>
</videogular>
</div>
Run Code Online (Sandbox Code Playgroud)
这是控制器代码:
app.controller('HomeCtrl', ["$sce","$scope", "$window", "sharedProperties",
function($sce, $scope, $window, sharedProperties) {
$scope.sharedProperty = sharedProperties.getProperty();
$scope.SetValue = function (msg)
{
$window.alert( $scope.sharedProperty.data );
$scope.setProperty = sharedProperties.setProperty;
$scope.setProperty(msg);
$window.alert( $scope.sharedProperty.data );
}
$window.alert( $scope.sharedProperty.data );
this.config = {
sources: …Run Code Online (Sandbox Code Playgroud)