@ capgo/ 电容- 视频播放器
在您 Capacitor app 的本地全屏播放器中播放视频,并配有字幕,图片和Chromecast支持.
🤖 建筑与AI编码代理? 安装 Capgo 技能 所以克劳德代码,代码,光标,副驾驶,或双子座CLI知道如何安装和使用
@capgo/capacitor-video-player在您的电容应用程序中:npx skills add Cap-go/capgo-skills。然后问你的经纪人: 添加@capgo/capor-video-player到我的Capacitor应用程序上,并把它接上" 代理设置指南 • 妇女 主机磁共振
主要特点
- 玩家数字 :
initPlayer()为 URL 创建播放器,使用play(), (中文(简体) ),pause()财务报告和审定财务报表stopAllPlayers()。 。 。 . - 播放控件数字 :
setCurrentTime(), (中文(简体) ),setVolume(), (中文(简体) ),setMuted()财务报告和审定财务报表setRate()与匹配的获取器. - 字幕: 一个或多个带有语言选项的字幕音轨.
- 本地额外项目:图片中的图片,背景模式,末端的回路和Chromecast铸造.
- 主计长数字 :
showController()财务报告和审定财务报表isControllerIsFullyVisible()对本地控制. - 平台: iOS,Android和Web. 互联网档案馆的存檔,存档日期2013-12-02. Web还支持嵌入式玩家模式.
文档
这里有最完整的医生: https://capgo.app/docs/plugins/video-player/ 互联网档案馆的存檔,存档日期2014-12-22
兼容性
| 插件版本 | 电容兼容性 | 维护 |
|---|---|---|
| 联合国 | 联合国 | ✅ |
| 页:1 | 页:1 | 应要求 |
| 页:1 | 页:1 | ❌ |
| 页:1 | 页:1 | ❌ |
说明: 此插件的主要版本沿用了Capacitor的主要版本. 使用匹配您的 Capacitor 安装的版本( 如 Capacitor 8 的插件 v8) 。 只有最新的主要版本得到积极维护.
安装
您可以使用我们的 AI 辅助设置安装插件 。 使用以下命令将 Capgo 技能添加到您的 AI 工具 :
npx skills add https://github.com/cap-go/capacitor-skills --skill capacitor-plugins
然后使用下列提示:
Use the `capacitor-plugins` skill from `cap-go/capacitor-skills` to install the `@capgo/capacitor-video-player` plugin in my project.
如果您更喜欢手动设置,请通过运行以下命令来安装插件,并遵循下面的平台特定指令:
bun add @capgo/capacitor-video-player
bunx cap sync
iOS Chromecast 设置
iOS Chromecast使用Google Cast SDK默认媒体接收器. 何时 chromecast 启用时,插件会在全屏iOS播放器上添加一个 Cast 按钮,在选定的接收器上加载当前媒体,并保持插件播放/暂停/seek/批量呼叫指向正在运行的 Cast 会话.
对于在iOS上的 Cast 发现, 请在您的应用程序中添加本地网络密钥 Info.plist。 。 。 .
<key>NSBonjourServices</key>
<array>
<string>_googlecast._tcp</string>
<string>_CC1AD845._googlecast._tcp</string>
</array>
<key>NSLocalNetworkUsageDescription</key>
<string>$(PRODUCT_NAME) uses the local network to discover Cast-enabled devices on your WiFi network.</string>
await VideoPlayer.initPlayer({
playerId: 'fullscreen',
mode: 'fullscreen',
url: 'https://example.com/video.mp4',
title: 'Video title',
smallTitle: 'Video subtitle',
artwork: 'https://example.com/poster.jpg',
chromecast: true,
});
支持的特性
| 特性 | iOS系统 | 机器人 | 网页 |
|---|---|---|---|
| 全屏本地视频播放器 | ✅ | ✅ | ❌ |
| 嵌入式网络视频播放器 | ❌ | ❌ | ✅ |
| 图片中的图片 | ✅ | ✅ | ❌ |
| 字幕 | ✅ | ✅ | ✅ |
| DRM 保护回放 | ✅ | ✅ | ❌ |
| 重播 Chromecast 发送者 | ❌ | ✅ | ❌ |
Chromecast (Android) (英语)
Chromecast在Android上以全屏模式支持. 启用它与 chromecast 选项。 当一个 Cast 会话开始时,插件会在接收器上加载相同的媒体URL,保持当前回放位置,并通过 Cast会话播放,暂停,寻求,以及时间表控制.
await VideoPlayer.initPlayer({
mode: 'fullscreen',
playerId: 'main-player',
url: 'https://example.com/video.m3u8',
title: 'Video title',
smallTitle: 'Optional subtitle',
artwork: 'https://example.com/artwork.jpg',
chromecast: true,
showControls: true,
});
Chromecast 选项
| 选项 | 类型 | 默认 | 说明 |
|---|---|---|---|
chromecast | boolean | true | 显示Android Cast按钮并允许发送者回放. |
title | string | "" | 在发件人控件和接收器元数据中显示标题 . |
smallTitle | string | "" | 在发件人控件和元数据中显示字幕. |
artwork | string | "" | 用于 Cast 元数据及发送者 Cast 艺术品的图像 URL. |
所需资源和说明
- 媒体URL必须能够被Chromecast设备所达到,而不仅仅是Android应用.
- 铸作支持依赖于接收器的应用和装置媒体支持. MP4,HLS,DASH,和平滑结构流被插件映射为Cast相容的MIME类型.
- Widevine DRM元数据被传送到Cast媒体项目. 受 DRM 保护的流可能仍然需要一个支持您的许可证服务器和 DRM 流量的接收器 .
- Android本地玩家使用的请求头无法自动为Chromecast接收器提供. 使用公开的 URL, 签名的 URL, 由您的接收器支持的 cookie, 或安全媒体的自定义接收器 .
图片中的 Android 图片
Android上的图片需要您的应用活动来声明 PiP 支持 android/app/src/main/AndroidManifest.xml数字 :
<activity
android:name=".MainActivity"
android:supportsPictureInPicture="true"
android:launchMode="singleTask"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|smallestScreenSize|screenLayout|uiMode|navigation|density"
...>
</activity>
launchMode="singleTask" 编辑 configChanges 旗子防止玩家在进入或离开PiP时的活动被重新创建.
图片和背景音频中的 iOS 图片
在 iOS 上, 本地玩家配置 AVAudioSession 用于 Pip 和背景播放 pipEnabled 或者说 bkmodeEnabled 真实( 都默认为真实) 。 您的应用程序还需要正确的列表和能力条目 :
- 在 Xcode 中,添加 背景模式 能力与能力 音频、 AirPlay 和图片。 。 。 .
- 单位
ios/App/App/Info.plist,包括音频背景模式 :
<key>UIBackgroundModes</key>
<array>
<string>audio</string>
</array>
在物理 iPhone 上测试 PiP(模拟器不支持图片中的图片). 设置 audioCategory: 'ambient' 尊重无声开关, 但是在屏幕锁上保持沉默音频; 让它未设定或使用 playback 用于播放音响背景.
API 密码
initPlayer(...)isPlaying(...)play(...)pause(...)getDuration(...)getCurrentTime(...)setCurrentTime(...)getVolume(...)setVolume(...)getMuted(...)setMuted(...)setRate(...)getRate(...)stopAllPlayers()showController()isControllerIsFullyVisible()exitPlayer()hidePlayer()showPlayer()getPluginVersion()- 接口
内置 Player (...)
initPlayer(options: capVideoPlayerOptions) => Promise<capVideoPlayerResult>
初始化视频播放器
| 参数 | 类型 |
|---|---|
options | capVideoPlayerOptions |
回返情况: Promise<capVideoPlayerResult>
正在播放(...)
isPlaying(options: capVideoPlayerIdOptions) => Promise<capVideoPlayerResult>
如果给定的播放器正在播放, 返回
| 参数 | 类型 |
|---|---|
options | capVideoPlayerIdOptions |
回返情况: Promise<capVideoPlayerResult>
播放(...)
play(options: capVideoPlayerIdOptions) => Promise<capVideoPlayerResult>
播放给定播放器的当前视频Id
| 参数 | 类型 |
|---|---|
options | capVideoPlayerIdOptions |
回返情况: Promise<capVideoPlayerResult>
暂停(...)
pause(options: capVideoPlayerIdOptions) => Promise<capVideoPlayerResult>
暂停给定播放器的当前视频Id
| 参数 | 类型 |
|---|---|
options | capVideoPlayerIdOptions |
回返情况: Promise<capVideoPlayerResult>
获取期限(...)
getDuration(options: capVideoPlayerIdOptions) => Promise<capVideoPlayerResult>
从给定的播放器ID获取当前视频的持续时间
| 参数 | 类型 |
|---|---|
options | capVideoPlayerIdOptions |
回返情况: Promise<capVideoPlayerResult>
获取当前时间(...)
getCurrentTime(options: capVideoPlayerIdOptions) => Promise<capVideoPlayerResult>
从给定的播放器ID获取当前视频的时间
| 参数 | 类型 |
|---|---|
options | capVideoPlayerIdOptions |
回返情况: Promise<capVideoPlayerResult>
设置当前时间(...)
setCurrentTime(options: capVideoTimeOptions) => Promise<capVideoPlayerResult>
设定当前从给定的 playerId 中查找当前视频的时间
| 参数 | 类型 |
|---|---|
options | capVideoTimeOptions |
回返情况: Promise<capVideoPlayerResult>
获取Volume (...)
getVolume(options: capVideoPlayerIdOptions) => Promise<capVideoPlayerResult>
从给定的播放器ID获取当前视频的音量
| 参数 | 类型 |
|---|---|
options | capVideoPlayerIdOptions |
回返情况: Promise<capVideoPlayerResult>
设置卷 (...)
setVolume(options: capVideoVolumeOptions) => Promise<capVideoPlayerResult>
将当前视频的音量设定为给定的播放器ID
| 参数 | 类型 |
|---|---|
options | capVideoVolumeOptions |
回返情况: Promise<capVideoPlayerResult>
获取Muted (...)
getMuted(options: capVideoPlayerIdOptions) => Promise<capVideoPlayerResult>
从给定的播放器ID中获取当前视频的哑音
| 参数 | 类型 |
|---|---|
options | capVideoPlayerIdOptions |
回返情况: Promise<capVideoPlayerResult>
设置已挂载(...)
setMuted(options: capVideoMutedOptions) => Promise<capVideoPlayerResult>
将当前视频的变音设定为给定播放器ID
| 参数 | 类型 |
|---|---|
options | capVideoMutedOptions |
回返情况: Promise<capVideoPlayerResult>
设置Rate(...)
setRate(options: capVideoRateOptions) => Promise<capVideoPlayerResult>
设定当前视频从给定播放器ID 的速率
| 参数 | 类型 |
|---|---|
options | capVideoRateOptions |
回返情况: Promise<capVideoPlayerResult>
获取Rate(...)
getRate(options: capVideoPlayerIdOptions) => Promise<capVideoPlayerResult>
从给定的播放器ID获取当前视频的速率
| 参数 | 类型 |
|---|---|
options | capVideoPlayerIdOptions |
回返情况: Promise<capVideoPlayerResult>
停止所有 Players ()
stopAllPlayers() => Promise<capVideoPlayerResult>
停止所有玩家的游戏
回返情况: Promise<capVideoPlayerResult>
显示控制器 ()
showController() => Promise<capVideoPlayerResult>
显示控制器
回返情况: Promise<capVideoPlayerResult>
是 CaptainIs Fully Visible () () 翻译
isControllerIsFullyVisible() => Promise<capVideoPlayerResult>
控制器易见
回返情况: Promise<capVideoPlayerResult>
退出 Player ()
exitPlayer() => Promise<capVideoPlayerResult>
退出玩家
回返情况: Promise<capVideoPlayerResult>
隐藏layer ()
hidePlayer() => Promise<capVideoPlayerResult>
隐藏当前呈现的播放器 UI 不停止播放( 本地全屏) .
打电话 showPlayer() 以再次显示.
回返情况: Promise<capVideoPlayerResult>
显示layer ()
showPlayer() => Promise<capVideoPlayerResult>
再次显示先前隐藏的玩家 UI( 本地全屏) .
回返情况: Promise<capVideoPlayerResult>
获取 PluginVersion ()
getPluginVersion() => Promise<{ version: string; }>
获取本地 Capacitor 插件版本 .
在网络上, 执行返回 "web"。 。 。 .
回返情况: Promise<{ version: string; }>
接口
图像显示器
| Prop | 类型 | 说明 |
|---|---|---|
result | boolean | 当成功时结果被设定为真实 |
method | string | 方法名称 |
value | any | 返回的数值 |
message | string | 信件字符串 |
图像显示器选项
| Prop | 类型 | 说明 |
|---|---|---|
mode | string | 玩家模式-"全屏"-"被嵌入"(只有Web) |
url | string | 要播放的视频url |
chromecastUrl | string | 用于Chromecast(iOS,Android)的可选覆盖URL. 这使得您可以投放一个可替代的递解/功能(例如MPEG-DASH + Widevine),同时保持了可调取回放的URL不变(例如HLS + FairPlay在iOS上). |
subtitle | string | 与视频相关的字幕url Prefer subtitles 当提供多个音轨时。 用于向后兼容 . |
language | string | 字幕语言见 https://github.com/libyal/libfwnt/wiki/Language-Code-identifers (中文(简体) ) 偏爱 subtitles 当提供多个音轨时。 用于向后兼容 . |
subtitles | VideoSubtitle[] | 多个字幕音轨(iOS,Android). 提供时,优先于 subtitle 编号 : language。 。 。 . |
chapters | VideoChapter[] | 长式内容的分章标记(iOS,Android). 在本地全屏播放器中显示为章节列表; 选择一章 startTime。 。 。 . |
subtitleOptions | SubTitleOptions | 子标题选项 |
playerId | string | 玩家的 DIV 元素父代码 |
rate | number | 初始播放率 |
exitOnEnd | boolean | 在视频端( iOS, Android) 默认退出: true |
loopOnEnd | boolean | 退出时循环视频 End 假(iOS, Android)默认:假 |
pipEnabled | boolean | 图片启用中的图片( iOS, Android) 默认: 真 |
bkmodeEnabled | boolean | 背景模式 启用( iOS, Android) 默认: 真 |
audioCategory | 'ambient' | 'playback' | 'moviePlayback' | iOS音频会话分类行为(iOS). –"环境":尊重iPhone无声开关-"回放":忽略了iPhone无声开关-"moviePlayback":为视频和长形AirPlay优化了回放. 在省略时, 插件从其他选项中解决该类 : "playback" 若为 pipEnabled 或者说 bkmodeEnabled 真实( 默认为真实) , 否则 "ambient"。 。 。 . |
showControls | boolean | 显示控件启用( iOS, Android) 默认: 真 |
displayMode | string | 显示模式 ["全","相","地景"] (iOS, Android) 默认:"全" |
componentTag | string | 组件标记或 DOM 元素标记( React app) |
width | number | 玩家 Width( 模式"只嵌入") |
height | number | 玩家身高( 仅“ 嵌入” 模式) |
headers | { [key: string]: string; } | 曼努埃尔·加西亚·马林(英语:Manuel García Marín (iOS, Android))的请求信头https://github.com/PhantomPainX 页面存档备份,存于互联网档案馆(中文(简体) ) |
title | string | 玩家和Chromecast元数据(iOS, Android)中显示的标题由曼努埃尔·加西亚·马林(英语:Manuel García Marín (film))所出https://github.com/PhantomPainX 页面存档备份,存于互联网档案馆(中文(简体) ) |
smallTitle | string | 在玩家和Chromecast元数据(iOS,Android)中标题下显示的子标题由Manuel García Marín(https://github.com/PhantomPainX 页面存档备份,存于互联网档案馆(中文(简体) ) |
accentColor | string | ExoPlayer 进步条和斯宾纳颜色(Android)由曼努埃尔·加西亚·马林(英语:Manuel García Marín (film))所出https://github.com/PhantomPainX 页面存档备份,存于互联网档案馆) 必须是有效的十六进制颜色代码默认值 : #FFFFFF |
chromecast | boolean | Chromecast 启用/失效(iOS,Android)iOS需要Google Cast SDK设置和本地网络 Info.plist密钥. 曼努埃尔·加西亚·马林(签名)https://github.com/PhantomPainX 页面存档备份,存于互联网档案馆默认:真实 |
artwork | string | 由曼努埃尔·加西亚·马林(英语:Manuel García Marín (film))在Chromecast播放器(iOS, Android)上映的艺术工作url(英语:https://github.com/PhantomPainX 页面存档备份,存于互联网档案馆默认: "" |
drm | DrmOptions | 被保护内容的 DRM 配置( iOS: FairPlay, Android: Widevine) 铸造时 威德文 certificateUrl (许可证 URL) 也转发给 Chromecast 接收器作为 media.customData.laurl。 。 。 . |
视频字幕
| Prop | 类型 | 说明 |
|---|---|---|
subtitle | string | 字幕文件的url(vtt, srt, |
language | string | 字幕的语言见 https://github.com/libyal/libfwnt/wiki/Language-Code-identifers (中文(简体) ) |
视频章节
| Prop | 类型 | 说明 |
|---|---|---|
title | string | 章节列表中显示的章节标题 |
startTime | number | 以秒计的起始时间 |
endTime | number | 结束时间为秒( 可选) 。 存储用于未来时间标; 章节跳转使用 startTime 只有在这个释放. |
字幕选项
屏幕字幕的可选风格.
在iOS上,颜色和字体大小通过 AVPlayerItem
textStyleRules,只有WebVTT的苹果文档。 IMSC1和其他数据
无法通过此 API 来样式化 .
内置的WebVTT提示样式可以优先于等同类型
subtitleOptions 值; 插件将文本样式规则设置为平台
倒置, 无法保证默认作者的提示样式 .
| Prop | 类型 | 说明 |
|---|---|---|
foregroundColor | string | RGBA中的前景色. 在Android上,当插件应用字幕样式时,省略的值会回到 rgba(255,255,255,1)时 subtitleOptions 不存在 媒体的嵌入式提示颜色可以覆盖后退 在iOS上,省略的颜色不是由插件设置;平台使用取景器的字幕外观设置,而不是固定的插件默认. |
backgroundColor | string | RGBA中的背景颜色. 在Android上,当插件在全屏中应用字幕样式时,省略的值会回到 rgba(0,0,0,1)在图片中,当插件应用其标题样式(例如侧车字幕或非空)时,省略的值会回到透明状态 subtitleOptions 包括颜色覆盖。 一个空的 subtitleOptions 对象本身并不选择倒置。 在只有字体大小的选项下,嵌入的提示样式会保持被启用,因此作者的提示背景可以在PiP中保持可见. 何时 subtitleOptions 不存在,媒体的嵌入式提示颜色可以覆盖倒计时。 在iOS上,省略的颜色不是由插件设置;平台使用取景器的字幕外观设置,而不是固定的插件默认. |
fontSize | number | CSS 像素中的字体大小 。 在Android上,提供的值在应用前被四舍五入到最接近的整数. 在没有侧车字幕URI的嵌入道被省略后,Android使用 SubtitleView.setUserDefaultTextSize() (用户的系统标题大小),而非固定的16 px大小. 当此属性被省略时, Sidecar 字幕仍然使用固定的默认大小 。 在iOS上,数值映射到AVFoundation相对大小,其中16等同系统默认(100%). |
选项
| Prop | 类型 | 说明 |
|---|---|---|
fairplay | FairPlayDrmOptions | FairPlay DRM 配置( iOS) |
playready | PlayreadyDrmOptions | 播放 Ready DRM 配置 |
widevine | WidevineDrmOptions | Widevine DRM 配置 (Android) |
FairPlayDrm 选项
| Prop | 类型 | 说明 |
|---|---|---|
certificateUrl | string | 获取 FairPlay 证书的 URL |
contentKeySpcUrl | string | 发送 SPC 并获得 CKC 许可证的 URL (FairPlay 许可证服务器 URL) |
assetId | string | 生成 SPC 时使用的可选 FairPlay 资产标识符 。 默认 skd:// 关键请求中的内容标识符. |
播放已准备
| Prop | 类型 | 说明 |
|---|---|---|
certificateUrl | string | 获取 PlayReady 许可证的 URL |
宽度选项
| Prop | 类型 | 说明 |
|---|---|---|
certificateUrl | string | 获取 Widevine 许可证的 URL |
capVideoPlayer 选项
| Prop | 类型 | 说明 |
|---|---|---|
playerId | string | 玩家的 DIV 元素父代码 |
视频时间选项
| Prop | 类型 | 说明 |
|---|---|---|
playerId | string | 玩家的 DIV 元素父代码 |
seektime | number | 视频时间值 |
图像卷选项
| Prop | 类型 | 说明 |
|---|---|---|
playerId | string | 玩家的 DIV 元素父代码 |
volume | number | [0-1]之间的量值 |
图像混合选项
| Prop | 类型 | 说明 |
|---|---|---|
playerId | string | 玩家的 DIV 元素父代码 |
muted | boolean | 输入数值为真或假 |
超视距选项
| Prop | 类型 | 说明 |
|---|---|---|
playerId | string | 玩家的 DIV 元素父代码 |
rate | number | 利率值 |