强制 libvlc/libvlcsharp 为 chromecast 转码视频?

Posted

技术标签:

【中文标题】强制 libvlc/libvlcsharp 为 chromecast 转码视频?【英文标题】:Force libvlc/libvlcsharp to transcode video for chromecast? 【发布时间】:2020-12-27 23:11:57 【问题描述】:

我目前正在使用 libvlcsharp 并尝试使用流式传输到 chromecast 的功能。它适用于“大多数”情况,特别是在它发送视频并且 chromecast 已经支持视频格式(例如 AVI)的情况下。如果我执行 x265 之类的更新操作,则会出现黑屏,因为 chromecast 不支持该格式。

在 VLC android 应用程序中,它足够聪明地告诉您它将对视频进行转码,因为它以 chromecast 不支持的格式检测到它(这是一个弹出的对话框,说电池可能是受到影响,因为它对其进行了转码)。在 libvlcsharp 中,我想总是转码。有没有办法从 libvlcsharp API 或我可以传递给 libvlc 的东西中做到这一点?

【问题讨论】:

您是否查看了 VLC for android 源代码以了解他们是如何做到的? 【参考方案1】:

查看https://code.videolan.org/videolan/vlc-android/-/blob/master/application/resources/src/main/java/org/videolan/resources/VLCOptions.kt#L222中的选项

if (hasRenderer) 
            media.addOption(":sout-chromecast-audio-passthrough=" + prefs.getBoolean("casting_passthrough", true))
            media.addOption(":sout-chromecast-conversion-quality=" + prefs.getString("casting_quality", "2")!!)
        

这可能应该默认添加到 libvlcsharp 中。随意贡献 PR。

【讨论】:

以上是关于强制 libvlc/libvlcsharp 为 chromecast 转码视频?的主要内容,如果未能解决你的问题,请参考以下文章

C 强制类型转换

C语言 int转char

c语言强制int转化为char命令是啥?

强制定义 Go 结构以将 unsafe.Pointer() 转换为 C 结构

C#:如何将对象强制转换为其实现的接口

c语言强制转换的疑问