我目前正在使用c#开发一个karaoke系统,并使用LibVLCSharp。谁能帮我改变音频音高转换器吗?
\ libvlc \ win-x86 \ plugins \ audio_filter目录中有libscaletempo_plugin和libscaletempo_pitch_plugin模块。如何在LibVLCSharp中应用音频滤波器模块?
曾尝试关注,但没有用。
Core.Initialize();
LibVLC libVlc = new LibVLC();
mp1 = new MediaPlayer(libVlc);
mp1.Hwnd = pictureBox1.Handle;
Media media = new Media(libVlc, @"c:\testsong.mp4", FromType.FromPath);
media.AddOption("--audio-filter=scaletempo_pitch");
media.AddOption("--pitch-shift=5");
mp1.Play(media);
并尝试了此操作,它不起作用。
...
...
media.AddOption(":audio-filter=scaletempo_pitch");
media.AddOption(":pitch-shift=5");
mp1.Play(media);
并尝试了此方法,它也不起作用。
Core.Initialize();
string[] options = { "--audio-filter=scaletempo_pitch", "--pitch-shift=5" };
LibVLC libVlc = new LibVLC(options);
mp1 = new MediaPlayer(libVlc);
mp1.Hwnd = pictureBox1.Handle;
Media media = new Media(libVlc, @"c:\testsong.mp4", FromType.FromPath);
mp1.Play(media);
我已经搜索完了,但是找不到解决方案来应用带有音调偏移的音频滤波器。我需要的是一个可以在媒体播放时将音高变化值从-12传递到12的函数。
谢谢。
下面是我的示例代码,以尝试VLC音调偏移。有人知道如何在PlayCallback()
中使用SetAudioCallbacks
功能吗? C#的任何示例或参考?
using LibVLCSharp.Shared;
using LibVLCSharp.Shared.Structures;
using static LibVLCSharp.Shared.MediaPlayer;
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
private MediaPlayer mp1;
private LibVLC libVlc;
private string filePath = @"C:\Users\user\Desktop\testsong.mp4";
public Form1()
{
if (!DesignMode) Core.Initialize();
InitializeComponent();
}
private void TrackVolume_Scroll(object sender, EventArgs e)
{
mp1.Volume = trackVolume.Value;
}
private void Form1_Load(object sender, EventArgs e)
{
string[] options = { "--audio-filter=scaletempo_pitch" };
libVlc = new LibVLC(options);
mp1 = new MediaPlayer(libVlc);
mp1.SetAudioCallbacks(playCallBack, null, null, null, null);
mp1.Hwnd = pictureBox1.Handle;
}
private void BtnPlay_Click(object sender, EventArgs e)
{
Media media = new Media(libVlc, filePath, FromType.FromPath);
mp1.Play(media);
mp1.Volume = trackVolume.Value;
}
private void playCallBack(IntPtr data, IntPtr samples, uint count, long pts)
{
// anyone know how to code in playCallBack to control scaletempo_pitch (-12.0 to 12.0) ???
}
}
}