我需要捕获数字电视信号并在本地网络上流式传输电视频道(通过Http,RTSP或类似的任何协议)。我正在使用CodeTV查找电视频道,对其进行捕获和解码。该项目使用DirectShow.Net来做到这一点。我发现Vlc.DotNet对在本地网络上传输数据很有帮助。问题是,我不熟悉Directshow,也无法弄清楚如何获取视频流并将其提供给Vlc库。 我试图用记录视频流的代码替换此代码,但“ bs”保持为空。
IStream bs = this.currentGraphBuilder as IStream;
var currentDirectory =
Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);
currentDirectory = Path.Combine(currentDirectory, "libvlc");
var libDirectory = new DirectoryInfo(Path.Combine(currentDirectory,
IntPtr.Size == 4 ? "win-x86" : "win-x64"));
using (Vlc.DotNet.Core.VlcMediaPlayer mediaPlayer = new
Vlc.DotNet.Core.VlcMediaPlayer(libDirectory))
{
var mediaOptions = new[]
{
":sout=#rtp{sdp=rtsp://127.0.0.1:554/}",
":sout-keep"
};
mediaPlayer.SetMedia(bs as Stream, mediaOptions);
mediaPlayer.Play();
}
我不知道是否需要创建一个过滤器并将其添加到图形中,或者有一种更简单的方法。