在 libvlcsharp 中设置自适应流的起始比特率

set start bitrate for adaptive stream in libvlcsharp

我正在使用 LibVlcSharp 播放由 Azure 媒体服务转码的自适应视频流 (HLS),并在我的 Xamarin.Forms 应用程序中使用 EncoderNamedPreset.AdaptiveStreaming 设置。

观看我的视频时,我注意到视频的前几 (5-6) 秒非常模糊。

这可能是因为播放器以“安全”的低码率开始,在下载了几块数据后,确定带宽足以显示更高质量的视频,并且可以切换质量。

最初几秒钟的低质量困扰着我,我宁愿让它以更高的比特率开始。

如果视频能更快切换(<2 秒),我会很高兴,这可能意味着我需要不同的编码器设置来生成更小的视频“块”。

但也许更简单的解决方案是将起始比特率设置为更高的值。

我在其他媒体播放器上看到过这样做的形式 ams.InitialBitrate = ams.AvailableBitrates.Max<uint>();

LibVlc 有类似的选项吗?

This is probably because the player starts with a "safe" low bitrate, and after a few chunks of data have been downloaded, it determines that the bandwith is sufficient for a higher quality video being displayed and it can switch up in quality.

可能吧。您可以通过检查视频开始时的比特率以及质量提高时再次检查比特率来验证该假设,如下所示:

await media.Parse(MediaParseOptions.ParseNetwork);

foreach(var track in media.Tracks)
{
    Debug.WriteLine($"{nameof(track.Bitrate)}: {track.Bitrate}");
}

Does LibVlc have a similar option?

试试这个

  --adaptive-logic={,predictive,nearoptimal,rate,fixedrate,lowest,highest} 
                                 Adaptive Logic

你可以试试new LibVLC("--adaptive-logic=highest")

参见docs for more info, or the forums。如果这不起作用,我会将其设置为服务器端。