繁体   English   中英

如何在 VLCJ 中选择视频质量?

[英]How to choose video quality in VLCJ?

目前我正在使用这个 HLS stream 进行测试:

https://cph-p2p-msl.akamaized.net/hls/live/2000341/test/master.m3u8

VLCJ 播放器播放视频的质量通常是 144p,这很糟糕。 如果之后再次开始播放视频,则质量变为 360p。 当我将屏幕切换到电视时,它开始更频繁地显示 360p 质量的视频。

此外,在此之前,我在 C # 中创建了一个带有 VLC 播放器的应用程序。 在那里,视频以 144p 质量启动,一段时间后质量自动更改为 720p。

根据最基本的示例,我不带参数运行 VLCJ

如何确保选择最好的质量?

大多数播放器以低比特率开始的原因是为了允许最初快速启动,然后他们将随着进度切换到更高的比特率,并假设设备和网络条件支持更高的比特率。

您可以在大多数付费流媒体服务上看到这种行为。

更新- 请参阅下面的讨论和随想曲的单独答案以了解 vlcj 的正确方法 - 曲目 API 返回单个曲目而不是单独的演绎子曲目列表。

原始答案 - 请参阅上面的更新:

如果你想自己编程 select 轨道,你也可以在大多数播放器中这样做。 VLCJ 的语法是:

mediaPlayer.setVideoTrack(newVideoTrack);

在此处的链接中有更多详细信息,包括如何查询可用曲目: https://capricasoftware.co.uk/projects/vlcj-3/tutorials/media-info

没有具体的原生 API 来处理这个,但是你可以在播放媒体时使用媒体选项参数来处理:

mediaPlayer.media().play(
  "https://cph-p2p-msl.akamaized.net/hls/live/2000341/test/master.m3u8",
  ":adaptive-logic=highest"
);

除了“最高”之外,还有其他可用选项:

  • 预测的
  • 接近最优
  • 速度
  • 固定利率
  • 最低
  • 最高

使用vlc -H并搜索“自适应”以在命令行帮助中找到这些值。

如果你不想在每次播放媒体时将它作为媒体选项传递,你可以在MediaPlayerFactory上设置它(语法略有不同):

MediaPlayerFactory factory = new MediaPlayerFactory("--adaptive-logic=highest");

为了确认这项工作,我使用了已发布问题中的 stream URL。

如果没有此设置,它会以 144p 开始,然后切换到 1080p。 使用此设置,它会立即开始 1080p 播放。

请注意,以这种方式传递的选项不受支持,并且可能会随着 VLC 的任何新版本而改变。

我刚刚解决了我的问题。 我查看了运行 vlc.do.net.forms 时使用的 VLC 版本... VLC 版本是 3.0.17.4。 我将 VLC 版本 3.0.9.2 与 vlcj 一起使用。 我用 VLC 3.0.17.4 运行 vlcj,视频开始时为 144p,然后更改为 1080p。 问题出在 VLC 版本中。 所以这是一个真正解决问题的方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM