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

问题描述

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

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

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

前几秒的低质量让我很困扰,我宁愿让它以更高的比特率开始。

如果视频能更快切换(

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

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

LibVlc 有类似的选项吗?

解决方法

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

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

await media.Parse(MediaParseOptions.ParseNetwork);

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

LibVlc 有类似的选项吗?

试试这个

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

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

一样尝试

有关详细信息,请参阅 docsforums。如果这不起作用,我会将其设置在服务器端。