我正在努力用C#和WPF制作一个基本的MP3播放器,以及NAudio.我最近添加了一个滑块,可以跟踪歌曲中的当前位置,并允许您将其拖动到不同的位置,Thumb.DragCompleted然后它将歌曲的位置设置为您拖动它的位置.
这一切都很好,所有,除非我让它跳到新位置,它仍然会在更改前的1/5左右播放旧位置.这是最引人注目的,例如当歌手正在唱"aaa"时,你停下来,拖到他唱"ooo"的地步,然后再次播放,你会听到"aa-ooo".这只会让它听起来非常可怕.
所以我认为音频播放只剩下一个小的"缓冲区",它坚持在继续播放之前播放.有没有办法清除这个缓冲区?还是我设置错误的位置?
我正在使用a WaveOut waveOutDevice和a AudioFileReader audioFileReader.调用滑块sldrPlaybackProgress.
我试图以两种不同的方式改变歌曲中的位置:
第一种方法:
audioFileReader.CurrentTime = new TimeSpan(0, (int)(Math.Floor(sldrPlaybackProgress.Value / 60)), (int)(Math.Floor(sldrPlaybackProgress.Value % 60)));
Run Code Online (Sandbox Code Playgroud)
第二种方法:
audioFileReader.Position = (long)(sldrPlaybackProgress.Value * audioFileReader.WaveFormat.AverageBytesPerSecond);
Run Code Online (Sandbox Code Playgroud)
这些单独或甚至两者组合仍导致问题持续存在.
我正在尝试为FireFox开发带有contextMenu的WebExtension。目前,我只有两个文件,没有任何实际功能。问题是,即使使用Mozilla开发人员网络中的示例代码,它似乎也无法正常工作-因此,我认为它已包含在清单中,但似乎找不到该问题。
这是我的manifest.json文件:
{
"manifest_version": 2,
"name": "FullWindow",
"version": "1.0",
"description": "Test plugin.",
"permissions": ["contextMenus"],
"content_scripts": [
{
"matches": ["<all_urls>"],
"js": ["fullwindow.js"]
}
]
}
Run Code Online (Sandbox Code Playgroud)
这是我的fullwindow.js文件:
console.log("Plugin loaded!");
browser.contextMenus.create({
id: "radio-green",
type: "radio",
title: "Make it green",
contexts: ["all"],
checked: false
}, onCreated);
function onCreated() {
if (browser.runtime.lastError) {
console.log("error creating item:" + browser.runtime.lastError);
} else {
console.log("item created successfully");
}
}
console.log("Test!");
Run Code Online (Sandbox Code Playgroud)
这里的问题是,除了初始的“插件已加载!”之外,我没有任何控制台日志。并且也没有得到我的上下文菜单。