如何使用具有分辨率切换能力的原生 Android 制作视频播放器,就像我们在 YouTube 中看到的那样?
Posted
技术标签:
【中文标题】如何使用具有分辨率切换能力的原生 Android 制作视频播放器,就像我们在 YouTube 中看到的那样?【英文标题】:How to make a Video Player using Native Android that have resolution switching ability like we see in YouTube? 【发布时间】:2020-03-16 08:28:26 【问题描述】:我想使用视频播放器,例如。在 android 应用中使用 ExoPlayer,它将支持我们在 YouTube 中看到的分辨率切换。
我的 API 有 480p、720p、1080p 的视频文件。 我想在播放器中提供这些选项,并且可以从播放器本身切换它,并从 URL 播放相应的文件。
我见过诸如轨道选择器之类的解决方案,但是这适用于在线文件吗?我有类似的链接:
www.example.com/videos/480/demo.mp4
www.example.com/videos/720/demo.mp4
www.example.com/videos/1080/demo.mp4
请建议是否有其他解决方案,例如 API 更改或任何其他协议等。
【问题讨论】:
【参考方案1】:为什么不使用 ffmpeg 将 mp4 文件转换为 hls 或 mpd 流格式,以便您可以逐块流式传输,播放器将根据他的算法选择最佳分辨率?
【讨论】:
听起来不错,但我可以手动设置分辨率吗? 当然可以,查看文档:exoplayer.dev/track-selection.html【参考方案2】:看看这个项目,这允许用户通过从 ffmpeg 编码的 hls 流中选择轨道手动选择分辨率。
https://github.com/namespace7/HLS_Player
要从视频中生成 hls 流,请通过此链接 https://superuser.com/a/1302736/1108219
【讨论】:
以上是关于如何使用具有分辨率切换能力的原生 Android 制作视频播放器,就像我们在 YouTube 中看到的那样?的主要内容,如果未能解决你的问题,请参考以下文章
解决在Mac的Vmware Fusion中装win7系统和mac原生系统直接切换win7系统分辨率变化的问题
如何使用 Android 代码更改分辨率(大小)和密度,Runtime.getRuntime().exec(...) 不起作用