提交 9188608f 编写于 作者: DCloud-yyl's avatar DCloud-yyl

同步代码@20240521

上级 60742c7c
## 1.0.0(2023-10-26)
实现android平台 video-view 组件,仅支持 uni-app x项目的 uvue 页面
{
"id": "uni-video",
"displayName": "uni-video",
"version": "1.0.0",
"description": "uni-video",
"keywords": [
"uni-video"
],
"repository": "",
"engines": {
"HBuilderX": "^3.7.0"
},
"dcloudext": {
"type": "component-uts",
"sale": {
"regular": {
"price": "0.00"
},
"sourcecode": {
"price": "0.00"
}
},
"contact": {
"qq": ""
},
"declaration": {
"ads": "",
"data": "",
"permissions": ""
},
"npmurl": ""
},
"uni_modules": {
"dependencies": [
"uni-framework"
],
"encrypt": [],
"platforms": {
"cloud": {
"tcb": "u",
"aliyun": "u"
},
"client": {
"Vue": {
"vue2": "u",
"vue3": "u"
},
"App": {
"app-android": "y",
"app-ios": "u"
},
"H5-mobile": {
"Safari": "u",
"Android Browser": "u",
"微信浏览器(Android)": "u",
"QQ浏览器(Android)": "u"
},
"H5-pc": {
"Chrome": "u",
"IE": "u",
"Edge": "u",
"Firefox": "u",
"Safari": "u"
},
"小程序": {
"微信": "u",
"阿里": "u",
"百度": "u",
"字节跳动": "u",
"QQ": "u",
"钉钉": "u",
"快手": "u",
"飞书": "u",
"京东": "u"
},
"快应用": {
"华为": "u",
"联盟": "u"
}
}
}
}
}
\ No newline at end of file
{
"id": "uni-video",
"displayName": "uni-video",
"version": "1.0.0",
"description": "uni-video",
"keywords": [
"uni-video"
],
"repository": "",
"engines": {
"HBuilderX": "^3.7.0"
},
"dcloudext": {
"type": "component-uts",
"sale": {
"regular": {
"price": "0.00"
},
"sourcecode": {
"price": "0.00"
}
},
"contact": {
"qq": ""
},
"declaration": {
"ads": "",
"data": "",
"permissions": ""
},
"npmurl": ""
},
"uni_modules": {
"dependencies": [
"uni-framework"
],
"uni-ext-api": {
"uni": {
"createVideoContext": {
"name": "createVideoContext",
"app": {
"js": false,
"kotlin": true,
"swift": true
}
}
}
},
"encrypt": [],
"platforms": {
"cloud": {
"tcb": "u",
"aliyun": "u"
},
"client": {
"Vue": {
"vue2": "u",
"vue3": "u"
},
"App": {
"app-android": "u",
"app-ios": "u"
},
"H5-mobile": {
"Safari": "u",
"Android Browser": "u",
"微信浏览器(Android)": "u",
"QQ浏览器(Android)": "u"
},
"H5-pc": {
"Chrome": "u",
"IE": "u",
"Edge": "u",
"Firefox": "u",
"Safari": "u"
},
"小程序": {
"微信": "u",
"阿里": "u",
"百度": "u",
"字节跳动": "u",
"QQ": "u",
"钉钉": "u",
"快手": "u",
"飞书": "u",
"京东": "u"
},
"快应用": {
"华为": "u",
"联盟": "u"
}
}
}
}
}
## uts插件开发文档
# uni-video
### 开发文档
[UTS 语法](https://uniapp.dcloud.net.cn/tutorial/syntax-uts.html)
[UTS API插件](https://uniapp.dcloud.net.cn/plugin/uts-plugin.html)
[UTS 组件插件](https://uniapp.dcloud.net.cn/plugin/uts-component.html)
[Hello UTS](https://gitcode.net/dcloud/hello-uts)
## video-view
此插件为uni-app x项目中内置 video 组件的开源uts组件插件,为了避免与内置 video 组件冲突,开源uts组件插件注册为 video-view 组件。
**注意**
- video-view组件不支持[uni.createVideoContext](https://uniapp.dcloud.net.cn/uni-app-x/api/create-video-context.html)
[Hello UTS](https://gitcode.net/dcloud/hello-uts)
\ No newline at end of file
import { UniVideoTimeUpdateEvent, UniVideoTimeUpdateEventDetail, UniVideoFullScreenChangeEvent, UniVideoFullScreenChangeEventDetail, UniVideoErrorEvent, VideoError, UniVideoProgressEvent, UniVideoProgressEventDetail, UniVideoFullScreenClickEvent, UniVideoFullScreenClickEventDetail, UniVideoControlsToggleEvent, UniVideoControlsToggleEventDetail } from '../interface.uts';
/**
* timeupdate 事件实现
*/
export class UniVideoTimeUpdateEventImpl extends UniCustomEvent<UniVideoTimeUpdateEventDetail> implements UniVideoTimeUpdateEvent {
constructor(detail : UniVideoTimeUpdateEventDetail) {
super("timeupdate", detail);
}
}
/**
* fullscreenchange 事件实现
*/
export class UniVideoFullScreenChangeEventImpl extends UniCustomEvent<UniVideoFullScreenChangeEventDetail> implements UniVideoFullScreenChangeEvent {
constructor(detail : UniVideoFullScreenChangeEventDetail) {
super("fullscreenchange", detail);
}
}
/**
* error 事件实现
*/
export class UniVideoErrorEventImpl extends UniCustomEvent<VideoError> implements UniVideoErrorEvent {
constructor(detail : VideoError) {
super("error", detail);
}
}
/**
* progress 事件实现
*/
export class UniVideoProgressEventImpl extends UniCustomEvent<UniVideoProgressEventDetail> implements UniVideoProgressEvent {
constructor(detail : UniVideoProgressEventDetail) {
super("progress", detail);
}
}
/**
* fullscreenclick 事件实现
*/
export class UniVideoFullScreenClickEventImpl extends UniCustomEvent<UniVideoFullScreenClickEventDetail> implements UniVideoFullScreenClickEvent {
constructor(detail : UniVideoFullScreenClickEventDetail) {
super("fullscreenclick", detail);
}
}
/**
* controlstoggle 事件实现
*/
export class UniVideoControlsToggleEventImpl extends UniCustomEvent<UniVideoControlsToggleEventDetail> implements UniVideoControlsToggleEvent {
constructor(detail : UniVideoControlsToggleEventDetail) {
super("controlstoggle", detail);
}
}
\ No newline at end of file
import { CreateVideoContext, VideoContext, RequestFullScreenOptions, Danmu } from '../interface.uts';
import { UniVideoTimeUpdateEvent, UniVideoTimeUpdateEventDetail, UniVideoFullScreenChangeEvent, UniVideoFullScreenChangeEventDetail, UniVideoErrorEvent, VideoError, UniVideoProgressEvent, UniVideoProgressEventDetail, UniVideoFullScreenClickEvent, UniVideoFullScreenClickEventDetail, UniVideoControlsToggleEvent, UniVideoControlsToggleEventDetail } from '../interface.uts';
import { UniVideoElement } from './index.vue';
export const createVideoContext : CreateVideoContext = function (videoId : string.VideoIdString, component ?: ComponentPublicInstance | null) : VideoContext | null {
let videoElement : UniElement | null = null;
if (component == null) {
const pages = getCurrentPages();
if (pages.length > 0) {
videoElement = pages[pages.length - 1].$el?.parentNode?.querySelector('#' + videoId);
}
} else {
videoElement = component.$el?.parentNode?.querySelector('#' + videoId);
}
if (videoElement == null) return null;
return new VideoContextImpl(videoElement as UniVideoElement);
}
class VideoContextImpl implements VideoContext {
private videoElement : UniVideoElement;
constructor(videoElement : UniVideoElement) {
this.videoElement = videoElement;
}
play() {
this.videoElement.play();
}
pause() {
this.videoElement.pause();
}
seek(position : number) {
this.videoElement.seek(position);
}
stop() {
this.videoElement.stop();
}
sendDanmu(danmu : Danmu) {
this.videoElement.sendDanmu(danmu);
}
playbackRate(rate : number) {
this.videoElement.playbackRate(rate);
}
requestFullScreen(direction ?: RequestFullScreenOptions | null) {
this.videoElement.requestFullScreen(direction);
}
exitFullScreen() {
this.videoElement.exitFullScreen();
}
}
export type VideoTimeUpdateEvent = UniVideoTimeUpdateEvent
export type VideoTimeUpdateEventDetail = UniVideoTimeUpdateEventDetail
export type VideoFullScreenChangeEvent = UniVideoFullScreenChangeEvent
export type VideoFullScreenChangeEventDetail = UniVideoFullScreenChangeEventDetail
export type VideoErrorEvent = UniVideoErrorEvent
export type VideoProgressEvent = UniVideoProgressEvent
export type VideoProgressEventDetail = UniVideoProgressEventDetail
export type VideoFullScreenClickEvent = UniVideoFullScreenClickEvent
export type VideoFullScreenClickEventDetail = UniVideoFullScreenClickEventDetail
export type VideoControlsToggleEvent = UniVideoControlsToggleEvent
export type VideoControlsToggleEventDetail = UniVideoControlsToggleEventDetail
\ No newline at end of file
<template>
<view>
<view style="width: 300px;height: 225px;">
<slot />
</view>
</template>
<script lang="uts">
import UTSAndroid from 'io.dcloud.uts.UTSAndroid';
import IjkPlayerView from 'io.dcloud.media.video.ijkplayer.media.IjkPlayerView';
import OnPlayerChangedListener from 'io.dcloud.media.video.ijkplayer.OnPlayerChangedListener';
import OnPlayerChangedListener from 'io.dcloud.media.video.ijkplayer.media.OnPlayerChangedListener';
import OnTextureRenderViewListener from 'io.dcloud.media.video.ijkplayer.media.TextureRenderView.OnTextureRenderViewListener';
import EnumPlayStrategy from 'io.dcloud.media.video.ijkplayer.option.EnumPlayStrategy';
import MediaPlayerParams from 'io.dcloud.media.video.ijkplayer.media.MediaPlayerParams';
import OnInfoListener from 'tv.danmaku.ijk.media.player.IMediaPlayer.OnInfoListener';
import IMediaPlayer from 'tv.danmaku.ijk.media.player.IMediaPlayer';
import OnBufferingUpdateListener from 'tv.danmaku.ijk.media.player.IMediaPlayer.OnBufferingUpdateListener';
import OnErrorListener from "tv.danmaku.ijk.media.player.IMediaPlayer.OnErrorListener";
import Activity from 'android.app.Activity';
import FrameLayout from 'android.widget.FrameLayout';
import ViewGroup from 'android.view.ViewGroup';
import View from 'android.view.View';
import TextUtils from 'android.text.TextUtils';
import Locale from 'java.util.Locale';
import JSONObject from 'org.json.JSONObject';
import MediaPlayer from "android.media.MediaPlayer";
import Bitmap from 'android.graphics.Bitmap';
import Handler from 'android.os.Handler';
import Looper from 'android.os.Looper';
import Glide from 'com.bumptech.glide.Glide';
import { Danmu, RequestFullScreenOptions } from '../interface.uts';
import { UniVideoTimeUpdateEventDetail, UniVideoFullScreenChangeEventDetail, UniVideoProgressEventDetail, UniVideoFullScreenClickEventDetail, UniVideoControlsToggleEventDetail } from '../interface.uts';
import { UniVideoTimeUpdateEventImpl, UniVideoFullScreenChangeEventImpl, UniVideoErrorEventImpl, UniVideoProgressEventImpl, UniVideoFullScreenClickEventImpl, UniVideoControlsToggleEventImpl } from './event.uts';
import { VideoErrorImpl } from '../unierror.uts';
export default {
name: "video-view",
name: "video",
data() {
return {
rootView: null as FrameLayout | null,
playerView: null as IjkPlayerView | null
playerView: null as IjkPlayerView | null,
currentPos: 0,
currentFrame: null as Bitmap | null,
handler: new Handler(Looper.getMainLooper())
};
},
emits: ["play", "pause", "ended", "timeupdate", "fullscreenchange", "waiting", "error", "progress", "fullscreenclick", "controlstoggle"],
......@@ -83,7 +92,7 @@
},
"direction": { // 设置全屏时视频的方向,不指定则根据宽高比自动判断。有效值为 0(正常竖向), 90(屏幕逆时针90度), -90(屏幕顺时针90度)
type: Number,
default: -90
default: -1
},
"showProgress": { // 是否展示进度条,若不设置,宽度大于240时才会显示
type: Boolean,
......@@ -159,8 +168,9 @@
handler(newValue : string, oldValue : string) {
let path = this.getSrcPath(newValue);
if (newValue != oldValue) { // 切换资源
this.playerView?.switchVideoPath(newValue);
this.reload();
this.playerView?.setCenterPlayBntVisibility(this.showCenterPlayBtn);
this.playerView?.switchVideoPath(path);
this.reload(true);
} else { // 初始化资源
this.playerView?.setVideoPath(path);
}
......@@ -171,7 +181,7 @@
handler(value : boolean) {
// 临时方案
setTimeout(() => { // 运行在非主线程中
this.runOnUiThread(function () {
this.runOnMain(function () {
if (value && this.playerView?.isPlaying() == false) {
this.playerView?.start();
}
......@@ -357,10 +367,13 @@
},
"header": {
handler(newValue : UTSJSONObject, oldValue : UTSJSONObject) {
this.playerView?.setHeader(newValue.toString());
if (newValue != oldValue) { // 切换header
const newHeader = JSON.stringify(newValue);
const oldHeader = JSON.stringify(oldValue);
this.playerView?.setHeader(newHeader);
if (newHeader != oldHeader) { // 切换header
this.playerView?.setCenterPlayBntVisibility(this.showCenterPlayBtn);
this.playerView?.switchVideoPath(this.getSrcPath(this.src)); // 需要重新加载
this.reload();
this.reload(true);
}
},
immediate: false
......@@ -375,21 +388,37 @@
NVLoaded() {
this.playerView?.init();
this.playerView?.setPlayerRootView(this.$el);
this.playerView?.setOnPlayerChangedListener(new OnPlayerChangedListenerImpl(this));
this.playerView?.setOnPlayerChangedListener(new OnPlayerChangedListenerImpl(this, this.playerView!));
this.playerView?.setOnInfoListener(new OnInfoListenerImpl(this, this.playerView!));
this.playerView?.setOnBufferingUpdateListener(new OnBufferingUpdateListenerImpl(this));
this.playerView?.setOnErrorListener(new OnErrorListenerImpl(this));
this.playerView?.setOnTextureRenderViewListener(new OnTextureRenderViewListenerImpl(this, this.playerView!));
},
NVUnloaded() { // 资源回收
this.playerView?.onDestroy();
this.playerView = null;
if (this.$el != null) { // 如果组件绑定了视图则需要在组件销毁时释放视图相关资源
this.playerView?.onDestroy();
this.playerView = null;
}
},
NVRecycler() {
this.playerView = this.$el?.getChildAt(0) as IjkPlayerView;
this.playerView?.reset();
this.resetListener();
if (this.currentPos > 0) {
this.runDelayed(() => {
this.playerView?.hidePoster();
this.playerView?.showLastFrame(this.currentFrame);
this.playerView?.seekTo(this.currentPos as Int);
}, 100);
}
},
expose: ['play', 'pause', 'seek', 'requestFullScreen', 'exitFullScreen', 'stop', 'hide', 'show', 'close', 'sendDanmu', 'playbackRate'],
expose: ['play', 'pause', 'seek', 'requestFullScreen', 'exitFullScreen', 'stop', 'hide', 'show', 'close', 'sendDanmu', 'playbackRate', 'currentPos', 'currentFrame'],
methods: {
/**
* 播放视频
*/
play: function () {
this.runOnUiThread(function () {
this.runOnMain(function () {
this.playerView?.start();
});
},
......@@ -397,7 +426,7 @@
* 暂停视频
*/
pause: function () {
this.runOnUiThread(function () {
this.runOnMain(function () {
this.playerView?.pause();
});
},
......@@ -413,7 +442,7 @@
* @param direction 视频方向,0(正常竖向), 90(屏幕逆时针90度), -90(屏幕顺时针90度)
*/
requestFullScreen: function (options : RequestFullScreenOptions | null) {
this.runOnUiThread(function () {
this.runOnMain(function () {
let direction = -90;
if (options != null) {
direction = options.direction as Int;
......@@ -425,7 +454,7 @@
* 退出全屏
*/
exitFullScreen: function () {
this.runOnUiThread(function () {
this.runOnMain(function () {
this.playerView?.exitFullScreen();
});
},
......@@ -433,15 +462,19 @@
* 停止播放视频
*/
stop: function () {
this.runOnUiThread(() => {
this.playerView?.stop();
this.runOnMain(() => {
this.playerView?.reset();
this.playerView?.setCenterPlayBntVisibility(this.showCenterPlayBtn);
this.reload(false);
this.currentPos = 0;
this.currentFrame = null;
});
},
/** 
* 隐藏视频播放控件
*/
hide: function () {
this.runOnUiThread(function () {
this.runOnMain(function () {
this.$el?.setVisibility(View.INVISIBLE);
});
},
......@@ -449,7 +482,7 @@
* 显示视频播放控件
*/
show: function () {
this.runOnUiThread(function () {
this.runOnMain(function () {
this.$el?.setVisibility(View.VISIBLE);
});
},
......@@ -457,7 +490,7 @@
* 关闭视频播放控件
*/
close: function () {
this.runOnUiThread(function () {
this.runOnMain(function () {
this.playerView?.stop();
this.playerView?.onDestroy();
this.playerView = null;
......@@ -468,7 +501,7 @@
* @param data 弹幕数据
*/
sendDanmu: function (danmu : Danmu) {
this.runOnUiThread(function () {
this.runOnMain(function () {
const data = new JSONObject();
data.put('text', danmu.text);
data.put('color', danmu.color);
......@@ -484,16 +517,17 @@
},
/**
* 内部函数
* 切换src、header后重新加载
* 重新加载
* @param autoplay autoplay属性是否生效 切换src、header生效 stop不生效
*/
reload: function () {
this.runOnUiThread(function () {
reload: function (autoplay : boolean) {
this.runOnMain(function () {
this.playerView?.setDuration(this.duration as Int * 1000);
this.playerView?.seekTo(this.initialTime as Int * 1000);
this.playerView?.setMutePlayer(this.playerView?.isMutePlayer() == true);
this.playerView?.clearDanma();
this.playerView?.enableDanmaku(this.enableDanmu)
if (this.autoplay) this.playerView?.start();
this.playerView?.enableDanmaku(this.enableDanmu);
if (autoplay && this.autoplay) this.playerView?.start();
});
},
/**
......@@ -501,26 +535,41 @@
* 获取资源路径
*/
getSrcPath: function (src : string) : string {
if (src.startsWith("https://") || src.startsWith("http://")) { // 网络地址
if (src.startsWith("https://") || src.startsWith("http://") || src.startsWith("rtmp://") || src.startsWith("rtsp://")) { // 网络地址
return src;
} else { // 本地地址
return UTSAndroid.getResourcePath(src);
return UTSAndroid.convert2AbsFullPath(src);
}
},
/**
* 内部函数
* runnable切换到UI线程执行
* runnable切换到线程执行
*/
runOnUiThread: function (runnable : () => void) {
(this.$androidContext as Activity).runOnUiThread(new MainRunnable(runnable));
runOnMain: function (runnable : () => void) {
this.handler.post(new RunnableImpl(runnable));
},
/**
* 内部函数
* runnable延迟执行
*/
runDelayed: function (runnable : () => void, delay : Long) {
this.handler.postDelayed(new RunnableImpl(runnable), delay);
},
/**
* 内部函数
* 重置监听,复用时调用
*/
resetListener: function () {
this.playerView?.setOnPlayerChangedListener(new OnPlayerChangedListenerImpl(this, this.playerView!));
this.playerView?.setOnInfoListener(new OnInfoListenerImpl(this, this.playerView!));
this.playerView?.setOnBufferingUpdateListener(new OnBufferingUpdateListenerImpl(this));
this.playerView?.setOnErrorListener(new OnErrorListenerImpl(this));
this.playerView?.setOnTextureRenderViewListener(new OnTextureRenderViewListenerImpl(this, this.playerView!));
}
}
}
/**
* 切换到主线程
*/
class MainRunnable implements Runnable {
class RunnableImpl implements Runnable {
private runnable : (() => void) | null;
......@@ -536,14 +585,40 @@
class OnPlayerChangedListenerImpl implements OnPlayerChangedListener {
private comp : UTSContainer<FrameLayout>;
private playerView : IjkPlayerView;
constructor(comp : UTSContainer<FrameLayout>) {
constructor(comp : UTSContainer<FrameLayout>, playerView : IjkPlayerView) {
super();
this.comp = comp;
this.playerView = playerView;
}
override onChanged(type : String, msg : String) : void {
this.comp.$emit(type, new Map<string, any>().set("detail", msg));
switch (type) {
case "timeupdate":
this.comp.$emit("timeupdate", new UniVideoTimeUpdateEventImpl(JSON.parse<UniVideoTimeUpdateEventDetail>(msg)!));
break;
case "fullscreenchange":
const detail = JSON.parse<UniVideoFullScreenChangeEventDetail>(msg)!;
if (detail.fullScreen) { // 进入全屏时取消监听,避免触发暂停逻辑
this.playerView.setOnTextureRenderViewListener(null);
} else { // 退出全屏时重新监听
setTimeout(() => {
this.playerView.setOnTextureRenderViewListener(new OnTextureRenderViewListenerImpl(this.comp, this.playerView));
}, 100);
}
this.comp.$emit("fullscreenchange", new UniVideoFullScreenChangeEventImpl(detail));
break;
case "fullscreenclick":
this.comp.$emit("fullscreenclick", new UniVideoFullScreenClickEventImpl(JSON.parse<UniVideoFullScreenClickEventDetail>(msg)!));
break;
case "controlstoggle":
this.comp.$emit("controlstoggle", new UniVideoControlsToggleEventImpl(JSON.parse<UniVideoControlsToggleEventDetail>(msg)!));
break;
case "error":
this.comp.$emit("error", new UniVideoErrorEventImpl(new VideoErrorImpl(100001)));
break;
}
// if (type == "fullscreenchange") {
// if (playerView?.isFullscreen() == true) {
// let container = rootView?.getChildAt(1);
......@@ -580,28 +655,25 @@
override onInfo(iMediaPlayer : IMediaPlayer | null, status : Int, extra : Int) : boolean {
switch (status) {
case MediaPlayerParams.STATE_COMPLETED:
if ((this.comp as VideoViewComponent).loop) {
let initialTime = (this.comp as VideoViewComponent).initialTime as Int;
this.comp.$emit("ended", new UniEvent("ended"));
if ((this.comp as VideoComponent).loop) {
let initialTime = (this.comp as VideoComponent).initialTime as Int;
if (initialTime > 0) this.playerView.seekTo(initialTime * 1000);
this.playerView.start();
}
this.comp.$emit("ended");
break;
case MediaPlayerParams.STATE_PLAYING:
this.comp.$emit("play");
this.comp.$emit("play", new UniEvent("play"));
break;
case MediaPlayerParams.STATE_PAUSED:
this.comp.$emit("pause");
break;
case MediaPlayerParams.STATE_ERROR:
this.comp.$emit("error");
this.comp.$emit("pause", new UniEvent("pause"));
break;
case MediaPlayerParams.STATE_PREPARING:
case IMediaPlayer.MEDIA_INFO_BUFFERING_START:
this.comp.$emit("waiting");
case IMediaPlayer.MEDIA_INFO_BUFFERING_START: // 开始缓冲
this.comp.$emit("waiting", new UniEvent("waiting"));
break;
case MediaPlayerParams.STATE_SEEKCOMPLETE:
this.comp.$emit("seekcomplete", new Map<string, string>().set("detail", String.format(Locale.US, "{'position':%d}", this.playerView.getCurPosition())));
// TODO
break;
}
return false;
......@@ -617,8 +689,52 @@
this.comp = comp;
}
override onBufferingUpdate(iMediaPlayer : IMediaPlayer, i : Int) : void {
this.comp.$emit("progress", new Map<string, any>().set("detail", new Map<string, any>().set("buffered", i)));
override onBufferingUpdate(iMediaPlayer : IMediaPlayer | null, i : Int) : void {
const detail : UniVideoProgressEventDetail = {
buffered: i
};
this.comp.$emit("progress", new UniVideoProgressEventImpl(detail));
}
}
class OnErrorListenerImpl implements OnErrorListener {
private comp : UTSContainer<FrameLayout>;
constructor(comp : UTSContainer<FrameLayout>) {
super();
this.comp = comp;
}
override onError(iMediaPlayer : IMediaPlayer | null, what : Int, extra : Int) : Boolean {
if (what == MediaPlayer.MEDIA_ERROR_UNKNOWN) {
this.comp.$emit("error", new UniVideoErrorEventImpl(new VideoErrorImpl(200001)));
} else {
this.comp.$emit("error", new UniVideoErrorEventImpl(new VideoErrorImpl(300001, new SourceError(what + '-' + extra))));
}
return true;
}
}
class OnTextureRenderViewListenerImpl implements OnTextureRenderViewListener {
private comp : UTSContainer<FrameLayout>;
private playerView : IjkPlayerView;
constructor(comp : UTSContainer<FrameLayout>, playerView : IjkPlayerView) {
super();
this.comp = comp;
this.playerView = playerView;
}
override onDetachedFromWindow() : void {
if (this.playerView.isPlaying()) {
this.playerView.pause();
this.playerView.setCenterPlayBntVisibility((this.comp as VideoComponent).showCenterPlayBtn);
(this.comp as VideoComponent).currentPos = this.playerView.getCurPosition();
(this.comp as VideoComponent).currentFrame?.recycle();
(this.comp as VideoComponent).currentFrame = this.playerView.captureFrame();
}
}
}
</script>
\ No newline at end of file
{
"frameworks": [
"libz.tbd"
]
}
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>AvailableLibraries</key>
<array>
<dict>
<key>BinaryPath</key>
<string>DCUniVideo.framework/DCUniVideo</string>
<key>LibraryIdentifier</key>
<string>ios-arm64</string>
<key>LibraryPath</key>
<string>DCUniVideo.framework</string>
<key>SupportedArchitectures</key>
<array>
<string>arm64</string>
</array>
<key>SupportedPlatform</key>
<string>ios</string>
</dict>
<dict>
<key>BinaryPath</key>
<string>DCUniVideo.framework/DCUniVideo</string>
<key>LibraryIdentifier</key>
<string>ios-arm64_x86_64-simulator</string>
<key>LibraryPath</key>
<string>DCUniVideo.framework</string>
<key>SupportedArchitectures</key>
<array>
<string>arm64</string>
<string>x86_64</string>
</array>
<key>SupportedPlatform</key>
<string>ios</string>
<key>SupportedPlatformVariant</key>
<string>simulator</string>
</dict>
</array>
<key>CFBundlePackageType</key>
<string>XFWK</string>
<key>XCFrameworkFormatVersion</key>
<string>1.0</string>
</dict>
</plist>
#if 0
#elif defined(__arm64__) && __arm64__
// Generated by Apple Swift version 5.9.2 (swiftlang-5.9.2.2.56 clang-1500.1.0.2.5)
#ifndef DCUNIVIDEO_SWIFT_H
#define DCUNIVIDEO_SWIFT_H
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wgcc-compat"
#if !defined(__has_include)
# define __has_include(x) 0
#endif
#if !defined(__has_attribute)
# define __has_attribute(x) 0
#endif
#if !defined(__has_feature)
# define __has_feature(x) 0
#endif
#if !defined(__has_warning)
# define __has_warning(x) 0
#endif
#if __has_include(<swift/objc-prologue.h>)
# include <swift/objc-prologue.h>
#endif
#pragma clang diagnostic ignored "-Wauto-import"
#if defined(__OBJC__)
#include <Foundation/Foundation.h>
#endif
#if defined(__cplusplus)
#include <cstdint>
#include <cstddef>
#include <cstdbool>
#include <cstring>
#include <stdlib.h>
#include <new>
#include <type_traits>
#else
#include <stdint.h>
#include <stddef.h>
#include <stdbool.h>
#include <string.h>
#endif
#if defined(__cplusplus)
#if defined(__arm64e__) && __has_include(<ptrauth.h>)
# include <ptrauth.h>
#else
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wreserved-macro-identifier"
# ifndef __ptrauth_swift_value_witness_function_pointer
# define __ptrauth_swift_value_witness_function_pointer(x)
# endif
# ifndef __ptrauth_swift_class_method_pointer
# define __ptrauth_swift_class_method_pointer(x)
# endif
#pragma clang diagnostic pop
#endif
#endif
#if !defined(SWIFT_TYPEDEFS)
# define SWIFT_TYPEDEFS 1
# if __has_include(<uchar.h>)
# include <uchar.h>
# elif !defined(__cplusplus)
typedef uint_least16_t char16_t;
typedef uint_least32_t char32_t;
# endif
typedef float swift_float2 __attribute__((__ext_vector_type__(2)));
typedef float swift_float3 __attribute__((__ext_vector_type__(3)));
typedef float swift_float4 __attribute__((__ext_vector_type__(4)));
typedef double swift_double2 __attribute__((__ext_vector_type__(2)));
typedef double swift_double3 __attribute__((__ext_vector_type__(3)));
typedef double swift_double4 __attribute__((__ext_vector_type__(4)));
typedef int swift_int2 __attribute__((__ext_vector_type__(2)));
typedef int swift_int3 __attribute__((__ext_vector_type__(3)));
typedef int swift_int4 __attribute__((__ext_vector_type__(4)));
typedef unsigned int swift_uint2 __attribute__((__ext_vector_type__(2)));
typedef unsigned int swift_uint3 __attribute__((__ext_vector_type__(3)));
typedef unsigned int swift_uint4 __attribute__((__ext_vector_type__(4)));
#endif
#if !defined(SWIFT_PASTE)
# define SWIFT_PASTE_HELPER(x, y) x##y
# define SWIFT_PASTE(x, y) SWIFT_PASTE_HELPER(x, y)
#endif
#if !defined(SWIFT_METATYPE)
# define SWIFT_METATYPE(X) Class
#endif
#if !defined(SWIFT_CLASS_PROPERTY)
# if __has_feature(objc_class_property)
# define SWIFT_CLASS_PROPERTY(...) __VA_ARGS__
# else
# define SWIFT_CLASS_PROPERTY(...)
# endif
#endif
#if !defined(SWIFT_RUNTIME_NAME)
# if __has_attribute(objc_runtime_name)
# define SWIFT_RUNTIME_NAME(X) __attribute__((objc_runtime_name(X)))
# else
# define SWIFT_RUNTIME_NAME(X)
# endif
#endif
#if !defined(SWIFT_COMPILE_NAME)
# if __has_attribute(swift_name)
# define SWIFT_COMPILE_NAME(X) __attribute__((swift_name(X)))
# else
# define SWIFT_COMPILE_NAME(X)
# endif
#endif
#if !defined(SWIFT_METHOD_FAMILY)
# if __has_attribute(objc_method_family)
# define SWIFT_METHOD_FAMILY(X) __attribute__((objc_method_family(X)))
# else
# define SWIFT_METHOD_FAMILY(X)
# endif
#endif
#if !defined(SWIFT_NOESCAPE)
# if __has_attribute(noescape)
# define SWIFT_NOESCAPE __attribute__((noescape))
# else
# define SWIFT_NOESCAPE
# endif
#endif
#if !defined(SWIFT_RELEASES_ARGUMENT)
# if __has_attribute(ns_consumed)
# define SWIFT_RELEASES_ARGUMENT __attribute__((ns_consumed))
# else
# define SWIFT_RELEASES_ARGUMENT
# endif
#endif
#if !defined(SWIFT_WARN_UNUSED_RESULT)
# if __has_attribute(warn_unused_result)
# define SWIFT_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
# else
# define SWIFT_WARN_UNUSED_RESULT
# endif
#endif
#if !defined(SWIFT_NORETURN)
# if __has_attribute(noreturn)
# define SWIFT_NORETURN __attribute__((noreturn))
# else
# define SWIFT_NORETURN
# endif
#endif
#if !defined(SWIFT_CLASS_EXTRA)
# define SWIFT_CLASS_EXTRA
#endif
#if !defined(SWIFT_PROTOCOL_EXTRA)
# define SWIFT_PROTOCOL_EXTRA
#endif
#if !defined(SWIFT_ENUM_EXTRA)
# define SWIFT_ENUM_EXTRA
#endif
#if !defined(SWIFT_CLASS)
# if __has_attribute(objc_subclassing_restricted)
# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_CLASS_EXTRA
# define SWIFT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
# else
# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
# define SWIFT_CLASS_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
# endif
#endif
#if !defined(SWIFT_RESILIENT_CLASS)
# if __has_attribute(objc_class_stub)
# define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME) __attribute__((objc_class_stub))
# define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_class_stub)) SWIFT_CLASS_NAMED(SWIFT_NAME)
# else
# define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME)
# define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) SWIFT_CLASS_NAMED(SWIFT_NAME)
# endif
#endif
#if !defined(SWIFT_PROTOCOL)
# define SWIFT_PROTOCOL(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA
# define SWIFT_PROTOCOL_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA
#endif
#if !defined(SWIFT_EXTENSION)
# define SWIFT_EXTENSION(M) SWIFT_PASTE(M##_Swift_, __LINE__)
#endif
#if !defined(OBJC_DESIGNATED_INITIALIZER)
# if __has_attribute(objc_designated_initializer)
# define OBJC_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer))
# else
# define OBJC_DESIGNATED_INITIALIZER
# endif
#endif
#if !defined(SWIFT_ENUM_ATTR)
# if __has_attribute(enum_extensibility)
# define SWIFT_ENUM_ATTR(_extensibility) __attribute__((enum_extensibility(_extensibility)))
# else
# define SWIFT_ENUM_ATTR(_extensibility)
# endif
#endif
#if !defined(SWIFT_ENUM)
# define SWIFT_ENUM(_type, _name, _extensibility) enum _name : _type _name; enum SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type
# if __has_feature(generalized_swift_name)
# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) enum _name : _type _name SWIFT_COMPILE_NAME(SWIFT_NAME); enum SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type
# else
# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) SWIFT_ENUM(_type, _name, _extensibility)
# endif
#endif
#if !defined(SWIFT_UNAVAILABLE)
# define SWIFT_UNAVAILABLE __attribute__((unavailable))
#endif
#if !defined(SWIFT_UNAVAILABLE_MSG)
# define SWIFT_UNAVAILABLE_MSG(msg) __attribute__((unavailable(msg)))
#endif
#if !defined(SWIFT_AVAILABILITY)
# define SWIFT_AVAILABILITY(plat, ...) __attribute__((availability(plat, __VA_ARGS__)))
#endif
#if !defined(SWIFT_WEAK_IMPORT)
# define SWIFT_WEAK_IMPORT __attribute__((weak_import))
#endif
#if !defined(SWIFT_DEPRECATED)
# define SWIFT_DEPRECATED __attribute__((deprecated))
#endif
#if !defined(SWIFT_DEPRECATED_MSG)
# define SWIFT_DEPRECATED_MSG(...) __attribute__((deprecated(__VA_ARGS__)))
#endif
#if !defined(SWIFT_DEPRECATED_OBJC)
# if __has_feature(attribute_diagnose_if_objc)
# define SWIFT_DEPRECATED_OBJC(Msg) __attribute__((diagnose_if(1, Msg, "warning")))
# else
# define SWIFT_DEPRECATED_OBJC(Msg) SWIFT_DEPRECATED_MSG(Msg)
# endif
#endif
#if defined(__OBJC__)
#if !defined(IBSegueAction)
# define IBSegueAction
#endif
#endif
#if !defined(SWIFT_EXTERN)
# if defined(__cplusplus)
# define SWIFT_EXTERN extern "C"
# else
# define SWIFT_EXTERN extern
# endif
#endif
#if !defined(SWIFT_CALL)
# define SWIFT_CALL __attribute__((swiftcall))
#endif
#if !defined(SWIFT_INDIRECT_RESULT)
# define SWIFT_INDIRECT_RESULT __attribute__((swift_indirect_result))
#endif
#if !defined(SWIFT_CONTEXT)
# define SWIFT_CONTEXT __attribute__((swift_context))
#endif
#if !defined(SWIFT_ERROR_RESULT)
# define SWIFT_ERROR_RESULT __attribute__((swift_error_result))
#endif
#if defined(__cplusplus)
# define SWIFT_NOEXCEPT noexcept
#else
# define SWIFT_NOEXCEPT
#endif
#if !defined(SWIFT_C_INLINE_THUNK)
# if __has_attribute(always_inline)
# if __has_attribute(nodebug)
# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline)) __attribute__((nodebug))
# else
# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline))
# endif
# else
# define SWIFT_C_INLINE_THUNK inline
# endif
#endif
#if defined(_WIN32)
#if !defined(SWIFT_IMPORT_STDLIB_SYMBOL)
# define SWIFT_IMPORT_STDLIB_SYMBOL __declspec(dllimport)
#endif
#else
#if !defined(SWIFT_IMPORT_STDLIB_SYMBOL)
# define SWIFT_IMPORT_STDLIB_SYMBOL
#endif
#endif
#if defined(__OBJC__)
#if __has_feature(objc_modules)
#if __has_warning("-Watimport-in-framework-header")
#pragma clang diagnostic ignored "-Watimport-in-framework-header"
#endif
@import CoreFoundation;
@import Foundation;
@import ObjectiveC;
@import UIKit;
#endif
#endif
#pragma clang diagnostic ignored "-Wproperty-attribute-mismatch"
#pragma clang diagnostic ignored "-Wduplicate-method-arg"
#if __has_warning("-Wpragma-clang-attribute")
# pragma clang diagnostic ignored "-Wpragma-clang-attribute"
#endif
#pragma clang diagnostic ignored "-Wunknown-pragmas"
#pragma clang diagnostic ignored "-Wnullability"
#pragma clang diagnostic ignored "-Wdollar-in-identifier-extension"
#if __has_attribute(external_source_symbol)
# pragma push_macro("any")
# undef any
# pragma clang attribute push(__attribute__((external_source_symbol(language="Swift", defined_in="DCUniVideo",generated_declaration))), apply_to=any(function,enum,objc_interface,objc_category,objc_protocol))
# pragma pop_macro("any")
#endif
#if defined(__OBJC__)
@class NSCoder;
SWIFT_CLASS("_TtC10DCUniVideo13HJDanmakuCell")
@interface HJDanmakuCell : UIView
- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)initWithFrame:(CGRect)frame SWIFT_UNAVAILABLE;
@end
SWIFT_CLASS("_TtC10DCUniVideo14HJDanmakuModel")
@interface HJDanmakuModel : NSObject
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end
SWIFT_CLASS("_TtC10DCUniVideo13HJDanmakuView")
@interface HJDanmakuView : UIView
- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER;
- (void)sizeToFit;
- (nonnull instancetype)initWithFrame:(CGRect)frame SWIFT_UNAVAILABLE;
@end
@class UIEvent;
@class UITouch;
@interface HJDanmakuView (SWIFT_EXTENSION(DCUniVideo))
- (UIView * _Nullable)hitTest:(CGPoint)point withEvent:(UIEvent * _Nullable)event SWIFT_WARN_UNUSED_RESULT;
- (void)touchesBegan:(NSSet<UITouch *> * _Nonnull)touches withEvent:(UIEvent * _Nullable)event;
- (void)touchesMoved:(NSSet<UITouch *> * _Nonnull)touches withEvent:(UIEvent * _Nullable)event;
- (void)touchesEnded:(NSSet<UITouch *> * _Nonnull)touches withEvent:(UIEvent * _Nullable)event;
- (void)touchesCancelled:(NSSet<UITouch *> * _Nonnull)touches withEvent:(UIEvent * _Nullable)event;
@end
SWIFT_CLASS("_TtC10DCUniVideo20UniVideoPlayerConfig")
@interface UniVideoPlayerConfig : NSObject
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end
SWIFT_CLASS("_TtC10DCUniVideo18UniVideoPlayerView")
@interface UniVideoPlayerView : UIView
- (nonnull instancetype)initWithFrame:(CGRect)frame SWIFT_UNAVAILABLE;
- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)coder SWIFT_UNAVAILABLE;
- (void)layoutSubviews;
- (void)didMoveToSuperview;
@end
@class UIGestureRecognizer;
@interface UniVideoPlayerView (SWIFT_EXTENSION(DCUniVideo)) <UIGestureRecognizerDelegate>
- (BOOL)gestureRecognizer:(UIGestureRecognizer * _Nonnull)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer * _Nonnull)otherGestureRecognizer SWIFT_WARN_UNUSED_RESULT;
- (BOOL)gestureRecognizer:(UIGestureRecognizer * _Nonnull)gestureRecognizer shouldReceiveTouch:(UITouch * _Nonnull)touch SWIFT_WARN_UNUSED_RESULT;
@end
#endif
#if __has_attribute(external_source_symbol)
# pragma clang attribute pop
#endif
#if defined(__cplusplus)
#endif
#pragma clang diagnostic pop
#endif
#else
#error unsupported Swift architecture
#endif
//
// DCUniVideo.h
// DCUniVideo
//
// Created by lizhongyi on 2023/5/17.
//
#import <Foundation/Foundation.h>
//! Project version number for DCUniVideo.
FOUNDATION_EXPORT double DCUniVideoVersionNumber;
//! Project version string for DCUniVideo.
FOUNDATION_EXPORT const unsigned char DCUniVideoVersionString[];
// In this header, you should import all the public headers of your framework using statements like #import <DCUniVideo/PublicHeader.h>
#import <DCUniVideo/UIControl+EnlargeTouchArea.h>
#import <UIKit/UIKit.h>
@interface UIControl (EnlargeTouchArea)
/**
* 扩大 UIButton 的点击范围
* 控制上下左右的延长范围
*/
- (void)dc_setEnlargeEdgeWithTop:(CGFloat)top right:(CGFloat)right bottom:(CGFloat)bottom left:(CGFloat)left;
@end
// swift-interface-format-version: 1.0
// swift-compiler-version: Apple Swift version 5.9.2 (swiftlang-5.9.2.2.56 clang-1500.1.0.2.5)
// swift-module-flags: -target arm64-apple-ios12.0 -enable-objc-interop -enable-library-evolution -swift-version 5 -enforce-exclusivity=checked -O -module-name DCUniVideo
// swift-module-flags-ignorable: -enable-bare-slash-regex
import AVFAudio
import AVFoundation
import CommonCrypto
@_exported import DCUniVideo
import Foundation
import IJKMediaFrameworkWithSSL
import MediaPlayer
import Swift
import UIKit
import UniDCSVProgressHUD
import _Concurrency
import _StringProcessing
import _SwiftConcurrencyShims
public enum HJDanmakuType : Swift.String {
case HJDanmakuTypeLR
case HJDanmakuTypeFT
case HJDanmakuTypeFB
public init?(rawValue: Swift.String)
public typealias RawValue = Swift.String
public var rawValue: Swift.String {
get
}
}
@objc open class HJDanmakuModel : ObjectiveC.NSObject {
public var time: CoreFoundation.CGFloat
final public let danmakuType: DCUniVideo.HJDanmakuType
public init(danmakuType: DCUniVideo.HJDanmakuType)
@objc deinit
}
public enum HJDanmakuMode {
case HJDanmakuModeVideo
case HJDanmakuModeLive
public static func == (a: DCUniVideo.HJDanmakuMode, b: DCUniVideo.HJDanmakuMode) -> Swift.Bool
public func hash(into hasher: inout Swift.Hasher)
public var hashValue: Swift.Int {
get
}
}
open class HJDanmakuConfiguration {
public var duration: CoreFoundation.CGFloat
public var tolerance: CoreFoundation.CGFloat
public var numberOfLines: Swift.Int
public var cellHeight: CoreFoundation.CGFloat
public var maxShowCount: Swift.Int
public init(danmakuMode: DCUniVideo.HJDanmakuMode)
@objc deinit
}
public protocol ViewPresent {
associatedtype View
var view: Self.View { get set }
}
public protocol UniVideoPlayerProtocol : AnyObject {
func getCookieString(_ url: Foundation.URL) -> Swift.String?
func getCurrentUA() -> Swift.String
func sendEvent(_ name: Swift.String, _ params: [Swift.String : Any]?)
func loadImage(_ url: Swift.String, _ complete: @escaping (UIKit.UIImage) -> Swift.Void)
func videoPlayerExitFullScreen(_ orientation: UIKit.UIInterfaceOrientation)
func videoPlayerEnterFullScreen(_ orientation: UIKit.UIInterfaceOrientation)
func lockScreen()
func unlockScreen()
func setFullScreen(_ yesOrNo: Swift.Bool)
func setHomeIndicatorAutoHidden(_ yesOrNo: Swift.Bool)
func setTempOrientation(_ temp: UIKit.UIInterfaceOrientationMask)
func configSupportOrientation(_ orientation: UIKit.UIInterfaceOrientation) -> Swift.Bool
func setDeviceInterfaceOrientation(_ orientation: UIKit.UIInterfaceOrientation)
func h5Path2SysPath(_ path: Swift.String, _ basePath: Swift.String?) -> Swift.String
func workRootPath() -> Swift.String
func videoCacheDir() -> Swift.String
}
final public class UniVideoPlayerViewPresent : DCUniVideo.ViewPresent {
public typealias View = DCUniVideo.UniVideoPlayerView
final public var view: DCUniVideo.UniVideoPlayerViewPresent.View
final public var config: DCUniVideo.UniVideoPlayerConfig
weak final public var delegate: (any DCUniVideo.UniVideoPlayerProtocol)? {
get
set
}
final public var contentView: UIKit.UIView {
get
set
}
public init(_ config: DCUniVideo.UniVideoPlayerConfig, _ delegate: (any DCUniVideo.UniVideoPlayerProtocol)?, _ frame: CoreFoundation.CGRect = .zero)
@objc deinit
final public func updateViewFrame(_ rect: CoreFoundation.CGRect)
}
extension DCUniVideo.UniVideoPlayerViewPresent {
final public func play()
final public func pause()
final public func stop()
final public func palybackRate(_ rate: Swift.String)
final public func destroy()
final public func showStatusBar()
final public func hideStatusBar()
}
extension DCUniVideo.UniVideoPlayerViewPresent {
final public func sendDanmu(_ danmu: [Swift.String : Any])
final public func clearDanmu()
}
extension DCUniVideo.UniVideoPlayerViewPresent {
final public func seek(_ position: Swift.Float)
}
public enum UniVideoPlayerDirection : Swift.Int {
case normal
case left
case right
case auto
public init?(rawValue: Swift.Int)
public typealias RawValue = Swift.Int
public var rawValue: Swift.Int {
get
}
}
public enum UniVideoPlayerPlayStrategy : Swift.Int {
case common
case smooth
case m3u8_smooth
public init?(rawValue: Swift.Int)
public typealias RawValue = Swift.Int
public var rawValue: Swift.Int {
get
}
}
@objc public class UniVideoPlayerConfig : ObjectiveC.NSObject {
public init(options: [Swift.AnyHashable : Any]?)
public static func direction(_ value: Any) -> DCUniVideo.UniVideoPlayerDirection
@objc deinit
}
@objc @_inheritsConvenienceInitializers @_hasMissingDesignatedInitializers @_Concurrency.MainActor(unsafe) public class UniVideoPlayerView : UIKit.UIView {
@_Concurrency.MainActor(unsafe) @objc override dynamic public func layoutSubviews()
@_Concurrency.MainActor(unsafe) @objc override dynamic public func didMoveToSuperview()
@objc deinit
}
extension DCUniVideo.UniVideoPlayerView : UIKit.UIGestureRecognizerDelegate {
@_Concurrency.MainActor(unsafe) @objc dynamic public func gestureRecognizer(_ gestureRecognizer: UIKit.UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIKit.UIGestureRecognizer) -> Swift.Bool
@_Concurrency.MainActor(unsafe) @objc dynamic public func gestureRecognizer(_ gestureRecognizer: UIKit.UIGestureRecognizer, shouldReceive touch: UIKit.UITouch) -> Swift.Bool
}
public enum HJDanmakuCellSelectionStyle {
case HJDanmakuCellSelectionStyleNone
case HJDanmakuCellSelectionStyleDefault
public static func == (a: DCUniVideo.HJDanmakuCellSelectionStyle, b: DCUniVideo.HJDanmakuCellSelectionStyle) -> Swift.Bool
public func hash(into hasher: inout Swift.Hasher)
public var hashValue: Swift.Int {
get
}
}
@objc @_Concurrency.MainActor(unsafe) open class HJDanmakuCell : UIKit.UIView {
@_Concurrency.MainActor(unsafe) public var zIndex: Swift.Int
@_Concurrency.MainActor(unsafe) public var selectionStyle: DCUniVideo.HJDanmakuCellSelectionStyle
@_Concurrency.MainActor(unsafe) public var textLabel: UIKit.UILabel {
get
}
@_Concurrency.MainActor(unsafe) required public init(reuseIdentifier: Swift.String)
@_Concurrency.MainActor(unsafe) @objc required dynamic public init?(coder aDecoder: Foundation.NSCoder)
@_Concurrency.MainActor(unsafe) open func prepareForReuse()
@objc deinit
}
public struct HJDanmakuTime {
public var time: CoreFoundation.CGFloat
public var interval: CoreFoundation.CGFloat
public func MaxTime() -> CoreFoundation.CGFloat
}
public class HJDanmakuAgent {
public init(danmakuModel: DCUniVideo.HJDanmakuModel)
@objc deinit
}
@_hasMissingDesignatedInitializers public class HJDanmakuSource {
public func prepareDanmakus(_ danmakus: Swift.Array<DCUniVideo.HJDanmakuModel>, completion: @escaping () -> Swift.Void)
@discardableResult
public func sendDanmaku(_ danmaku: DCUniVideo.HJDanmakuModel, forceRender force: Swift.Bool) -> DCUniVideo.HJDanmakuAgent?
public func sendDanmakus(_ danmakus: Swift.Array<DCUniVideo.HJDanmakuModel>)
public func fetchDanmakuAgents(forTime time: DCUniVideo.HJDanmakuTime) -> Swift.Array<DCUniVideo.HJDanmakuAgent>?
@objc deinit
}
@_inheritsConvenienceInitializers @_hasMissingDesignatedInitializers public class HJDanmakuVideoSource : DCUniVideo.HJDanmakuSource {
override public func prepareDanmakus(_ danmakus: Swift.Array<DCUniVideo.HJDanmakuModel>, completion: @escaping () -> Swift.Void)
override public func sendDanmaku(_ danmaku: DCUniVideo.HJDanmakuModel, forceRender force: Swift.Bool) -> DCUniVideo.HJDanmakuAgent?
override public func sendDanmakus(_ danmakus: Swift.Array<DCUniVideo.HJDanmakuModel>)
override public func fetchDanmakuAgents(forTime time: DCUniVideo.HJDanmakuTime) -> Swift.Array<DCUniVideo.HJDanmakuAgent>?
@objc deinit
}
@_inheritsConvenienceInitializers @_hasMissingDesignatedInitializers public class HJDanmakuLiveSource : DCUniVideo.HJDanmakuSource {
override public func prepareDanmakus(_ danmakus: Swift.Array<DCUniVideo.HJDanmakuModel>, completion: @escaping () -> Swift.Void)
override public func sendDanmaku(_ danmaku: DCUniVideo.HJDanmakuModel, forceRender force: Swift.Bool) -> DCUniVideo.HJDanmakuAgent?
override public func sendDanmakus(_ danmakus: Swift.Array<DCUniVideo.HJDanmakuModel>)
override public func fetchDanmakuAgents(forTime time: DCUniVideo.HJDanmakuTime) -> Swift.Array<DCUniVideo.HJDanmakuAgent>?
@objc deinit
}
extension DCUniVideo.UniVideoPlayerViewPresent {
final public func setControlValue(_ value: Any?, _ key: Swift.String)
}
public protocol HJDanmakuViewDelegate : ObjectiveC.NSObjectProtocol {
func prepareCompletedWithDanmakuView(_ danmakuView: DCUniVideo.HJDanmakuView)
func danmakuView(_ danmakuView: DCUniVideo.HJDanmakuView, shouldRenderDanmaku danmaku: DCUniVideo.HJDanmakuModel) -> Swift.Bool
func danmakuView(_ danmakuView: DCUniVideo.HJDanmakuView, willDisplayCell cell: DCUniVideo.HJDanmakuCell, danmaku: DCUniVideo.HJDanmakuModel)
func danmakuView(_ danmakuView: DCUniVideo.HJDanmakuView, didEndDisplayCell cell: DCUniVideo.HJDanmakuCell, danmaku: DCUniVideo.HJDanmakuModel)
func danmakuView(_ danmakuView: DCUniVideo.HJDanmakuView, shouldSelectCell cell: DCUniVideo.HJDanmakuCell, danmaku: DCUniVideo.HJDanmakuModel) -> Swift.Bool
func danmakuView(_ danmakuView: DCUniVideo.HJDanmakuView, didSelectCell cell: DCUniVideo.HJDanmakuCell, danmaku: DCUniVideo.HJDanmakuModel)
}
extension DCUniVideo.HJDanmakuViewDelegate {
public func prepareCompleted(_ danmakuView: DCUniVideo.HJDanmakuView)
public func danmakuView(_ danmakuView: DCUniVideo.HJDanmakuView, shouldRenderDanmaku danmaku: DCUniVideo.HJDanmakuModel) -> Swift.Bool
public func danmakuView(_ danmakuView: DCUniVideo.HJDanmakuView, willDisplayCell cell: DCUniVideo.HJDanmakuCell, danmaku: DCUniVideo.HJDanmakuModel)
public func danmakuView(_ danmakuView: DCUniVideo.HJDanmakuView, didEndDisplayCell cell: DCUniVideo.HJDanmakuCell, danmaku: DCUniVideo.HJDanmakuModel)
public func danmakuView(_ danmakuView: DCUniVideo.HJDanmakuView, shouldSelectCell cell: DCUniVideo.HJDanmakuCell, danmaku: DCUniVideo.HJDanmakuModel) -> Swift.Bool
public func danmakuView(_ danmakuView: DCUniVideo.HJDanmakuView, didSelectCell cell: DCUniVideo.HJDanmakuCell, danmaku: DCUniVideo.HJDanmakuModel)
}
public protocol HJDanmakuViewDateSource : ObjectiveC.NSObjectProtocol {
func danmakuView(_ danmakuView: DCUniVideo.HJDanmakuView, widthForDanmaku danmaku: DCUniVideo.HJDanmakuModel) -> CoreFoundation.CGFloat
func danmakuView(_ danmakuView: DCUniVideo.HJDanmakuView, cellForDanmaku danmaku: DCUniVideo.HJDanmakuModel) -> DCUniVideo.HJDanmakuCell
func playTimeWithDanmakuView(_ danmakuView: DCUniVideo.HJDanmakuView) -> CoreFoundation.CGFloat
func bufferingWithDanmakuView(_ danmakuView: DCUniVideo.HJDanmakuView) -> Swift.Bool
}
extension DCUniVideo.HJDanmakuViewDateSource {
public func playTimeWithDanmakuView(_ danmakuView: DCUniVideo.HJDanmakuView) -> CoreFoundation.CGFloat
public func bufferingWithDanmakuView(_ danmakuView: DCUniVideo.HJDanmakuView) -> Swift.Bool
}
@objc @_Concurrency.MainActor(unsafe) open class HJDanmakuView : UIKit.UIView {
@_Concurrency.MainActor(unsafe) weak open var dataSource: (any DCUniVideo.HJDanmakuViewDateSource)?
@_Concurrency.MainActor(unsafe) weak open var delegate: (any DCUniVideo.HJDanmakuViewDelegate)?
@_Concurrency.MainActor(unsafe) public var isPrepared: Swift.Bool {
get
}
@_Concurrency.MainActor(unsafe) public var isPlaying: Swift.Bool {
get
}
@_Concurrency.MainActor(unsafe) final public let configuration: DCUniVideo.HJDanmakuConfiguration
@_Concurrency.MainActor(unsafe) public init(frame: CoreFoundation.CGRect, configuration: DCUniVideo.HJDanmakuConfiguration)
@_Concurrency.MainActor(unsafe) @objc required dynamic public init?(coder aDecoder: Foundation.NSCoder)
@_Concurrency.MainActor(unsafe) public func prepareDanmakus(_ danmakus: Swift.Array<DCUniVideo.HJDanmakuModel>?)
@_Concurrency.MainActor(unsafe) public func play()
@_Concurrency.MainActor(unsafe) public func pause()
@_Concurrency.MainActor(unsafe) public func stop()
@_Concurrency.MainActor(unsafe) public func clearScreen()
@_Concurrency.MainActor(unsafe) @objc override dynamic open func sizeToFit()
@_Concurrency.MainActor(unsafe) public func sendDanmaku(_ danmaku: DCUniVideo.HJDanmakuModel, forceRender force: Swift.Bool)
@_Concurrency.MainActor(unsafe) public func sendDanmakus(_ danmakus: Swift.Array<DCUniVideo.HJDanmakuModel>)
@_Concurrency.MainActor(unsafe) public func danmakuForVisibleCell(_ danmakuCell: DCUniVideo.HJDanmakuCell) -> DCUniVideo.HJDanmakuModel?
@_Concurrency.MainActor(unsafe) public var visibleCells: Swift.Array<DCUniVideo.HJDanmakuCell> {
get
}
@objc deinit
}
extension DCUniVideo.HJDanmakuView {
@_Concurrency.MainActor(unsafe) @objc override dynamic open func hitTest(_ point: CoreFoundation.CGPoint, with event: UIKit.UIEvent?) -> UIKit.UIView?
@_Concurrency.MainActor(unsafe) @objc override dynamic open func touchesBegan(_ touches: Swift.Set<UIKit.UITouch>, with event: UIKit.UIEvent?)
@_Concurrency.MainActor(unsafe) @objc override dynamic open func touchesMoved(_ touches: Swift.Set<UIKit.UITouch>, with event: UIKit.UIEvent?)
@_Concurrency.MainActor(unsafe) @objc override dynamic open func touchesEnded(_ touches: Swift.Set<UIKit.UITouch>, with event: UIKit.UIEvent?)
@_Concurrency.MainActor(unsafe) @objc override dynamic open func touchesCancelled(_ touches: Swift.Set<UIKit.UITouch>, with event: UIKit.UIEvent?)
}
extension DCUniVideo.HJDanmakuView {
@_Concurrency.MainActor(unsafe) public func register(_ cellClass: DCUniVideo.HJDanmakuCell.Type, forCellReuseIdentifier identifier: Swift.String)
@_Concurrency.MainActor(unsafe) public func dequeueReusableCell(withIdentifier identifier: Swift.String) -> DCUniVideo.HJDanmakuCell?
}
extension DCUniVideo.UniVideoPlayerViewPresent {
final public func requestFullScreen(_ direction: DCUniVideo.UniVideoPlayerDirection)
final public func exitFullScreenForJS()
}
extension DCUniVideo.HJDanmakuType : Swift.Equatable {}
extension DCUniVideo.HJDanmakuType : Swift.Hashable {}
extension DCUniVideo.HJDanmakuType : Swift.RawRepresentable {}
extension DCUniVideo.HJDanmakuMode : Swift.Equatable {}
extension DCUniVideo.HJDanmakuMode : Swift.Hashable {}
extension DCUniVideo.UniVideoPlayerDirection : Swift.Equatable {}
extension DCUniVideo.UniVideoPlayerDirection : Swift.Hashable {}
extension DCUniVideo.UniVideoPlayerDirection : Swift.RawRepresentable {}
extension DCUniVideo.UniVideoPlayerPlayStrategy : Swift.Equatable {}
extension DCUniVideo.UniVideoPlayerPlayStrategy : Swift.Hashable {}
extension DCUniVideo.UniVideoPlayerPlayStrategy : Swift.RawRepresentable {}
extension DCUniVideo.HJDanmakuCellSelectionStyle : Swift.Equatable {}
extension DCUniVideo.HJDanmakuCellSelectionStyle : Swift.Hashable {}
// swift-interface-format-version: 1.0
// swift-compiler-version: Apple Swift version 5.9.2 (swiftlang-5.9.2.2.56 clang-1500.1.0.2.5)
// swift-module-flags: -target arm64-apple-ios12.0 -enable-objc-interop -enable-library-evolution -swift-version 5 -enforce-exclusivity=checked -O -module-name DCUniVideo
// swift-module-flags-ignorable: -enable-bare-slash-regex
import AVFAudio
import AVFoundation
import CommonCrypto
@_exported import DCUniVideo
import Foundation
import IJKMediaFrameworkWithSSL
import MediaPlayer
import Swift
import UIKit
import UniDCSVProgressHUD
import _Concurrency
import _StringProcessing
import _SwiftConcurrencyShims
public enum HJDanmakuType : Swift.String {
case HJDanmakuTypeLR
case HJDanmakuTypeFT
case HJDanmakuTypeFB
public init?(rawValue: Swift.String)
public typealias RawValue = Swift.String
public var rawValue: Swift.String {
get
}
}
@objc open class HJDanmakuModel : ObjectiveC.NSObject {
public var time: CoreFoundation.CGFloat
final public let danmakuType: DCUniVideo.HJDanmakuType
public init(danmakuType: DCUniVideo.HJDanmakuType)
@objc deinit
}
public enum HJDanmakuMode {
case HJDanmakuModeVideo
case HJDanmakuModeLive
public static func == (a: DCUniVideo.HJDanmakuMode, b: DCUniVideo.HJDanmakuMode) -> Swift.Bool
public func hash(into hasher: inout Swift.Hasher)
public var hashValue: Swift.Int {
get
}
}
open class HJDanmakuConfiguration {
public var duration: CoreFoundation.CGFloat
public var tolerance: CoreFoundation.CGFloat
public var numberOfLines: Swift.Int
public var cellHeight: CoreFoundation.CGFloat
public var maxShowCount: Swift.Int
public init(danmakuMode: DCUniVideo.HJDanmakuMode)
@objc deinit
}
public protocol ViewPresent {
associatedtype View
var view: Self.View { get set }
}
public protocol UniVideoPlayerProtocol : AnyObject {
func getCookieString(_ url: Foundation.URL) -> Swift.String?
func getCurrentUA() -> Swift.String
func sendEvent(_ name: Swift.String, _ params: [Swift.String : Any]?)
func loadImage(_ url: Swift.String, _ complete: @escaping (UIKit.UIImage) -> Swift.Void)
func videoPlayerExitFullScreen(_ orientation: UIKit.UIInterfaceOrientation)
func videoPlayerEnterFullScreen(_ orientation: UIKit.UIInterfaceOrientation)
func lockScreen()
func unlockScreen()
func setFullScreen(_ yesOrNo: Swift.Bool)
func setHomeIndicatorAutoHidden(_ yesOrNo: Swift.Bool)
func setTempOrientation(_ temp: UIKit.UIInterfaceOrientationMask)
func configSupportOrientation(_ orientation: UIKit.UIInterfaceOrientation) -> Swift.Bool
func setDeviceInterfaceOrientation(_ orientation: UIKit.UIInterfaceOrientation)
func h5Path2SysPath(_ path: Swift.String, _ basePath: Swift.String?) -> Swift.String
func workRootPath() -> Swift.String
func videoCacheDir() -> Swift.String
}
final public class UniVideoPlayerViewPresent : DCUniVideo.ViewPresent {
public typealias View = DCUniVideo.UniVideoPlayerView
final public var view: DCUniVideo.UniVideoPlayerViewPresent.View
final public var config: DCUniVideo.UniVideoPlayerConfig
weak final public var delegate: (any DCUniVideo.UniVideoPlayerProtocol)? {
get
set
}
final public var contentView: UIKit.UIView {
get
set
}
public init(_ config: DCUniVideo.UniVideoPlayerConfig, _ delegate: (any DCUniVideo.UniVideoPlayerProtocol)?, _ frame: CoreFoundation.CGRect = .zero)
@objc deinit
final public func updateViewFrame(_ rect: CoreFoundation.CGRect)
}
extension DCUniVideo.UniVideoPlayerViewPresent {
final public func play()
final public func pause()
final public func stop()
final public func palybackRate(_ rate: Swift.String)
final public func destroy()
final public func showStatusBar()
final public func hideStatusBar()
}
extension DCUniVideo.UniVideoPlayerViewPresent {
final public func sendDanmu(_ danmu: [Swift.String : Any])
final public func clearDanmu()
}
extension DCUniVideo.UniVideoPlayerViewPresent {
final public func seek(_ position: Swift.Float)
}
public enum UniVideoPlayerDirection : Swift.Int {
case normal
case left
case right
case auto
public init?(rawValue: Swift.Int)
public typealias RawValue = Swift.Int
public var rawValue: Swift.Int {
get
}
}
public enum UniVideoPlayerPlayStrategy : Swift.Int {
case common
case smooth
case m3u8_smooth
public init?(rawValue: Swift.Int)
public typealias RawValue = Swift.Int
public var rawValue: Swift.Int {
get
}
}
@objc public class UniVideoPlayerConfig : ObjectiveC.NSObject {
public init(options: [Swift.AnyHashable : Any]?)
public static func direction(_ value: Any) -> DCUniVideo.UniVideoPlayerDirection
@objc deinit
}
@objc @_inheritsConvenienceInitializers @_hasMissingDesignatedInitializers @_Concurrency.MainActor(unsafe) public class UniVideoPlayerView : UIKit.UIView {
@_Concurrency.MainActor(unsafe) @objc override dynamic public func layoutSubviews()
@_Concurrency.MainActor(unsafe) @objc override dynamic public func didMoveToSuperview()
@objc deinit
}
extension DCUniVideo.UniVideoPlayerView : UIKit.UIGestureRecognizerDelegate {
@_Concurrency.MainActor(unsafe) @objc dynamic public func gestureRecognizer(_ gestureRecognizer: UIKit.UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIKit.UIGestureRecognizer) -> Swift.Bool
@_Concurrency.MainActor(unsafe) @objc dynamic public func gestureRecognizer(_ gestureRecognizer: UIKit.UIGestureRecognizer, shouldReceive touch: UIKit.UITouch) -> Swift.Bool
}
public enum HJDanmakuCellSelectionStyle {
case HJDanmakuCellSelectionStyleNone
case HJDanmakuCellSelectionStyleDefault
public static func == (a: DCUniVideo.HJDanmakuCellSelectionStyle, b: DCUniVideo.HJDanmakuCellSelectionStyle) -> Swift.Bool
public func hash(into hasher: inout Swift.Hasher)
public var hashValue: Swift.Int {
get
}
}
@objc @_Concurrency.MainActor(unsafe) open class HJDanmakuCell : UIKit.UIView {
@_Concurrency.MainActor(unsafe) public var zIndex: Swift.Int
@_Concurrency.MainActor(unsafe) public var selectionStyle: DCUniVideo.HJDanmakuCellSelectionStyle
@_Concurrency.MainActor(unsafe) public var textLabel: UIKit.UILabel {
get
}
@_Concurrency.MainActor(unsafe) required public init(reuseIdentifier: Swift.String)
@_Concurrency.MainActor(unsafe) @objc required dynamic public init?(coder aDecoder: Foundation.NSCoder)
@_Concurrency.MainActor(unsafe) open func prepareForReuse()
@objc deinit
}
public struct HJDanmakuTime {
public var time: CoreFoundation.CGFloat
public var interval: CoreFoundation.CGFloat
public func MaxTime() -> CoreFoundation.CGFloat
}
public class HJDanmakuAgent {
public init(danmakuModel: DCUniVideo.HJDanmakuModel)
@objc deinit
}
@_hasMissingDesignatedInitializers public class HJDanmakuSource {
public func prepareDanmakus(_ danmakus: Swift.Array<DCUniVideo.HJDanmakuModel>, completion: @escaping () -> Swift.Void)
@discardableResult
public func sendDanmaku(_ danmaku: DCUniVideo.HJDanmakuModel, forceRender force: Swift.Bool) -> DCUniVideo.HJDanmakuAgent?
public func sendDanmakus(_ danmakus: Swift.Array<DCUniVideo.HJDanmakuModel>)
public func fetchDanmakuAgents(forTime time: DCUniVideo.HJDanmakuTime) -> Swift.Array<DCUniVideo.HJDanmakuAgent>?
@objc deinit
}
@_inheritsConvenienceInitializers @_hasMissingDesignatedInitializers public class HJDanmakuVideoSource : DCUniVideo.HJDanmakuSource {
override public func prepareDanmakus(_ danmakus: Swift.Array<DCUniVideo.HJDanmakuModel>, completion: @escaping () -> Swift.Void)
override public func sendDanmaku(_ danmaku: DCUniVideo.HJDanmakuModel, forceRender force: Swift.Bool) -> DCUniVideo.HJDanmakuAgent?
override public func sendDanmakus(_ danmakus: Swift.Array<DCUniVideo.HJDanmakuModel>)
override public func fetchDanmakuAgents(forTime time: DCUniVideo.HJDanmakuTime) -> Swift.Array<DCUniVideo.HJDanmakuAgent>?
@objc deinit
}
@_inheritsConvenienceInitializers @_hasMissingDesignatedInitializers public class HJDanmakuLiveSource : DCUniVideo.HJDanmakuSource {
override public func prepareDanmakus(_ danmakus: Swift.Array<DCUniVideo.HJDanmakuModel>, completion: @escaping () -> Swift.Void)
override public func sendDanmaku(_ danmaku: DCUniVideo.HJDanmakuModel, forceRender force: Swift.Bool) -> DCUniVideo.HJDanmakuAgent?
override public func sendDanmakus(_ danmakus: Swift.Array<DCUniVideo.HJDanmakuModel>)
override public func fetchDanmakuAgents(forTime time: DCUniVideo.HJDanmakuTime) -> Swift.Array<DCUniVideo.HJDanmakuAgent>?
@objc deinit
}
extension DCUniVideo.UniVideoPlayerViewPresent {
final public func setControlValue(_ value: Any?, _ key: Swift.String)
}
public protocol HJDanmakuViewDelegate : ObjectiveC.NSObjectProtocol {
func prepareCompletedWithDanmakuView(_ danmakuView: DCUniVideo.HJDanmakuView)
func danmakuView(_ danmakuView: DCUniVideo.HJDanmakuView, shouldRenderDanmaku danmaku: DCUniVideo.HJDanmakuModel) -> Swift.Bool
func danmakuView(_ danmakuView: DCUniVideo.HJDanmakuView, willDisplayCell cell: DCUniVideo.HJDanmakuCell, danmaku: DCUniVideo.HJDanmakuModel)
func danmakuView(_ danmakuView: DCUniVideo.HJDanmakuView, didEndDisplayCell cell: DCUniVideo.HJDanmakuCell, danmaku: DCUniVideo.HJDanmakuModel)
func danmakuView(_ danmakuView: DCUniVideo.HJDanmakuView, shouldSelectCell cell: DCUniVideo.HJDanmakuCell, danmaku: DCUniVideo.HJDanmakuModel) -> Swift.Bool
func danmakuView(_ danmakuView: DCUniVideo.HJDanmakuView, didSelectCell cell: DCUniVideo.HJDanmakuCell, danmaku: DCUniVideo.HJDanmakuModel)
}
extension DCUniVideo.HJDanmakuViewDelegate {
public func prepareCompleted(_ danmakuView: DCUniVideo.HJDanmakuView)
public func danmakuView(_ danmakuView: DCUniVideo.HJDanmakuView, shouldRenderDanmaku danmaku: DCUniVideo.HJDanmakuModel) -> Swift.Bool
public func danmakuView(_ danmakuView: DCUniVideo.HJDanmakuView, willDisplayCell cell: DCUniVideo.HJDanmakuCell, danmaku: DCUniVideo.HJDanmakuModel)
public func danmakuView(_ danmakuView: DCUniVideo.HJDanmakuView, didEndDisplayCell cell: DCUniVideo.HJDanmakuCell, danmaku: DCUniVideo.HJDanmakuModel)
public func danmakuView(_ danmakuView: DCUniVideo.HJDanmakuView, shouldSelectCell cell: DCUniVideo.HJDanmakuCell, danmaku: DCUniVideo.HJDanmakuModel) -> Swift.Bool
public func danmakuView(_ danmakuView: DCUniVideo.HJDanmakuView, didSelectCell cell: DCUniVideo.HJDanmakuCell, danmaku: DCUniVideo.HJDanmakuModel)
}
public protocol HJDanmakuViewDateSource : ObjectiveC.NSObjectProtocol {
func danmakuView(_ danmakuView: DCUniVideo.HJDanmakuView, widthForDanmaku danmaku: DCUniVideo.HJDanmakuModel) -> CoreFoundation.CGFloat
func danmakuView(_ danmakuView: DCUniVideo.HJDanmakuView, cellForDanmaku danmaku: DCUniVideo.HJDanmakuModel) -> DCUniVideo.HJDanmakuCell
func playTimeWithDanmakuView(_ danmakuView: DCUniVideo.HJDanmakuView) -> CoreFoundation.CGFloat
func bufferingWithDanmakuView(_ danmakuView: DCUniVideo.HJDanmakuView) -> Swift.Bool
}
extension DCUniVideo.HJDanmakuViewDateSource {
public func playTimeWithDanmakuView(_ danmakuView: DCUniVideo.HJDanmakuView) -> CoreFoundation.CGFloat
public func bufferingWithDanmakuView(_ danmakuView: DCUniVideo.HJDanmakuView) -> Swift.Bool
}
@objc @_Concurrency.MainActor(unsafe) open class HJDanmakuView : UIKit.UIView {
@_Concurrency.MainActor(unsafe) weak open var dataSource: (any DCUniVideo.HJDanmakuViewDateSource)?
@_Concurrency.MainActor(unsafe) weak open var delegate: (any DCUniVideo.HJDanmakuViewDelegate)?
@_Concurrency.MainActor(unsafe) public var isPrepared: Swift.Bool {
get
}
@_Concurrency.MainActor(unsafe) public var isPlaying: Swift.Bool {
get
}
@_Concurrency.MainActor(unsafe) final public let configuration: DCUniVideo.HJDanmakuConfiguration
@_Concurrency.MainActor(unsafe) public init(frame: CoreFoundation.CGRect, configuration: DCUniVideo.HJDanmakuConfiguration)
@_Concurrency.MainActor(unsafe) @objc required dynamic public init?(coder aDecoder: Foundation.NSCoder)
@_Concurrency.MainActor(unsafe) public func prepareDanmakus(_ danmakus: Swift.Array<DCUniVideo.HJDanmakuModel>?)
@_Concurrency.MainActor(unsafe) public func play()
@_Concurrency.MainActor(unsafe) public func pause()
@_Concurrency.MainActor(unsafe) public func stop()
@_Concurrency.MainActor(unsafe) public func clearScreen()
@_Concurrency.MainActor(unsafe) @objc override dynamic open func sizeToFit()
@_Concurrency.MainActor(unsafe) public func sendDanmaku(_ danmaku: DCUniVideo.HJDanmakuModel, forceRender force: Swift.Bool)
@_Concurrency.MainActor(unsafe) public func sendDanmakus(_ danmakus: Swift.Array<DCUniVideo.HJDanmakuModel>)
@_Concurrency.MainActor(unsafe) public func danmakuForVisibleCell(_ danmakuCell: DCUniVideo.HJDanmakuCell) -> DCUniVideo.HJDanmakuModel?
@_Concurrency.MainActor(unsafe) public var visibleCells: Swift.Array<DCUniVideo.HJDanmakuCell> {
get
}
@objc deinit
}
extension DCUniVideo.HJDanmakuView {
@_Concurrency.MainActor(unsafe) @objc override dynamic open func hitTest(_ point: CoreFoundation.CGPoint, with event: UIKit.UIEvent?) -> UIKit.UIView?
@_Concurrency.MainActor(unsafe) @objc override dynamic open func touchesBegan(_ touches: Swift.Set<UIKit.UITouch>, with event: UIKit.UIEvent?)
@_Concurrency.MainActor(unsafe) @objc override dynamic open func touchesMoved(_ touches: Swift.Set<UIKit.UITouch>, with event: UIKit.UIEvent?)
@_Concurrency.MainActor(unsafe) @objc override dynamic open func touchesEnded(_ touches: Swift.Set<UIKit.UITouch>, with event: UIKit.UIEvent?)
@_Concurrency.MainActor(unsafe) @objc override dynamic open func touchesCancelled(_ touches: Swift.Set<UIKit.UITouch>, with event: UIKit.UIEvent?)
}
extension DCUniVideo.HJDanmakuView {
@_Concurrency.MainActor(unsafe) public func register(_ cellClass: DCUniVideo.HJDanmakuCell.Type, forCellReuseIdentifier identifier: Swift.String)
@_Concurrency.MainActor(unsafe) public func dequeueReusableCell(withIdentifier identifier: Swift.String) -> DCUniVideo.HJDanmakuCell?
}
extension DCUniVideo.UniVideoPlayerViewPresent {
final public func requestFullScreen(_ direction: DCUniVideo.UniVideoPlayerDirection)
final public func exitFullScreenForJS()
}
extension DCUniVideo.HJDanmakuType : Swift.Equatable {}
extension DCUniVideo.HJDanmakuType : Swift.Hashable {}
extension DCUniVideo.HJDanmakuType : Swift.RawRepresentable {}
extension DCUniVideo.HJDanmakuMode : Swift.Equatable {}
extension DCUniVideo.HJDanmakuMode : Swift.Hashable {}
extension DCUniVideo.UniVideoPlayerDirection : Swift.Equatable {}
extension DCUniVideo.UniVideoPlayerDirection : Swift.Hashable {}
extension DCUniVideo.UniVideoPlayerDirection : Swift.RawRepresentable {}
extension DCUniVideo.UniVideoPlayerPlayStrategy : Swift.Equatable {}
extension DCUniVideo.UniVideoPlayerPlayStrategy : Swift.Hashable {}
extension DCUniVideo.UniVideoPlayerPlayStrategy : Swift.RawRepresentable {}
extension DCUniVideo.HJDanmakuCellSelectionStyle : Swift.Equatable {}
extension DCUniVideo.HJDanmakuCellSelectionStyle : Swift.Hashable {}
framework module DCUniVideo {
umbrella header "DCUniVideo.h"
export *
module * { export * }
}
module DCUniVideo.Swift {
header "DCUniVideo-Swift.h"
requires objc
}
//
// DCUniVideo.h
// DCUniVideo
//
// Created by lizhongyi on 2023/5/17.
//
#import <Foundation/Foundation.h>
//! Project version number for DCUniVideo.
FOUNDATION_EXPORT double DCUniVideoVersionNumber;
//! Project version string for DCUniVideo.
FOUNDATION_EXPORT const unsigned char DCUniVideoVersionString[];
// In this header, you should import all the public headers of your framework using statements like #import <DCUniVideo/PublicHeader.h>
#import <DCUniVideo/UIControl+EnlargeTouchArea.h>
#import <UIKit/UIKit.h>
@interface UIControl (EnlargeTouchArea)
/**
* 扩大 UIButton 的点击范围
* 控制上下左右的延长范围
*/
- (void)dc_setEnlargeEdgeWithTop:(CGFloat)top right:(CGFloat)right bottom:(CGFloat)bottom left:(CGFloat)left;
@end
// swift-interface-format-version: 1.0
// swift-compiler-version: Apple Swift version 5.9.2 (swiftlang-5.9.2.2.56 clang-1500.1.0.2.5)
// swift-module-flags: -target arm64-apple-ios12.0-simulator -enable-objc-interop -enable-library-evolution -swift-version 5 -enforce-exclusivity=checked -O -module-name DCUniVideo
// swift-module-flags-ignorable: -enable-bare-slash-regex
import AVFAudio
import AVFoundation
import CommonCrypto
@_exported import DCUniVideo
import Foundation
import IJKMediaFrameworkWithSSL
import MediaPlayer
import Swift
import UIKit
import UniDCSVProgressHUD
import _Concurrency
import _StringProcessing
import _SwiftConcurrencyShims
public enum HJDanmakuType : Swift.String {
case HJDanmakuTypeLR
case HJDanmakuTypeFT
case HJDanmakuTypeFB
public init?(rawValue: Swift.String)
public typealias RawValue = Swift.String
public var rawValue: Swift.String {
get
}
}
@objc open class HJDanmakuModel : ObjectiveC.NSObject {
public var time: CoreFoundation.CGFloat
final public let danmakuType: DCUniVideo.HJDanmakuType
public init(danmakuType: DCUniVideo.HJDanmakuType)
@objc deinit
}
public enum HJDanmakuMode {
case HJDanmakuModeVideo
case HJDanmakuModeLive
public static func == (a: DCUniVideo.HJDanmakuMode, b: DCUniVideo.HJDanmakuMode) -> Swift.Bool
public func hash(into hasher: inout Swift.Hasher)
public var hashValue: Swift.Int {
get
}
}
open class HJDanmakuConfiguration {
public var duration: CoreFoundation.CGFloat
public var tolerance: CoreFoundation.CGFloat
public var numberOfLines: Swift.Int
public var cellHeight: CoreFoundation.CGFloat
public var maxShowCount: Swift.Int
public init(danmakuMode: DCUniVideo.HJDanmakuMode)
@objc deinit
}
public protocol ViewPresent {
associatedtype View
var view: Self.View { get set }
}
public protocol UniVideoPlayerProtocol : AnyObject {
func getCookieString(_ url: Foundation.URL) -> Swift.String?
func getCurrentUA() -> Swift.String
func sendEvent(_ name: Swift.String, _ params: [Swift.String : Any]?)
func loadImage(_ url: Swift.String, _ complete: @escaping (UIKit.UIImage) -> Swift.Void)
func videoPlayerExitFullScreen(_ orientation: UIKit.UIInterfaceOrientation)
func videoPlayerEnterFullScreen(_ orientation: UIKit.UIInterfaceOrientation)
func lockScreen()
func unlockScreen()
func setFullScreen(_ yesOrNo: Swift.Bool)
func setHomeIndicatorAutoHidden(_ yesOrNo: Swift.Bool)
func setTempOrientation(_ temp: UIKit.UIInterfaceOrientationMask)
func configSupportOrientation(_ orientation: UIKit.UIInterfaceOrientation) -> Swift.Bool
func setDeviceInterfaceOrientation(_ orientation: UIKit.UIInterfaceOrientation)
func h5Path2SysPath(_ path: Swift.String, _ basePath: Swift.String?) -> Swift.String
func workRootPath() -> Swift.String
func videoCacheDir() -> Swift.String
}
final public class UniVideoPlayerViewPresent : DCUniVideo.ViewPresent {
public typealias View = DCUniVideo.UniVideoPlayerView
final public var view: DCUniVideo.UniVideoPlayerViewPresent.View
final public var config: DCUniVideo.UniVideoPlayerConfig
weak final public var delegate: (any DCUniVideo.UniVideoPlayerProtocol)? {
get
set
}
final public var contentView: UIKit.UIView {
get
set
}
public init(_ config: DCUniVideo.UniVideoPlayerConfig, _ delegate: (any DCUniVideo.UniVideoPlayerProtocol)?, _ frame: CoreFoundation.CGRect = .zero)
@objc deinit
final public func updateViewFrame(_ rect: CoreFoundation.CGRect)
}
extension DCUniVideo.UniVideoPlayerViewPresent {
final public func play()
final public func pause()
final public func stop()
final public func palybackRate(_ rate: Swift.String)
final public func destroy()
final public func showStatusBar()
final public func hideStatusBar()
}
extension DCUniVideo.UniVideoPlayerViewPresent {
final public func sendDanmu(_ danmu: [Swift.String : Any])
final public func clearDanmu()
}
extension DCUniVideo.UniVideoPlayerViewPresent {
final public func seek(_ position: Swift.Float)
}
public enum UniVideoPlayerDirection : Swift.Int {
case normal
case left
case right
case auto
public init?(rawValue: Swift.Int)
public typealias RawValue = Swift.Int
public var rawValue: Swift.Int {
get
}
}
public enum UniVideoPlayerPlayStrategy : Swift.Int {
case common
case smooth
case m3u8_smooth
public init?(rawValue: Swift.Int)
public typealias RawValue = Swift.Int
public var rawValue: Swift.Int {
get
}
}
@objc public class UniVideoPlayerConfig : ObjectiveC.NSObject {
public init(options: [Swift.AnyHashable : Any]?)
public static func direction(_ value: Any) -> DCUniVideo.UniVideoPlayerDirection
@objc deinit
}
@objc @_inheritsConvenienceInitializers @_hasMissingDesignatedInitializers @_Concurrency.MainActor(unsafe) public class UniVideoPlayerView : UIKit.UIView {
@_Concurrency.MainActor(unsafe) @objc override dynamic public func layoutSubviews()
@_Concurrency.MainActor(unsafe) @objc override dynamic public func didMoveToSuperview()
@objc deinit
}
extension DCUniVideo.UniVideoPlayerView : UIKit.UIGestureRecognizerDelegate {
@_Concurrency.MainActor(unsafe) @objc dynamic public func gestureRecognizer(_ gestureRecognizer: UIKit.UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIKit.UIGestureRecognizer) -> Swift.Bool
@_Concurrency.MainActor(unsafe) @objc dynamic public func gestureRecognizer(_ gestureRecognizer: UIKit.UIGestureRecognizer, shouldReceive touch: UIKit.UITouch) -> Swift.Bool
}
public enum HJDanmakuCellSelectionStyle {
case HJDanmakuCellSelectionStyleNone
case HJDanmakuCellSelectionStyleDefault
public static func == (a: DCUniVideo.HJDanmakuCellSelectionStyle, b: DCUniVideo.HJDanmakuCellSelectionStyle) -> Swift.Bool
public func hash(into hasher: inout Swift.Hasher)
public var hashValue: Swift.Int {
get
}
}
@objc @_Concurrency.MainActor(unsafe) open class HJDanmakuCell : UIKit.UIView {
@_Concurrency.MainActor(unsafe) public var zIndex: Swift.Int
@_Concurrency.MainActor(unsafe) public var selectionStyle: DCUniVideo.HJDanmakuCellSelectionStyle
@_Concurrency.MainActor(unsafe) public var textLabel: UIKit.UILabel {
get
}
@_Concurrency.MainActor(unsafe) required public init(reuseIdentifier: Swift.String)
@_Concurrency.MainActor(unsafe) @objc required dynamic public init?(coder aDecoder: Foundation.NSCoder)
@_Concurrency.MainActor(unsafe) open func prepareForReuse()
@objc deinit
}
public struct HJDanmakuTime {
public var time: CoreFoundation.CGFloat
public var interval: CoreFoundation.CGFloat
public func MaxTime() -> CoreFoundation.CGFloat
}
public class HJDanmakuAgent {
public init(danmakuModel: DCUniVideo.HJDanmakuModel)
@objc deinit
}
@_hasMissingDesignatedInitializers public class HJDanmakuSource {
public func prepareDanmakus(_ danmakus: Swift.Array<DCUniVideo.HJDanmakuModel>, completion: @escaping () -> Swift.Void)
@discardableResult
public func sendDanmaku(_ danmaku: DCUniVideo.HJDanmakuModel, forceRender force: Swift.Bool) -> DCUniVideo.HJDanmakuAgent?
public func sendDanmakus(_ danmakus: Swift.Array<DCUniVideo.HJDanmakuModel>)
public func fetchDanmakuAgents(forTime time: DCUniVideo.HJDanmakuTime) -> Swift.Array<DCUniVideo.HJDanmakuAgent>?
@objc deinit
}
@_inheritsConvenienceInitializers @_hasMissingDesignatedInitializers public class HJDanmakuVideoSource : DCUniVideo.HJDanmakuSource {
override public func prepareDanmakus(_ danmakus: Swift.Array<DCUniVideo.HJDanmakuModel>, completion: @escaping () -> Swift.Void)
override public func sendDanmaku(_ danmaku: DCUniVideo.HJDanmakuModel, forceRender force: Swift.Bool) -> DCUniVideo.HJDanmakuAgent?
override public func sendDanmakus(_ danmakus: Swift.Array<DCUniVideo.HJDanmakuModel>)
override public func fetchDanmakuAgents(forTime time: DCUniVideo.HJDanmakuTime) -> Swift.Array<DCUniVideo.HJDanmakuAgent>?
@objc deinit
}
@_inheritsConvenienceInitializers @_hasMissingDesignatedInitializers public class HJDanmakuLiveSource : DCUniVideo.HJDanmakuSource {
override public func prepareDanmakus(_ danmakus: Swift.Array<DCUniVideo.HJDanmakuModel>, completion: @escaping () -> Swift.Void)
override public func sendDanmaku(_ danmaku: DCUniVideo.HJDanmakuModel, forceRender force: Swift.Bool) -> DCUniVideo.HJDanmakuAgent?
override public func sendDanmakus(_ danmakus: Swift.Array<DCUniVideo.HJDanmakuModel>)
override public func fetchDanmakuAgents(forTime time: DCUniVideo.HJDanmakuTime) -> Swift.Array<DCUniVideo.HJDanmakuAgent>?
@objc deinit
}
extension DCUniVideo.UniVideoPlayerViewPresent {
final public func setControlValue(_ value: Any?, _ key: Swift.String)
}
public protocol HJDanmakuViewDelegate : ObjectiveC.NSObjectProtocol {
func prepareCompletedWithDanmakuView(_ danmakuView: DCUniVideo.HJDanmakuView)
func danmakuView(_ danmakuView: DCUniVideo.HJDanmakuView, shouldRenderDanmaku danmaku: DCUniVideo.HJDanmakuModel) -> Swift.Bool
func danmakuView(_ danmakuView: DCUniVideo.HJDanmakuView, willDisplayCell cell: DCUniVideo.HJDanmakuCell, danmaku: DCUniVideo.HJDanmakuModel)
func danmakuView(_ danmakuView: DCUniVideo.HJDanmakuView, didEndDisplayCell cell: DCUniVideo.HJDanmakuCell, danmaku: DCUniVideo.HJDanmakuModel)
func danmakuView(_ danmakuView: DCUniVideo.HJDanmakuView, shouldSelectCell cell: DCUniVideo.HJDanmakuCell, danmaku: DCUniVideo.HJDanmakuModel) -> Swift.Bool
func danmakuView(_ danmakuView: DCUniVideo.HJDanmakuView, didSelectCell cell: DCUniVideo.HJDanmakuCell, danmaku: DCUniVideo.HJDanmakuModel)
}
extension DCUniVideo.HJDanmakuViewDelegate {
public func prepareCompleted(_ danmakuView: DCUniVideo.HJDanmakuView)
public func danmakuView(_ danmakuView: DCUniVideo.HJDanmakuView, shouldRenderDanmaku danmaku: DCUniVideo.HJDanmakuModel) -> Swift.Bool
public func danmakuView(_ danmakuView: DCUniVideo.HJDanmakuView, willDisplayCell cell: DCUniVideo.HJDanmakuCell, danmaku: DCUniVideo.HJDanmakuModel)
public func danmakuView(_ danmakuView: DCUniVideo.HJDanmakuView, didEndDisplayCell cell: DCUniVideo.HJDanmakuCell, danmaku: DCUniVideo.HJDanmakuModel)
public func danmakuView(_ danmakuView: DCUniVideo.HJDanmakuView, shouldSelectCell cell: DCUniVideo.HJDanmakuCell, danmaku: DCUniVideo.HJDanmakuModel) -> Swift.Bool
public func danmakuView(_ danmakuView: DCUniVideo.HJDanmakuView, didSelectCell cell: DCUniVideo.HJDanmakuCell, danmaku: DCUniVideo.HJDanmakuModel)
}
public protocol HJDanmakuViewDateSource : ObjectiveC.NSObjectProtocol {
func danmakuView(_ danmakuView: DCUniVideo.HJDanmakuView, widthForDanmaku danmaku: DCUniVideo.HJDanmakuModel) -> CoreFoundation.CGFloat
func danmakuView(_ danmakuView: DCUniVideo.HJDanmakuView, cellForDanmaku danmaku: DCUniVideo.HJDanmakuModel) -> DCUniVideo.HJDanmakuCell
func playTimeWithDanmakuView(_ danmakuView: DCUniVideo.HJDanmakuView) -> CoreFoundation.CGFloat
func bufferingWithDanmakuView(_ danmakuView: DCUniVideo.HJDanmakuView) -> Swift.Bool
}
extension DCUniVideo.HJDanmakuViewDateSource {
public func playTimeWithDanmakuView(_ danmakuView: DCUniVideo.HJDanmakuView) -> CoreFoundation.CGFloat
public func bufferingWithDanmakuView(_ danmakuView: DCUniVideo.HJDanmakuView) -> Swift.Bool
}
@objc @_Concurrency.MainActor(unsafe) open class HJDanmakuView : UIKit.UIView {
@_Concurrency.MainActor(unsafe) weak open var dataSource: (any DCUniVideo.HJDanmakuViewDateSource)?
@_Concurrency.MainActor(unsafe) weak open var delegate: (any DCUniVideo.HJDanmakuViewDelegate)?
@_Concurrency.MainActor(unsafe) public var isPrepared: Swift.Bool {
get
}
@_Concurrency.MainActor(unsafe) public var isPlaying: Swift.Bool {
get
}
@_Concurrency.MainActor(unsafe) final public let configuration: DCUniVideo.HJDanmakuConfiguration
@_Concurrency.MainActor(unsafe) public init(frame: CoreFoundation.CGRect, configuration: DCUniVideo.HJDanmakuConfiguration)
@_Concurrency.MainActor(unsafe) @objc required dynamic public init?(coder aDecoder: Foundation.NSCoder)
@_Concurrency.MainActor(unsafe) public func prepareDanmakus(_ danmakus: Swift.Array<DCUniVideo.HJDanmakuModel>?)
@_Concurrency.MainActor(unsafe) public func play()
@_Concurrency.MainActor(unsafe) public func pause()
@_Concurrency.MainActor(unsafe) public func stop()
@_Concurrency.MainActor(unsafe) public func clearScreen()
@_Concurrency.MainActor(unsafe) @objc override dynamic open func sizeToFit()
@_Concurrency.MainActor(unsafe) public func sendDanmaku(_ danmaku: DCUniVideo.HJDanmakuModel, forceRender force: Swift.Bool)
@_Concurrency.MainActor(unsafe) public func sendDanmakus(_ danmakus: Swift.Array<DCUniVideo.HJDanmakuModel>)
@_Concurrency.MainActor(unsafe) public func danmakuForVisibleCell(_ danmakuCell: DCUniVideo.HJDanmakuCell) -> DCUniVideo.HJDanmakuModel?
@_Concurrency.MainActor(unsafe) public var visibleCells: Swift.Array<DCUniVideo.HJDanmakuCell> {
get
}
@objc deinit
}
extension DCUniVideo.HJDanmakuView {
@_Concurrency.MainActor(unsafe) @objc override dynamic open func hitTest(_ point: CoreFoundation.CGPoint, with event: UIKit.UIEvent?) -> UIKit.UIView?
@_Concurrency.MainActor(unsafe) @objc override dynamic open func touchesBegan(_ touches: Swift.Set<UIKit.UITouch>, with event: UIKit.UIEvent?)
@_Concurrency.MainActor(unsafe) @objc override dynamic open func touchesMoved(_ touches: Swift.Set<UIKit.UITouch>, with event: UIKit.UIEvent?)
@_Concurrency.MainActor(unsafe) @objc override dynamic open func touchesEnded(_ touches: Swift.Set<UIKit.UITouch>, with event: UIKit.UIEvent?)
@_Concurrency.MainActor(unsafe) @objc override dynamic open func touchesCancelled(_ touches: Swift.Set<UIKit.UITouch>, with event: UIKit.UIEvent?)
}
extension DCUniVideo.HJDanmakuView {
@_Concurrency.MainActor(unsafe) public func register(_ cellClass: DCUniVideo.HJDanmakuCell.Type, forCellReuseIdentifier identifier: Swift.String)
@_Concurrency.MainActor(unsafe) public func dequeueReusableCell(withIdentifier identifier: Swift.String) -> DCUniVideo.HJDanmakuCell?
}
extension DCUniVideo.UniVideoPlayerViewPresent {
final public func requestFullScreen(_ direction: DCUniVideo.UniVideoPlayerDirection)
final public func exitFullScreenForJS()
}
extension DCUniVideo.HJDanmakuType : Swift.Equatable {}
extension DCUniVideo.HJDanmakuType : Swift.Hashable {}
extension DCUniVideo.HJDanmakuType : Swift.RawRepresentable {}
extension DCUniVideo.HJDanmakuMode : Swift.Equatable {}
extension DCUniVideo.HJDanmakuMode : Swift.Hashable {}
extension DCUniVideo.UniVideoPlayerDirection : Swift.Equatable {}
extension DCUniVideo.UniVideoPlayerDirection : Swift.Hashable {}
extension DCUniVideo.UniVideoPlayerDirection : Swift.RawRepresentable {}
extension DCUniVideo.UniVideoPlayerPlayStrategy : Swift.Equatable {}
extension DCUniVideo.UniVideoPlayerPlayStrategy : Swift.Hashable {}
extension DCUniVideo.UniVideoPlayerPlayStrategy : Swift.RawRepresentable {}
extension DCUniVideo.HJDanmakuCellSelectionStyle : Swift.Equatable {}
extension DCUniVideo.HJDanmakuCellSelectionStyle : Swift.Hashable {}
// swift-interface-format-version: 1.0
// swift-compiler-version: Apple Swift version 5.9.2 (swiftlang-5.9.2.2.56 clang-1500.1.0.2.5)
// swift-module-flags: -target arm64-apple-ios12.0-simulator -enable-objc-interop -enable-library-evolution -swift-version 5 -enforce-exclusivity=checked -O -module-name DCUniVideo
// swift-module-flags-ignorable: -enable-bare-slash-regex
import AVFAudio
import AVFoundation
import CommonCrypto
@_exported import DCUniVideo
import Foundation
import IJKMediaFrameworkWithSSL
import MediaPlayer
import Swift
import UIKit
import UniDCSVProgressHUD
import _Concurrency
import _StringProcessing
import _SwiftConcurrencyShims
public enum HJDanmakuType : Swift.String {
case HJDanmakuTypeLR
case HJDanmakuTypeFT
case HJDanmakuTypeFB
public init?(rawValue: Swift.String)
public typealias RawValue = Swift.String
public var rawValue: Swift.String {
get
}
}
@objc open class HJDanmakuModel : ObjectiveC.NSObject {
public var time: CoreFoundation.CGFloat
final public let danmakuType: DCUniVideo.HJDanmakuType
public init(danmakuType: DCUniVideo.HJDanmakuType)
@objc deinit
}
public enum HJDanmakuMode {
case HJDanmakuModeVideo
case HJDanmakuModeLive
public static func == (a: DCUniVideo.HJDanmakuMode, b: DCUniVideo.HJDanmakuMode) -> Swift.Bool
public func hash(into hasher: inout Swift.Hasher)
public var hashValue: Swift.Int {
get
}
}
open class HJDanmakuConfiguration {
public var duration: CoreFoundation.CGFloat
public var tolerance: CoreFoundation.CGFloat
public var numberOfLines: Swift.Int
public var cellHeight: CoreFoundation.CGFloat
public var maxShowCount: Swift.Int
public init(danmakuMode: DCUniVideo.HJDanmakuMode)
@objc deinit
}
public protocol ViewPresent {
associatedtype View
var view: Self.View { get set }
}
public protocol UniVideoPlayerProtocol : AnyObject {
func getCookieString(_ url: Foundation.URL) -> Swift.String?
func getCurrentUA() -> Swift.String
func sendEvent(_ name: Swift.String, _ params: [Swift.String : Any]?)
func loadImage(_ url: Swift.String, _ complete: @escaping (UIKit.UIImage) -> Swift.Void)
func videoPlayerExitFullScreen(_ orientation: UIKit.UIInterfaceOrientation)
func videoPlayerEnterFullScreen(_ orientation: UIKit.UIInterfaceOrientation)
func lockScreen()
func unlockScreen()
func setFullScreen(_ yesOrNo: Swift.Bool)
func setHomeIndicatorAutoHidden(_ yesOrNo: Swift.Bool)
func setTempOrientation(_ temp: UIKit.UIInterfaceOrientationMask)
func configSupportOrientation(_ orientation: UIKit.UIInterfaceOrientation) -> Swift.Bool
func setDeviceInterfaceOrientation(_ orientation: UIKit.UIInterfaceOrientation)
func h5Path2SysPath(_ path: Swift.String, _ basePath: Swift.String?) -> Swift.String
func workRootPath() -> Swift.String
func videoCacheDir() -> Swift.String
}
final public class UniVideoPlayerViewPresent : DCUniVideo.ViewPresent {
public typealias View = DCUniVideo.UniVideoPlayerView
final public var view: DCUniVideo.UniVideoPlayerViewPresent.View
final public var config: DCUniVideo.UniVideoPlayerConfig
weak final public var delegate: (any DCUniVideo.UniVideoPlayerProtocol)? {
get
set
}
final public var contentView: UIKit.UIView {
get
set
}
public init(_ config: DCUniVideo.UniVideoPlayerConfig, _ delegate: (any DCUniVideo.UniVideoPlayerProtocol)?, _ frame: CoreFoundation.CGRect = .zero)
@objc deinit
final public func updateViewFrame(_ rect: CoreFoundation.CGRect)
}
extension DCUniVideo.UniVideoPlayerViewPresent {
final public func play()
final public func pause()
final public func stop()
final public func palybackRate(_ rate: Swift.String)
final public func destroy()
final public func showStatusBar()
final public func hideStatusBar()
}
extension DCUniVideo.UniVideoPlayerViewPresent {
final public func sendDanmu(_ danmu: [Swift.String : Any])
final public func clearDanmu()
}
extension DCUniVideo.UniVideoPlayerViewPresent {
final public func seek(_ position: Swift.Float)
}
public enum UniVideoPlayerDirection : Swift.Int {
case normal
case left
case right
case auto
public init?(rawValue: Swift.Int)
public typealias RawValue = Swift.Int
public var rawValue: Swift.Int {
get
}
}
public enum UniVideoPlayerPlayStrategy : Swift.Int {
case common
case smooth
case m3u8_smooth
public init?(rawValue: Swift.Int)
public typealias RawValue = Swift.Int
public var rawValue: Swift.Int {
get
}
}
@objc public class UniVideoPlayerConfig : ObjectiveC.NSObject {
public init(options: [Swift.AnyHashable : Any]?)
public static func direction(_ value: Any) -> DCUniVideo.UniVideoPlayerDirection
@objc deinit
}
@objc @_inheritsConvenienceInitializers @_hasMissingDesignatedInitializers @_Concurrency.MainActor(unsafe) public class UniVideoPlayerView : UIKit.UIView {
@_Concurrency.MainActor(unsafe) @objc override dynamic public func layoutSubviews()
@_Concurrency.MainActor(unsafe) @objc override dynamic public func didMoveToSuperview()
@objc deinit
}
extension DCUniVideo.UniVideoPlayerView : UIKit.UIGestureRecognizerDelegate {
@_Concurrency.MainActor(unsafe) @objc dynamic public func gestureRecognizer(_ gestureRecognizer: UIKit.UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIKit.UIGestureRecognizer) -> Swift.Bool
@_Concurrency.MainActor(unsafe) @objc dynamic public func gestureRecognizer(_ gestureRecognizer: UIKit.UIGestureRecognizer, shouldReceive touch: UIKit.UITouch) -> Swift.Bool
}
public enum HJDanmakuCellSelectionStyle {
case HJDanmakuCellSelectionStyleNone
case HJDanmakuCellSelectionStyleDefault
public static func == (a: DCUniVideo.HJDanmakuCellSelectionStyle, b: DCUniVideo.HJDanmakuCellSelectionStyle) -> Swift.Bool
public func hash(into hasher: inout Swift.Hasher)
public var hashValue: Swift.Int {
get
}
}
@objc @_Concurrency.MainActor(unsafe) open class HJDanmakuCell : UIKit.UIView {
@_Concurrency.MainActor(unsafe) public var zIndex: Swift.Int
@_Concurrency.MainActor(unsafe) public var selectionStyle: DCUniVideo.HJDanmakuCellSelectionStyle
@_Concurrency.MainActor(unsafe) public var textLabel: UIKit.UILabel {
get
}
@_Concurrency.MainActor(unsafe) required public init(reuseIdentifier: Swift.String)
@_Concurrency.MainActor(unsafe) @objc required dynamic public init?(coder aDecoder: Foundation.NSCoder)
@_Concurrency.MainActor(unsafe) open func prepareForReuse()
@objc deinit
}
public struct HJDanmakuTime {
public var time: CoreFoundation.CGFloat
public var interval: CoreFoundation.CGFloat
public func MaxTime() -> CoreFoundation.CGFloat
}
public class HJDanmakuAgent {
public init(danmakuModel: DCUniVideo.HJDanmakuModel)
@objc deinit
}
@_hasMissingDesignatedInitializers public class HJDanmakuSource {
public func prepareDanmakus(_ danmakus: Swift.Array<DCUniVideo.HJDanmakuModel>, completion: @escaping () -> Swift.Void)
@discardableResult
public func sendDanmaku(_ danmaku: DCUniVideo.HJDanmakuModel, forceRender force: Swift.Bool) -> DCUniVideo.HJDanmakuAgent?
public func sendDanmakus(_ danmakus: Swift.Array<DCUniVideo.HJDanmakuModel>)
public func fetchDanmakuAgents(forTime time: DCUniVideo.HJDanmakuTime) -> Swift.Array<DCUniVideo.HJDanmakuAgent>?
@objc deinit
}
@_inheritsConvenienceInitializers @_hasMissingDesignatedInitializers public class HJDanmakuVideoSource : DCUniVideo.HJDanmakuSource {
override public func prepareDanmakus(_ danmakus: Swift.Array<DCUniVideo.HJDanmakuModel>, completion: @escaping () -> Swift.Void)
override public func sendDanmaku(_ danmaku: DCUniVideo.HJDanmakuModel, forceRender force: Swift.Bool) -> DCUniVideo.HJDanmakuAgent?
override public func sendDanmakus(_ danmakus: Swift.Array<DCUniVideo.HJDanmakuModel>)
override public func fetchDanmakuAgents(forTime time: DCUniVideo.HJDanmakuTime) -> Swift.Array<DCUniVideo.HJDanmakuAgent>?
@objc deinit
}
@_inheritsConvenienceInitializers @_hasMissingDesignatedInitializers public class HJDanmakuLiveSource : DCUniVideo.HJDanmakuSource {
override public func prepareDanmakus(_ danmakus: Swift.Array<DCUniVideo.HJDanmakuModel>, completion: @escaping () -> Swift.Void)
override public func sendDanmaku(_ danmaku: DCUniVideo.HJDanmakuModel, forceRender force: Swift.Bool) -> DCUniVideo.HJDanmakuAgent?
override public func sendDanmakus(_ danmakus: Swift.Array<DCUniVideo.HJDanmakuModel>)
override public func fetchDanmakuAgents(forTime time: DCUniVideo.HJDanmakuTime) -> Swift.Array<DCUniVideo.HJDanmakuAgent>?
@objc deinit
}
extension DCUniVideo.UniVideoPlayerViewPresent {
final public func setControlValue(_ value: Any?, _ key: Swift.String)
}
public protocol HJDanmakuViewDelegate : ObjectiveC.NSObjectProtocol {
func prepareCompletedWithDanmakuView(_ danmakuView: DCUniVideo.HJDanmakuView)
func danmakuView(_ danmakuView: DCUniVideo.HJDanmakuView, shouldRenderDanmaku danmaku: DCUniVideo.HJDanmakuModel) -> Swift.Bool
func danmakuView(_ danmakuView: DCUniVideo.HJDanmakuView, willDisplayCell cell: DCUniVideo.HJDanmakuCell, danmaku: DCUniVideo.HJDanmakuModel)
func danmakuView(_ danmakuView: DCUniVideo.HJDanmakuView, didEndDisplayCell cell: DCUniVideo.HJDanmakuCell, danmaku: DCUniVideo.HJDanmakuModel)
func danmakuView(_ danmakuView: DCUniVideo.HJDanmakuView, shouldSelectCell cell: DCUniVideo.HJDanmakuCell, danmaku: DCUniVideo.HJDanmakuModel) -> Swift.Bool
func danmakuView(_ danmakuView: DCUniVideo.HJDanmakuView, didSelectCell cell: DCUniVideo.HJDanmakuCell, danmaku: DCUniVideo.HJDanmakuModel)
}
extension DCUniVideo.HJDanmakuViewDelegate {
public func prepareCompleted(_ danmakuView: DCUniVideo.HJDanmakuView)
public func danmakuView(_ danmakuView: DCUniVideo.HJDanmakuView, shouldRenderDanmaku danmaku: DCUniVideo.HJDanmakuModel) -> Swift.Bool
public func danmakuView(_ danmakuView: DCUniVideo.HJDanmakuView, willDisplayCell cell: DCUniVideo.HJDanmakuCell, danmaku: DCUniVideo.HJDanmakuModel)
public func danmakuView(_ danmakuView: DCUniVideo.HJDanmakuView, didEndDisplayCell cell: DCUniVideo.HJDanmakuCell, danmaku: DCUniVideo.HJDanmakuModel)
public func danmakuView(_ danmakuView: DCUniVideo.HJDanmakuView, shouldSelectCell cell: DCUniVideo.HJDanmakuCell, danmaku: DCUniVideo.HJDanmakuModel) -> Swift.Bool
public func danmakuView(_ danmakuView: DCUniVideo.HJDanmakuView, didSelectCell cell: DCUniVideo.HJDanmakuCell, danmaku: DCUniVideo.HJDanmakuModel)
}
public protocol HJDanmakuViewDateSource : ObjectiveC.NSObjectProtocol {
func danmakuView(_ danmakuView: DCUniVideo.HJDanmakuView, widthForDanmaku danmaku: DCUniVideo.HJDanmakuModel) -> CoreFoundation.CGFloat
func danmakuView(_ danmakuView: DCUniVideo.HJDanmakuView, cellForDanmaku danmaku: DCUniVideo.HJDanmakuModel) -> DCUniVideo.HJDanmakuCell
func playTimeWithDanmakuView(_ danmakuView: DCUniVideo.HJDanmakuView) -> CoreFoundation.CGFloat
func bufferingWithDanmakuView(_ danmakuView: DCUniVideo.HJDanmakuView) -> Swift.Bool
}
extension DCUniVideo.HJDanmakuViewDateSource {
public func playTimeWithDanmakuView(_ danmakuView: DCUniVideo.HJDanmakuView) -> CoreFoundation.CGFloat
public func bufferingWithDanmakuView(_ danmakuView: DCUniVideo.HJDanmakuView) -> Swift.Bool
}
@objc @_Concurrency.MainActor(unsafe) open class HJDanmakuView : UIKit.UIView {
@_Concurrency.MainActor(unsafe) weak open var dataSource: (any DCUniVideo.HJDanmakuViewDateSource)?
@_Concurrency.MainActor(unsafe) weak open var delegate: (any DCUniVideo.HJDanmakuViewDelegate)?
@_Concurrency.MainActor(unsafe) public var isPrepared: Swift.Bool {
get
}
@_Concurrency.MainActor(unsafe) public var isPlaying: Swift.Bool {
get
}
@_Concurrency.MainActor(unsafe) final public let configuration: DCUniVideo.HJDanmakuConfiguration
@_Concurrency.MainActor(unsafe) public init(frame: CoreFoundation.CGRect, configuration: DCUniVideo.HJDanmakuConfiguration)
@_Concurrency.MainActor(unsafe) @objc required dynamic public init?(coder aDecoder: Foundation.NSCoder)
@_Concurrency.MainActor(unsafe) public func prepareDanmakus(_ danmakus: Swift.Array<DCUniVideo.HJDanmakuModel>?)
@_Concurrency.MainActor(unsafe) public func play()
@_Concurrency.MainActor(unsafe) public func pause()
@_Concurrency.MainActor(unsafe) public func stop()
@_Concurrency.MainActor(unsafe) public func clearScreen()
@_Concurrency.MainActor(unsafe) @objc override dynamic open func sizeToFit()
@_Concurrency.MainActor(unsafe) public func sendDanmaku(_ danmaku: DCUniVideo.HJDanmakuModel, forceRender force: Swift.Bool)
@_Concurrency.MainActor(unsafe) public func sendDanmakus(_ danmakus: Swift.Array<DCUniVideo.HJDanmakuModel>)
@_Concurrency.MainActor(unsafe) public func danmakuForVisibleCell(_ danmakuCell: DCUniVideo.HJDanmakuCell) -> DCUniVideo.HJDanmakuModel?
@_Concurrency.MainActor(unsafe) public var visibleCells: Swift.Array<DCUniVideo.HJDanmakuCell> {
get
}
@objc deinit
}
extension DCUniVideo.HJDanmakuView {
@_Concurrency.MainActor(unsafe) @objc override dynamic open func hitTest(_ point: CoreFoundation.CGPoint, with event: UIKit.UIEvent?) -> UIKit.UIView?
@_Concurrency.MainActor(unsafe) @objc override dynamic open func touchesBegan(_ touches: Swift.Set<UIKit.UITouch>, with event: UIKit.UIEvent?)
@_Concurrency.MainActor(unsafe) @objc override dynamic open func touchesMoved(_ touches: Swift.Set<UIKit.UITouch>, with event: UIKit.UIEvent?)
@_Concurrency.MainActor(unsafe) @objc override dynamic open func touchesEnded(_ touches: Swift.Set<UIKit.UITouch>, with event: UIKit.UIEvent?)
@_Concurrency.MainActor(unsafe) @objc override dynamic open func touchesCancelled(_ touches: Swift.Set<UIKit.UITouch>, with event: UIKit.UIEvent?)
}
extension DCUniVideo.HJDanmakuView {
@_Concurrency.MainActor(unsafe) public func register(_ cellClass: DCUniVideo.HJDanmakuCell.Type, forCellReuseIdentifier identifier: Swift.String)
@_Concurrency.MainActor(unsafe) public func dequeueReusableCell(withIdentifier identifier: Swift.String) -> DCUniVideo.HJDanmakuCell?
}
extension DCUniVideo.UniVideoPlayerViewPresent {
final public func requestFullScreen(_ direction: DCUniVideo.UniVideoPlayerDirection)
final public func exitFullScreenForJS()
}
extension DCUniVideo.HJDanmakuType : Swift.Equatable {}
extension DCUniVideo.HJDanmakuType : Swift.Hashable {}
extension DCUniVideo.HJDanmakuType : Swift.RawRepresentable {}
extension DCUniVideo.HJDanmakuMode : Swift.Equatable {}
extension DCUniVideo.HJDanmakuMode : Swift.Hashable {}
extension DCUniVideo.UniVideoPlayerDirection : Swift.Equatable {}
extension DCUniVideo.UniVideoPlayerDirection : Swift.Hashable {}
extension DCUniVideo.UniVideoPlayerDirection : Swift.RawRepresentable {}
extension DCUniVideo.UniVideoPlayerPlayStrategy : Swift.Equatable {}
extension DCUniVideo.UniVideoPlayerPlayStrategy : Swift.Hashable {}
extension DCUniVideo.UniVideoPlayerPlayStrategy : Swift.RawRepresentable {}
extension DCUniVideo.HJDanmakuCellSelectionStyle : Swift.Equatable {}
extension DCUniVideo.HJDanmakuCellSelectionStyle : Swift.Hashable {}
// swift-interface-format-version: 1.0
// swift-compiler-version: Apple Swift version 5.9.2 (swiftlang-5.9.2.2.56 clang-1500.1.0.2.5)
// swift-module-flags: -target x86_64-apple-ios12.0-simulator -enable-objc-interop -enable-library-evolution -swift-version 5 -enforce-exclusivity=checked -O -module-name DCUniVideo
// swift-module-flags-ignorable: -enable-bare-slash-regex
import AVFAudio
import AVFoundation
import CommonCrypto
@_exported import DCUniVideo
import Foundation
import IJKMediaFrameworkWithSSL
import MediaPlayer
import Swift
import UIKit
import UniDCSVProgressHUD
import _Concurrency
import _StringProcessing
import _SwiftConcurrencyShims
public enum HJDanmakuType : Swift.String {
case HJDanmakuTypeLR
case HJDanmakuTypeFT
case HJDanmakuTypeFB
public init?(rawValue: Swift.String)
public typealias RawValue = Swift.String
public var rawValue: Swift.String {
get
}
}
@objc open class HJDanmakuModel : ObjectiveC.NSObject {
public var time: CoreFoundation.CGFloat
final public let danmakuType: DCUniVideo.HJDanmakuType
public init(danmakuType: DCUniVideo.HJDanmakuType)
@objc deinit
}
public enum HJDanmakuMode {
case HJDanmakuModeVideo
case HJDanmakuModeLive
public static func == (a: DCUniVideo.HJDanmakuMode, b: DCUniVideo.HJDanmakuMode) -> Swift.Bool
public func hash(into hasher: inout Swift.Hasher)
public var hashValue: Swift.Int {
get
}
}
open class HJDanmakuConfiguration {
public var duration: CoreFoundation.CGFloat
public var tolerance: CoreFoundation.CGFloat
public var numberOfLines: Swift.Int
public var cellHeight: CoreFoundation.CGFloat
public var maxShowCount: Swift.Int
public init(danmakuMode: DCUniVideo.HJDanmakuMode)
@objc deinit
}
public protocol ViewPresent {
associatedtype View
var view: Self.View { get set }
}
public protocol UniVideoPlayerProtocol : AnyObject {
func getCookieString(_ url: Foundation.URL) -> Swift.String?
func getCurrentUA() -> Swift.String
func sendEvent(_ name: Swift.String, _ params: [Swift.String : Any]?)
func loadImage(_ url: Swift.String, _ complete: @escaping (UIKit.UIImage) -> Swift.Void)
func videoPlayerExitFullScreen(_ orientation: UIKit.UIInterfaceOrientation)
func videoPlayerEnterFullScreen(_ orientation: UIKit.UIInterfaceOrientation)
func lockScreen()
func unlockScreen()
func setFullScreen(_ yesOrNo: Swift.Bool)
func setHomeIndicatorAutoHidden(_ yesOrNo: Swift.Bool)
func setTempOrientation(_ temp: UIKit.UIInterfaceOrientationMask)
func configSupportOrientation(_ orientation: UIKit.UIInterfaceOrientation) -> Swift.Bool
func setDeviceInterfaceOrientation(_ orientation: UIKit.UIInterfaceOrientation)
func h5Path2SysPath(_ path: Swift.String, _ basePath: Swift.String?) -> Swift.String
func workRootPath() -> Swift.String
func videoCacheDir() -> Swift.String
}
final public class UniVideoPlayerViewPresent : DCUniVideo.ViewPresent {
public typealias View = DCUniVideo.UniVideoPlayerView
final public var view: DCUniVideo.UniVideoPlayerViewPresent.View
final public var config: DCUniVideo.UniVideoPlayerConfig
weak final public var delegate: (any DCUniVideo.UniVideoPlayerProtocol)? {
get
set
}
final public var contentView: UIKit.UIView {
get
set
}
public init(_ config: DCUniVideo.UniVideoPlayerConfig, _ delegate: (any DCUniVideo.UniVideoPlayerProtocol)?, _ frame: CoreFoundation.CGRect = .zero)
@objc deinit
final public func updateViewFrame(_ rect: CoreFoundation.CGRect)
}
extension DCUniVideo.UniVideoPlayerViewPresent {
final public func play()
final public func pause()
final public func stop()
final public func palybackRate(_ rate: Swift.String)
final public func destroy()
final public func showStatusBar()
final public func hideStatusBar()
}
extension DCUniVideo.UniVideoPlayerViewPresent {
final public func sendDanmu(_ danmu: [Swift.String : Any])
final public func clearDanmu()
}
extension DCUniVideo.UniVideoPlayerViewPresent {
final public func seek(_ position: Swift.Float)
}
public enum UniVideoPlayerDirection : Swift.Int {
case normal
case left
case right
case auto
public init?(rawValue: Swift.Int)
public typealias RawValue = Swift.Int
public var rawValue: Swift.Int {
get
}
}
public enum UniVideoPlayerPlayStrategy : Swift.Int {
case common
case smooth
case m3u8_smooth
public init?(rawValue: Swift.Int)
public typealias RawValue = Swift.Int
public var rawValue: Swift.Int {
get
}
}
@objc public class UniVideoPlayerConfig : ObjectiveC.NSObject {
public init(options: [Swift.AnyHashable : Any]?)
public static func direction(_ value: Any) -> DCUniVideo.UniVideoPlayerDirection
@objc deinit
}
@objc @_inheritsConvenienceInitializers @_hasMissingDesignatedInitializers @_Concurrency.MainActor(unsafe) public class UniVideoPlayerView : UIKit.UIView {
@_Concurrency.MainActor(unsafe) @objc override dynamic public func layoutSubviews()
@_Concurrency.MainActor(unsafe) @objc override dynamic public func didMoveToSuperview()
@objc deinit
}
extension DCUniVideo.UniVideoPlayerView : UIKit.UIGestureRecognizerDelegate {
@_Concurrency.MainActor(unsafe) @objc dynamic public func gestureRecognizer(_ gestureRecognizer: UIKit.UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIKit.UIGestureRecognizer) -> Swift.Bool
@_Concurrency.MainActor(unsafe) @objc dynamic public func gestureRecognizer(_ gestureRecognizer: UIKit.UIGestureRecognizer, shouldReceive touch: UIKit.UITouch) -> Swift.Bool
}
public enum HJDanmakuCellSelectionStyle {
case HJDanmakuCellSelectionStyleNone
case HJDanmakuCellSelectionStyleDefault
public static func == (a: DCUniVideo.HJDanmakuCellSelectionStyle, b: DCUniVideo.HJDanmakuCellSelectionStyle) -> Swift.Bool
public func hash(into hasher: inout Swift.Hasher)
public var hashValue: Swift.Int {
get
}
}
@objc @_Concurrency.MainActor(unsafe) open class HJDanmakuCell : UIKit.UIView {
@_Concurrency.MainActor(unsafe) public var zIndex: Swift.Int
@_Concurrency.MainActor(unsafe) public var selectionStyle: DCUniVideo.HJDanmakuCellSelectionStyle
@_Concurrency.MainActor(unsafe) public var textLabel: UIKit.UILabel {
get
}
@_Concurrency.MainActor(unsafe) required public init(reuseIdentifier: Swift.String)
@_Concurrency.MainActor(unsafe) @objc required dynamic public init?(coder aDecoder: Foundation.NSCoder)
@_Concurrency.MainActor(unsafe) open func prepareForReuse()
@objc deinit
}
public struct HJDanmakuTime {
public var time: CoreFoundation.CGFloat
public var interval: CoreFoundation.CGFloat
public func MaxTime() -> CoreFoundation.CGFloat
}
public class HJDanmakuAgent {
public init(danmakuModel: DCUniVideo.HJDanmakuModel)
@objc deinit
}
@_hasMissingDesignatedInitializers public class HJDanmakuSource {
public func prepareDanmakus(_ danmakus: Swift.Array<DCUniVideo.HJDanmakuModel>, completion: @escaping () -> Swift.Void)
@discardableResult
public func sendDanmaku(_ danmaku: DCUniVideo.HJDanmakuModel, forceRender force: Swift.Bool) -> DCUniVideo.HJDanmakuAgent?
public func sendDanmakus(_ danmakus: Swift.Array<DCUniVideo.HJDanmakuModel>)
public func fetchDanmakuAgents(forTime time: DCUniVideo.HJDanmakuTime) -> Swift.Array<DCUniVideo.HJDanmakuAgent>?
@objc deinit
}
@_inheritsConvenienceInitializers @_hasMissingDesignatedInitializers public class HJDanmakuVideoSource : DCUniVideo.HJDanmakuSource {
override public func prepareDanmakus(_ danmakus: Swift.Array<DCUniVideo.HJDanmakuModel>, completion: @escaping () -> Swift.Void)
override public func sendDanmaku(_ danmaku: DCUniVideo.HJDanmakuModel, forceRender force: Swift.Bool) -> DCUniVideo.HJDanmakuAgent?
override public func sendDanmakus(_ danmakus: Swift.Array<DCUniVideo.HJDanmakuModel>)
override public func fetchDanmakuAgents(forTime time: DCUniVideo.HJDanmakuTime) -> Swift.Array<DCUniVideo.HJDanmakuAgent>?
@objc deinit
}
@_inheritsConvenienceInitializers @_hasMissingDesignatedInitializers public class HJDanmakuLiveSource : DCUniVideo.HJDanmakuSource {
override public func prepareDanmakus(_ danmakus: Swift.Array<DCUniVideo.HJDanmakuModel>, completion: @escaping () -> Swift.Void)
override public func sendDanmaku(_ danmaku: DCUniVideo.HJDanmakuModel, forceRender force: Swift.Bool) -> DCUniVideo.HJDanmakuAgent?
override public func sendDanmakus(_ danmakus: Swift.Array<DCUniVideo.HJDanmakuModel>)
override public func fetchDanmakuAgents(forTime time: DCUniVideo.HJDanmakuTime) -> Swift.Array<DCUniVideo.HJDanmakuAgent>?
@objc deinit
}
extension DCUniVideo.UniVideoPlayerViewPresent {
final public func setControlValue(_ value: Any?, _ key: Swift.String)
}
public protocol HJDanmakuViewDelegate : ObjectiveC.NSObjectProtocol {
func prepareCompletedWithDanmakuView(_ danmakuView: DCUniVideo.HJDanmakuView)
func danmakuView(_ danmakuView: DCUniVideo.HJDanmakuView, shouldRenderDanmaku danmaku: DCUniVideo.HJDanmakuModel) -> Swift.Bool
func danmakuView(_ danmakuView: DCUniVideo.HJDanmakuView, willDisplayCell cell: DCUniVideo.HJDanmakuCell, danmaku: DCUniVideo.HJDanmakuModel)
func danmakuView(_ danmakuView: DCUniVideo.HJDanmakuView, didEndDisplayCell cell: DCUniVideo.HJDanmakuCell, danmaku: DCUniVideo.HJDanmakuModel)
func danmakuView(_ danmakuView: DCUniVideo.HJDanmakuView, shouldSelectCell cell: DCUniVideo.HJDanmakuCell, danmaku: DCUniVideo.HJDanmakuModel) -> Swift.Bool
func danmakuView(_ danmakuView: DCUniVideo.HJDanmakuView, didSelectCell cell: DCUniVideo.HJDanmakuCell, danmaku: DCUniVideo.HJDanmakuModel)
}
extension DCUniVideo.HJDanmakuViewDelegate {
public func prepareCompleted(_ danmakuView: DCUniVideo.HJDanmakuView)
public func danmakuView(_ danmakuView: DCUniVideo.HJDanmakuView, shouldRenderDanmaku danmaku: DCUniVideo.HJDanmakuModel) -> Swift.Bool
public func danmakuView(_ danmakuView: DCUniVideo.HJDanmakuView, willDisplayCell cell: DCUniVideo.HJDanmakuCell, danmaku: DCUniVideo.HJDanmakuModel)
public func danmakuView(_ danmakuView: DCUniVideo.HJDanmakuView, didEndDisplayCell cell: DCUniVideo.HJDanmakuCell, danmaku: DCUniVideo.HJDanmakuModel)
public func danmakuView(_ danmakuView: DCUniVideo.HJDanmakuView, shouldSelectCell cell: DCUniVideo.HJDanmakuCell, danmaku: DCUniVideo.HJDanmakuModel) -> Swift.Bool
public func danmakuView(_ danmakuView: DCUniVideo.HJDanmakuView, didSelectCell cell: DCUniVideo.HJDanmakuCell, danmaku: DCUniVideo.HJDanmakuModel)
}
public protocol HJDanmakuViewDateSource : ObjectiveC.NSObjectProtocol {
func danmakuView(_ danmakuView: DCUniVideo.HJDanmakuView, widthForDanmaku danmaku: DCUniVideo.HJDanmakuModel) -> CoreFoundation.CGFloat
func danmakuView(_ danmakuView: DCUniVideo.HJDanmakuView, cellForDanmaku danmaku: DCUniVideo.HJDanmakuModel) -> DCUniVideo.HJDanmakuCell
func playTimeWithDanmakuView(_ danmakuView: DCUniVideo.HJDanmakuView) -> CoreFoundation.CGFloat
func bufferingWithDanmakuView(_ danmakuView: DCUniVideo.HJDanmakuView) -> Swift.Bool
}
extension DCUniVideo.HJDanmakuViewDateSource {
public func playTimeWithDanmakuView(_ danmakuView: DCUniVideo.HJDanmakuView) -> CoreFoundation.CGFloat
public func bufferingWithDanmakuView(_ danmakuView: DCUniVideo.HJDanmakuView) -> Swift.Bool
}
@objc @_Concurrency.MainActor(unsafe) open class HJDanmakuView : UIKit.UIView {
@_Concurrency.MainActor(unsafe) weak open var dataSource: (any DCUniVideo.HJDanmakuViewDateSource)?
@_Concurrency.MainActor(unsafe) weak open var delegate: (any DCUniVideo.HJDanmakuViewDelegate)?
@_Concurrency.MainActor(unsafe) public var isPrepared: Swift.Bool {
get
}
@_Concurrency.MainActor(unsafe) public var isPlaying: Swift.Bool {
get
}
@_Concurrency.MainActor(unsafe) final public let configuration: DCUniVideo.HJDanmakuConfiguration
@_Concurrency.MainActor(unsafe) public init(frame: CoreFoundation.CGRect, configuration: DCUniVideo.HJDanmakuConfiguration)
@_Concurrency.MainActor(unsafe) @objc required dynamic public init?(coder aDecoder: Foundation.NSCoder)
@_Concurrency.MainActor(unsafe) public func prepareDanmakus(_ danmakus: Swift.Array<DCUniVideo.HJDanmakuModel>?)
@_Concurrency.MainActor(unsafe) public func play()
@_Concurrency.MainActor(unsafe) public func pause()
@_Concurrency.MainActor(unsafe) public func stop()
@_Concurrency.MainActor(unsafe) public func clearScreen()
@_Concurrency.MainActor(unsafe) @objc override dynamic open func sizeToFit()
@_Concurrency.MainActor(unsafe) public func sendDanmaku(_ danmaku: DCUniVideo.HJDanmakuModel, forceRender force: Swift.Bool)
@_Concurrency.MainActor(unsafe) public func sendDanmakus(_ danmakus: Swift.Array<DCUniVideo.HJDanmakuModel>)
@_Concurrency.MainActor(unsafe) public func danmakuForVisibleCell(_ danmakuCell: DCUniVideo.HJDanmakuCell) -> DCUniVideo.HJDanmakuModel?
@_Concurrency.MainActor(unsafe) public var visibleCells: Swift.Array<DCUniVideo.HJDanmakuCell> {
get
}
@objc deinit
}
extension DCUniVideo.HJDanmakuView {
@_Concurrency.MainActor(unsafe) @objc override dynamic open func hitTest(_ point: CoreFoundation.CGPoint, with event: UIKit.UIEvent?) -> UIKit.UIView?
@_Concurrency.MainActor(unsafe) @objc override dynamic open func touchesBegan(_ touches: Swift.Set<UIKit.UITouch>, with event: UIKit.UIEvent?)
@_Concurrency.MainActor(unsafe) @objc override dynamic open func touchesMoved(_ touches: Swift.Set<UIKit.UITouch>, with event: UIKit.UIEvent?)
@_Concurrency.MainActor(unsafe) @objc override dynamic open func touchesEnded(_ touches: Swift.Set<UIKit.UITouch>, with event: UIKit.UIEvent?)
@_Concurrency.MainActor(unsafe) @objc override dynamic open func touchesCancelled(_ touches: Swift.Set<UIKit.UITouch>, with event: UIKit.UIEvent?)
}
extension DCUniVideo.HJDanmakuView {
@_Concurrency.MainActor(unsafe) public func register(_ cellClass: DCUniVideo.HJDanmakuCell.Type, forCellReuseIdentifier identifier: Swift.String)
@_Concurrency.MainActor(unsafe) public func dequeueReusableCell(withIdentifier identifier: Swift.String) -> DCUniVideo.HJDanmakuCell?
}
extension DCUniVideo.UniVideoPlayerViewPresent {
final public func requestFullScreen(_ direction: DCUniVideo.UniVideoPlayerDirection)
final public func exitFullScreenForJS()
}
extension DCUniVideo.HJDanmakuType : Swift.Equatable {}
extension DCUniVideo.HJDanmakuType : Swift.Hashable {}
extension DCUniVideo.HJDanmakuType : Swift.RawRepresentable {}
extension DCUniVideo.HJDanmakuMode : Swift.Equatable {}
extension DCUniVideo.HJDanmakuMode : Swift.Hashable {}
extension DCUniVideo.UniVideoPlayerDirection : Swift.Equatable {}
extension DCUniVideo.UniVideoPlayerDirection : Swift.Hashable {}
extension DCUniVideo.UniVideoPlayerDirection : Swift.RawRepresentable {}
extension DCUniVideo.UniVideoPlayerPlayStrategy : Swift.Equatable {}
extension DCUniVideo.UniVideoPlayerPlayStrategy : Swift.Hashable {}
extension DCUniVideo.UniVideoPlayerPlayStrategy : Swift.RawRepresentable {}
extension DCUniVideo.HJDanmakuCellSelectionStyle : Swift.Equatable {}
extension DCUniVideo.HJDanmakuCellSelectionStyle : Swift.Hashable {}
// swift-interface-format-version: 1.0
// swift-compiler-version: Apple Swift version 5.9.2 (swiftlang-5.9.2.2.56 clang-1500.1.0.2.5)
// swift-module-flags: -target x86_64-apple-ios12.0-simulator -enable-objc-interop -enable-library-evolution -swift-version 5 -enforce-exclusivity=checked -O -module-name DCUniVideo
// swift-module-flags-ignorable: -enable-bare-slash-regex
import AVFAudio
import AVFoundation
import CommonCrypto
@_exported import DCUniVideo
import Foundation
import IJKMediaFrameworkWithSSL
import MediaPlayer
import Swift
import UIKit
import UniDCSVProgressHUD
import _Concurrency
import _StringProcessing
import _SwiftConcurrencyShims
public enum HJDanmakuType : Swift.String {
case HJDanmakuTypeLR
case HJDanmakuTypeFT
case HJDanmakuTypeFB
public init?(rawValue: Swift.String)
public typealias RawValue = Swift.String
public var rawValue: Swift.String {
get
}
}
@objc open class HJDanmakuModel : ObjectiveC.NSObject {
public var time: CoreFoundation.CGFloat
final public let danmakuType: DCUniVideo.HJDanmakuType
public init(danmakuType: DCUniVideo.HJDanmakuType)
@objc deinit
}
public enum HJDanmakuMode {
case HJDanmakuModeVideo
case HJDanmakuModeLive
public static func == (a: DCUniVideo.HJDanmakuMode, b: DCUniVideo.HJDanmakuMode) -> Swift.Bool
public func hash(into hasher: inout Swift.Hasher)
public var hashValue: Swift.Int {
get
}
}
open class HJDanmakuConfiguration {
public var duration: CoreFoundation.CGFloat
public var tolerance: CoreFoundation.CGFloat
public var numberOfLines: Swift.Int
public var cellHeight: CoreFoundation.CGFloat
public var maxShowCount: Swift.Int
public init(danmakuMode: DCUniVideo.HJDanmakuMode)
@objc deinit
}
public protocol ViewPresent {
associatedtype View
var view: Self.View { get set }
}
public protocol UniVideoPlayerProtocol : AnyObject {
func getCookieString(_ url: Foundation.URL) -> Swift.String?
func getCurrentUA() -> Swift.String
func sendEvent(_ name: Swift.String, _ params: [Swift.String : Any]?)
func loadImage(_ url: Swift.String, _ complete: @escaping (UIKit.UIImage) -> Swift.Void)
func videoPlayerExitFullScreen(_ orientation: UIKit.UIInterfaceOrientation)
func videoPlayerEnterFullScreen(_ orientation: UIKit.UIInterfaceOrientation)
func lockScreen()
func unlockScreen()
func setFullScreen(_ yesOrNo: Swift.Bool)
func setHomeIndicatorAutoHidden(_ yesOrNo: Swift.Bool)
func setTempOrientation(_ temp: UIKit.UIInterfaceOrientationMask)
func configSupportOrientation(_ orientation: UIKit.UIInterfaceOrientation) -> Swift.Bool
func setDeviceInterfaceOrientation(_ orientation: UIKit.UIInterfaceOrientation)
func h5Path2SysPath(_ path: Swift.String, _ basePath: Swift.String?) -> Swift.String
func workRootPath() -> Swift.String
func videoCacheDir() -> Swift.String
}
final public class UniVideoPlayerViewPresent : DCUniVideo.ViewPresent {
public typealias View = DCUniVideo.UniVideoPlayerView
final public var view: DCUniVideo.UniVideoPlayerViewPresent.View
final public var config: DCUniVideo.UniVideoPlayerConfig
weak final public var delegate: (any DCUniVideo.UniVideoPlayerProtocol)? {
get
set
}
final public var contentView: UIKit.UIView {
get
set
}
public init(_ config: DCUniVideo.UniVideoPlayerConfig, _ delegate: (any DCUniVideo.UniVideoPlayerProtocol)?, _ frame: CoreFoundation.CGRect = .zero)
@objc deinit
final public func updateViewFrame(_ rect: CoreFoundation.CGRect)
}
extension DCUniVideo.UniVideoPlayerViewPresent {
final public func play()
final public func pause()
final public func stop()
final public func palybackRate(_ rate: Swift.String)
final public func destroy()
final public func showStatusBar()
final public func hideStatusBar()
}
extension DCUniVideo.UniVideoPlayerViewPresent {
final public func sendDanmu(_ danmu: [Swift.String : Any])
final public func clearDanmu()
}
extension DCUniVideo.UniVideoPlayerViewPresent {
final public func seek(_ position: Swift.Float)
}
public enum UniVideoPlayerDirection : Swift.Int {
case normal
case left
case right
case auto
public init?(rawValue: Swift.Int)
public typealias RawValue = Swift.Int
public var rawValue: Swift.Int {
get
}
}
public enum UniVideoPlayerPlayStrategy : Swift.Int {
case common
case smooth
case m3u8_smooth
public init?(rawValue: Swift.Int)
public typealias RawValue = Swift.Int
public var rawValue: Swift.Int {
get
}
}
@objc public class UniVideoPlayerConfig : ObjectiveC.NSObject {
public init(options: [Swift.AnyHashable : Any]?)
public static func direction(_ value: Any) -> DCUniVideo.UniVideoPlayerDirection
@objc deinit
}
@objc @_inheritsConvenienceInitializers @_hasMissingDesignatedInitializers @_Concurrency.MainActor(unsafe) public class UniVideoPlayerView : UIKit.UIView {
@_Concurrency.MainActor(unsafe) @objc override dynamic public func layoutSubviews()
@_Concurrency.MainActor(unsafe) @objc override dynamic public func didMoveToSuperview()
@objc deinit
}
extension DCUniVideo.UniVideoPlayerView : UIKit.UIGestureRecognizerDelegate {
@_Concurrency.MainActor(unsafe) @objc dynamic public func gestureRecognizer(_ gestureRecognizer: UIKit.UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIKit.UIGestureRecognizer) -> Swift.Bool
@_Concurrency.MainActor(unsafe) @objc dynamic public func gestureRecognizer(_ gestureRecognizer: UIKit.UIGestureRecognizer, shouldReceive touch: UIKit.UITouch) -> Swift.Bool
}
public enum HJDanmakuCellSelectionStyle {
case HJDanmakuCellSelectionStyleNone
case HJDanmakuCellSelectionStyleDefault
public static func == (a: DCUniVideo.HJDanmakuCellSelectionStyle, b: DCUniVideo.HJDanmakuCellSelectionStyle) -> Swift.Bool
public func hash(into hasher: inout Swift.Hasher)
public var hashValue: Swift.Int {
get
}
}
@objc @_Concurrency.MainActor(unsafe) open class HJDanmakuCell : UIKit.UIView {
@_Concurrency.MainActor(unsafe) public var zIndex: Swift.Int
@_Concurrency.MainActor(unsafe) public var selectionStyle: DCUniVideo.HJDanmakuCellSelectionStyle
@_Concurrency.MainActor(unsafe) public var textLabel: UIKit.UILabel {
get
}
@_Concurrency.MainActor(unsafe) required public init(reuseIdentifier: Swift.String)
@_Concurrency.MainActor(unsafe) @objc required dynamic public init?(coder aDecoder: Foundation.NSCoder)
@_Concurrency.MainActor(unsafe) open func prepareForReuse()
@objc deinit
}
public struct HJDanmakuTime {
public var time: CoreFoundation.CGFloat
public var interval: CoreFoundation.CGFloat
public func MaxTime() -> CoreFoundation.CGFloat
}
public class HJDanmakuAgent {
public init(danmakuModel: DCUniVideo.HJDanmakuModel)
@objc deinit
}
@_hasMissingDesignatedInitializers public class HJDanmakuSource {
public func prepareDanmakus(_ danmakus: Swift.Array<DCUniVideo.HJDanmakuModel>, completion: @escaping () -> Swift.Void)
@discardableResult
public func sendDanmaku(_ danmaku: DCUniVideo.HJDanmakuModel, forceRender force: Swift.Bool) -> DCUniVideo.HJDanmakuAgent?
public func sendDanmakus(_ danmakus: Swift.Array<DCUniVideo.HJDanmakuModel>)
public func fetchDanmakuAgents(forTime time: DCUniVideo.HJDanmakuTime) -> Swift.Array<DCUniVideo.HJDanmakuAgent>?
@objc deinit
}
@_inheritsConvenienceInitializers @_hasMissingDesignatedInitializers public class HJDanmakuVideoSource : DCUniVideo.HJDanmakuSource {
override public func prepareDanmakus(_ danmakus: Swift.Array<DCUniVideo.HJDanmakuModel>, completion: @escaping () -> Swift.Void)
override public func sendDanmaku(_ danmaku: DCUniVideo.HJDanmakuModel, forceRender force: Swift.Bool) -> DCUniVideo.HJDanmakuAgent?
override public func sendDanmakus(_ danmakus: Swift.Array<DCUniVideo.HJDanmakuModel>)
override public func fetchDanmakuAgents(forTime time: DCUniVideo.HJDanmakuTime) -> Swift.Array<DCUniVideo.HJDanmakuAgent>?
@objc deinit
}
@_inheritsConvenienceInitializers @_hasMissingDesignatedInitializers public class HJDanmakuLiveSource : DCUniVideo.HJDanmakuSource {
override public func prepareDanmakus(_ danmakus: Swift.Array<DCUniVideo.HJDanmakuModel>, completion: @escaping () -> Swift.Void)
override public func sendDanmaku(_ danmaku: DCUniVideo.HJDanmakuModel, forceRender force: Swift.Bool) -> DCUniVideo.HJDanmakuAgent?
override public func sendDanmakus(_ danmakus: Swift.Array<DCUniVideo.HJDanmakuModel>)
override public func fetchDanmakuAgents(forTime time: DCUniVideo.HJDanmakuTime) -> Swift.Array<DCUniVideo.HJDanmakuAgent>?
@objc deinit
}
extension DCUniVideo.UniVideoPlayerViewPresent {
final public func setControlValue(_ value: Any?, _ key: Swift.String)
}
public protocol HJDanmakuViewDelegate : ObjectiveC.NSObjectProtocol {
func prepareCompletedWithDanmakuView(_ danmakuView: DCUniVideo.HJDanmakuView)
func danmakuView(_ danmakuView: DCUniVideo.HJDanmakuView, shouldRenderDanmaku danmaku: DCUniVideo.HJDanmakuModel) -> Swift.Bool
func danmakuView(_ danmakuView: DCUniVideo.HJDanmakuView, willDisplayCell cell: DCUniVideo.HJDanmakuCell, danmaku: DCUniVideo.HJDanmakuModel)
func danmakuView(_ danmakuView: DCUniVideo.HJDanmakuView, didEndDisplayCell cell: DCUniVideo.HJDanmakuCell, danmaku: DCUniVideo.HJDanmakuModel)
func danmakuView(_ danmakuView: DCUniVideo.HJDanmakuView, shouldSelectCell cell: DCUniVideo.HJDanmakuCell, danmaku: DCUniVideo.HJDanmakuModel) -> Swift.Bool
func danmakuView(_ danmakuView: DCUniVideo.HJDanmakuView, didSelectCell cell: DCUniVideo.HJDanmakuCell, danmaku: DCUniVideo.HJDanmakuModel)
}
extension DCUniVideo.HJDanmakuViewDelegate {
public func prepareCompleted(_ danmakuView: DCUniVideo.HJDanmakuView)
public func danmakuView(_ danmakuView: DCUniVideo.HJDanmakuView, shouldRenderDanmaku danmaku: DCUniVideo.HJDanmakuModel) -> Swift.Bool
public func danmakuView(_ danmakuView: DCUniVideo.HJDanmakuView, willDisplayCell cell: DCUniVideo.HJDanmakuCell, danmaku: DCUniVideo.HJDanmakuModel)
public func danmakuView(_ danmakuView: DCUniVideo.HJDanmakuView, didEndDisplayCell cell: DCUniVideo.HJDanmakuCell, danmaku: DCUniVideo.HJDanmakuModel)
public func danmakuView(_ danmakuView: DCUniVideo.HJDanmakuView, shouldSelectCell cell: DCUniVideo.HJDanmakuCell, danmaku: DCUniVideo.HJDanmakuModel) -> Swift.Bool
public func danmakuView(_ danmakuView: DCUniVideo.HJDanmakuView, didSelectCell cell: DCUniVideo.HJDanmakuCell, danmaku: DCUniVideo.HJDanmakuModel)
}
public protocol HJDanmakuViewDateSource : ObjectiveC.NSObjectProtocol {
func danmakuView(_ danmakuView: DCUniVideo.HJDanmakuView, widthForDanmaku danmaku: DCUniVideo.HJDanmakuModel) -> CoreFoundation.CGFloat
func danmakuView(_ danmakuView: DCUniVideo.HJDanmakuView, cellForDanmaku danmaku: DCUniVideo.HJDanmakuModel) -> DCUniVideo.HJDanmakuCell
func playTimeWithDanmakuView(_ danmakuView: DCUniVideo.HJDanmakuView) -> CoreFoundation.CGFloat
func bufferingWithDanmakuView(_ danmakuView: DCUniVideo.HJDanmakuView) -> Swift.Bool
}
extension DCUniVideo.HJDanmakuViewDateSource {
public func playTimeWithDanmakuView(_ danmakuView: DCUniVideo.HJDanmakuView) -> CoreFoundation.CGFloat
public func bufferingWithDanmakuView(_ danmakuView: DCUniVideo.HJDanmakuView) -> Swift.Bool
}
@objc @_Concurrency.MainActor(unsafe) open class HJDanmakuView : UIKit.UIView {
@_Concurrency.MainActor(unsafe) weak open var dataSource: (any DCUniVideo.HJDanmakuViewDateSource)?
@_Concurrency.MainActor(unsafe) weak open var delegate: (any DCUniVideo.HJDanmakuViewDelegate)?
@_Concurrency.MainActor(unsafe) public var isPrepared: Swift.Bool {
get
}
@_Concurrency.MainActor(unsafe) public var isPlaying: Swift.Bool {
get
}
@_Concurrency.MainActor(unsafe) final public let configuration: DCUniVideo.HJDanmakuConfiguration
@_Concurrency.MainActor(unsafe) public init(frame: CoreFoundation.CGRect, configuration: DCUniVideo.HJDanmakuConfiguration)
@_Concurrency.MainActor(unsafe) @objc required dynamic public init?(coder aDecoder: Foundation.NSCoder)
@_Concurrency.MainActor(unsafe) public func prepareDanmakus(_ danmakus: Swift.Array<DCUniVideo.HJDanmakuModel>?)
@_Concurrency.MainActor(unsafe) public func play()
@_Concurrency.MainActor(unsafe) public func pause()
@_Concurrency.MainActor(unsafe) public func stop()
@_Concurrency.MainActor(unsafe) public func clearScreen()
@_Concurrency.MainActor(unsafe) @objc override dynamic open func sizeToFit()
@_Concurrency.MainActor(unsafe) public func sendDanmaku(_ danmaku: DCUniVideo.HJDanmakuModel, forceRender force: Swift.Bool)
@_Concurrency.MainActor(unsafe) public func sendDanmakus(_ danmakus: Swift.Array<DCUniVideo.HJDanmakuModel>)
@_Concurrency.MainActor(unsafe) public func danmakuForVisibleCell(_ danmakuCell: DCUniVideo.HJDanmakuCell) -> DCUniVideo.HJDanmakuModel?
@_Concurrency.MainActor(unsafe) public var visibleCells: Swift.Array<DCUniVideo.HJDanmakuCell> {
get
}
@objc deinit
}
extension DCUniVideo.HJDanmakuView {
@_Concurrency.MainActor(unsafe) @objc override dynamic open func hitTest(_ point: CoreFoundation.CGPoint, with event: UIKit.UIEvent?) -> UIKit.UIView?
@_Concurrency.MainActor(unsafe) @objc override dynamic open func touchesBegan(_ touches: Swift.Set<UIKit.UITouch>, with event: UIKit.UIEvent?)
@_Concurrency.MainActor(unsafe) @objc override dynamic open func touchesMoved(_ touches: Swift.Set<UIKit.UITouch>, with event: UIKit.UIEvent?)
@_Concurrency.MainActor(unsafe) @objc override dynamic open func touchesEnded(_ touches: Swift.Set<UIKit.UITouch>, with event: UIKit.UIEvent?)
@_Concurrency.MainActor(unsafe) @objc override dynamic open func touchesCancelled(_ touches: Swift.Set<UIKit.UITouch>, with event: UIKit.UIEvent?)
}
extension DCUniVideo.HJDanmakuView {
@_Concurrency.MainActor(unsafe) public func register(_ cellClass: DCUniVideo.HJDanmakuCell.Type, forCellReuseIdentifier identifier: Swift.String)
@_Concurrency.MainActor(unsafe) public func dequeueReusableCell(withIdentifier identifier: Swift.String) -> DCUniVideo.HJDanmakuCell?
}
extension DCUniVideo.UniVideoPlayerViewPresent {
final public func requestFullScreen(_ direction: DCUniVideo.UniVideoPlayerDirection)
final public func exitFullScreenForJS()
}
extension DCUniVideo.HJDanmakuType : Swift.Equatable {}
extension DCUniVideo.HJDanmakuType : Swift.Hashable {}
extension DCUniVideo.HJDanmakuType : Swift.RawRepresentable {}
extension DCUniVideo.HJDanmakuMode : Swift.Equatable {}
extension DCUniVideo.HJDanmakuMode : Swift.Hashable {}
extension DCUniVideo.UniVideoPlayerDirection : Swift.Equatable {}
extension DCUniVideo.UniVideoPlayerDirection : Swift.Hashable {}
extension DCUniVideo.UniVideoPlayerDirection : Swift.RawRepresentable {}
extension DCUniVideo.UniVideoPlayerPlayStrategy : Swift.Equatable {}
extension DCUniVideo.UniVideoPlayerPlayStrategy : Swift.Hashable {}
extension DCUniVideo.UniVideoPlayerPlayStrategy : Swift.RawRepresentable {}
extension DCUniVideo.HJDanmakuCellSelectionStyle : Swift.Equatable {}
extension DCUniVideo.HJDanmakuCellSelectionStyle : Swift.Hashable {}
framework module DCUniVideo {
umbrella header "DCUniVideo.h"
export *
module * { export * }
}
module DCUniVideo.Swift {
header "DCUniVideo-Swift.h"
requires objc
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>files</key>
<dict>
<key>Headers/DCUniVideo-Swift.h</key>
<data>
8RtESNpNJ/MLh4AISu16ekCnNgM=
</data>
<key>Headers/DCUniVideo.h</key>
<data>
/i/vUc9+qNjSc6KyVWztp1EbpnY=
</data>
<key>Headers/UIControl+EnlargeTouchArea.h</key>
<data>
ULIZ85+W9TRHsliK055MlVf284w=
</data>
<key>Info.plist</key>
<data>
ZJfU/z0myJ2FJ6v4FI5s1po6+18=
</data>
<key>Modules/DCUniVideo.swiftmodule/Project/arm64-apple-ios-simulator.swiftsourceinfo</key>
<data>
LMw61NwrRpA08JKfgcEYaj3bC4s=
</data>
<key>Modules/DCUniVideo.swiftmodule/Project/x86_64-apple-ios-simulator.swiftsourceinfo</key>
<data>
7RwLqhAfiKvxA+Cxv6/N962PpOg=
</data>
<key>Modules/DCUniVideo.swiftmodule/arm64-apple-ios-simulator.abi.json</key>
<data>
nk9o0CXiQ/GZWFtpqNFQSf56Aq4=
</data>
<key>Modules/DCUniVideo.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface</key>
<data>
TYzZQAPhXzOjxQ7cOKZu2E3/gOM=
</data>
<key>Modules/DCUniVideo.swiftmodule/arm64-apple-ios-simulator.swiftdoc</key>
<data>
zaMs+qbaViQJV9jdtXLqo29LabM=
</data>
<key>Modules/DCUniVideo.swiftmodule/arm64-apple-ios-simulator.swiftinterface</key>
<data>
TYzZQAPhXzOjxQ7cOKZu2E3/gOM=
</data>
<key>Modules/DCUniVideo.swiftmodule/arm64-apple-ios-simulator.swiftmodule</key>
<data>
gR2m/jlpxNCVmIfuV+qVvd6FVoE=
</data>
<key>Modules/DCUniVideo.swiftmodule/x86_64-apple-ios-simulator.abi.json</key>
<data>
nk9o0CXiQ/GZWFtpqNFQSf56Aq4=
</data>
<key>Modules/DCUniVideo.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface</key>
<data>
P9A/XUTYbV9hqAFkvIsnL90B8HQ=
</data>
<key>Modules/DCUniVideo.swiftmodule/x86_64-apple-ios-simulator.swiftdoc</key>
<data>
tMymyR7BzfUWQ9cTfV/3r+zajeY=
</data>
<key>Modules/DCUniVideo.swiftmodule/x86_64-apple-ios-simulator.swiftinterface</key>
<data>
P9A/XUTYbV9hqAFkvIsnL90B8HQ=
</data>
<key>Modules/DCUniVideo.swiftmodule/x86_64-apple-ios-simulator.swiftmodule</key>
<data>
p+SyNnDNf1lc0DyiX5aiSin5puk=
</data>
<key>Modules/module.modulemap</key>
<data>
yeBfzolC+GxhiTCnFjKA55WTaGM=
</data>
</dict>
<key>files2</key>
<dict>
<key>Headers/DCUniVideo-Swift.h</key>
<dict>
<key>hash</key>
<data>
8RtESNpNJ/MLh4AISu16ekCnNgM=
</data>
<key>hash2</key>
<data>
6rkDl2fzm2saIt4Lj2MYeOP5Z1dDjaCYAEu7PhIdI/k=
</data>
</dict>
<key>Headers/DCUniVideo.h</key>
<dict>
<key>hash</key>
<data>
/i/vUc9+qNjSc6KyVWztp1EbpnY=
</data>
<key>hash2</key>
<data>
gpUVaFLATd7rJde6MfUxD/pSqFnWHtOjCsAPZQHOPBE=
</data>
</dict>
<key>Headers/UIControl+EnlargeTouchArea.h</key>
<dict>
<key>hash</key>
<data>
ULIZ85+W9TRHsliK055MlVf284w=
</data>
<key>hash2</key>
<data>
7vdHD7PjQ5Vl3dIdph2XQqASIAoHZCZQc8WzWb2ARzY=
</data>
</dict>
<key>Modules/DCUniVideo.swiftmodule/Project/arm64-apple-ios-simulator.swiftsourceinfo</key>
<dict>
<key>hash</key>
<data>
LMw61NwrRpA08JKfgcEYaj3bC4s=
</data>
<key>hash2</key>
<data>
rQ6ecTyNYorIWSPYIIIvMKXzPCj9nGj+LNKMEIJBP5U=
</data>
</dict>
<key>Modules/DCUniVideo.swiftmodule/Project/x86_64-apple-ios-simulator.swiftsourceinfo</key>
<dict>
<key>hash</key>
<data>
7RwLqhAfiKvxA+Cxv6/N962PpOg=
</data>
<key>hash2</key>
<data>
Un6dHCBddlRbwPe/xkfXUJUkqJfmlwC9uhfZwcpAHos=
</data>
</dict>
<key>Modules/DCUniVideo.swiftmodule/arm64-apple-ios-simulator.abi.json</key>
<dict>
<key>hash</key>
<data>
nk9o0CXiQ/GZWFtpqNFQSf56Aq4=
</data>
<key>hash2</key>
<data>
G6BCmgVzUh+8PT4Vb2Mo2M57OK54006L7d81dNPspfY=
</data>
</dict>
<key>Modules/DCUniVideo.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface</key>
<dict>
<key>hash</key>
<data>
TYzZQAPhXzOjxQ7cOKZu2E3/gOM=
</data>
<key>hash2</key>
<data>
fGUfQRyQkDydTP0YQ2ycZuJ+xLOTauxL6nBJJtVHeUo=
</data>
</dict>
<key>Modules/DCUniVideo.swiftmodule/arm64-apple-ios-simulator.swiftdoc</key>
<dict>
<key>hash</key>
<data>
zaMs+qbaViQJV9jdtXLqo29LabM=
</data>
<key>hash2</key>
<data>
ltXhZrQmuZPwZ/zatuXP0+KdjKP8anH8ihgjTcDuFzc=
</data>
</dict>
<key>Modules/DCUniVideo.swiftmodule/arm64-apple-ios-simulator.swiftinterface</key>
<dict>
<key>hash</key>
<data>
TYzZQAPhXzOjxQ7cOKZu2E3/gOM=
</data>
<key>hash2</key>
<data>
fGUfQRyQkDydTP0YQ2ycZuJ+xLOTauxL6nBJJtVHeUo=
</data>
</dict>
<key>Modules/DCUniVideo.swiftmodule/arm64-apple-ios-simulator.swiftmodule</key>
<dict>
<key>hash</key>
<data>
gR2m/jlpxNCVmIfuV+qVvd6FVoE=
</data>
<key>hash2</key>
<data>
kSBWEAVrVxWfOnEsU4ryWR+gx8eY6RmX8ppIpJlBx9A=
</data>
</dict>
<key>Modules/DCUniVideo.swiftmodule/x86_64-apple-ios-simulator.abi.json</key>
<dict>
<key>hash</key>
<data>
nk9o0CXiQ/GZWFtpqNFQSf56Aq4=
</data>
<key>hash2</key>
<data>
G6BCmgVzUh+8PT4Vb2Mo2M57OK54006L7d81dNPspfY=
</data>
</dict>
<key>Modules/DCUniVideo.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface</key>
<dict>
<key>hash</key>
<data>
P9A/XUTYbV9hqAFkvIsnL90B8HQ=
</data>
<key>hash2</key>
<data>
VzdCbPQNtj1hylfhs2PD3X4eBPdh0GAfIBhp+KSR+P4=
</data>
</dict>
<key>Modules/DCUniVideo.swiftmodule/x86_64-apple-ios-simulator.swiftdoc</key>
<dict>
<key>hash</key>
<data>
tMymyR7BzfUWQ9cTfV/3r+zajeY=
</data>
<key>hash2</key>
<data>
9dLnwDexyVteRT+z/YK1LMyqtXXzArso9N35QjFp6bU=
</data>
</dict>
<key>Modules/DCUniVideo.swiftmodule/x86_64-apple-ios-simulator.swiftinterface</key>
<dict>
<key>hash</key>
<data>
P9A/XUTYbV9hqAFkvIsnL90B8HQ=
</data>
<key>hash2</key>
<data>
VzdCbPQNtj1hylfhs2PD3X4eBPdh0GAfIBhp+KSR+P4=
</data>
</dict>
<key>Modules/DCUniVideo.swiftmodule/x86_64-apple-ios-simulator.swiftmodule</key>
<dict>
<key>hash</key>
<data>
p+SyNnDNf1lc0DyiX5aiSin5puk=
</data>
<key>hash2</key>
<data>
AYg5nbZM23N1eAD0JL/9x+MWHN0Lplo1fiDhPwHVPtc=
</data>
</dict>
<key>Modules/module.modulemap</key>
<dict>
<key>hash</key>
<data>
yeBfzolC+GxhiTCnFjKA55WTaGM=
</data>
<key>hash2</key>
<data>
bFL6jBOd6984FGT8AeuySyqfuCQKFERwJKNnfGSnTuI=
</data>
</dict>
</dict>
<key>rules</key>
<dict>
<key>^.*</key>
<true/>
<key>^.*\.lproj/</key>
<dict>
<key>optional</key>
<true/>
<key>weight</key>
<real>1000</real>
</dict>
<key>^.*\.lproj/locversion.plist$</key>
<dict>
<key>omit</key>
<true/>
<key>weight</key>
<real>1100</real>
</dict>
<key>^Base\.lproj/</key>
<dict>
<key>weight</key>
<real>1010</real>
</dict>
<key>^version.plist$</key>
<true/>
</dict>
<key>rules2</key>
<dict>
<key>.*\.dSYM($|/)</key>
<dict>
<key>weight</key>
<real>11</real>
</dict>
<key>^(.*/)?\.DS_Store$</key>
<dict>
<key>omit</key>
<true/>
<key>weight</key>
<real>2000</real>
</dict>
<key>^.*</key>
<true/>
<key>^.*\.lproj/</key>
<dict>
<key>optional</key>
<true/>
<key>weight</key>
<real>1000</real>
</dict>
<key>^.*\.lproj/locversion.plist$</key>
<dict>
<key>omit</key>
<true/>
<key>weight</key>
<real>1100</real>
</dict>
<key>^Base\.lproj/</key>
<dict>
<key>weight</key>
<real>1010</real>
</dict>
<key>^Info\.plist$</key>
<dict>
<key>omit</key>
<true/>
<key>weight</key>
<real>20</real>
</dict>
<key>^PkgInfo$</key>
<dict>
<key>omit</key>
<true/>
<key>weight</key>
<real>20</real>
</dict>
<key>^embedded\.provisionprofile$</key>
<dict>
<key>weight</key>
<real>20</real>
</dict>
<key>^version\.plist$</key>
<dict>
<key>weight</key>
<real>20</real>
</dict>
</dict>
</dict>
</plist>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>AvailableLibraries</key>
<array>
<dict>
<key>BinaryPath</key>
<string>IJKMediaFrameworkWithSSL.framework/IJKMediaFrameworkWithSSL</string>
<key>LibraryIdentifier</key>
<string>ios-arm64</string>
<key>LibraryPath</key>
<string>IJKMediaFrameworkWithSSL.framework</string>
<key>SupportedArchitectures</key>
<array>
<string>arm64</string>
</array>
<key>SupportedPlatform</key>
<string>ios</string>
</dict>
<dict>
<key>BinaryPath</key>
<string>IJKMediaFrameworkWithSSL.framework/IJKMediaFrameworkWithSSL</string>
<key>LibraryIdentifier</key>
<string>ios-x86_64-simulator</string>
<key>LibraryPath</key>
<string>IJKMediaFrameworkWithSSL.framework</string>
<key>SupportedArchitectures</key>
<array>
<string>x86_64</string>
</array>
<key>SupportedPlatform</key>
<string>ios</string>
<key>SupportedPlatformVariant</key>
<string>simulator</string>
</dict>
</array>
<key>CFBundlePackageType</key>
<string>XFWK</string>
<key>XCFrameworkFormatVersion</key>
<string>1.0</string>
</dict>
</plist>
/*
* IJKAVMoviePlayerController.h
*
* Copyright (c) 2014 Bilibili
* Copyright (c) 2014 Zhang Rui <bbcallen@gmail.com>
*
* This file is part of ijkPlayer.
*
* ijkPlayer is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* ijkPlayer is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with ijkPlayer; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
/*
File: AVPlayerDemoPlaybackViewController.h
Abstract: UIViewController managing a playback view, thumbnail view, and associated playback UI.
Version: 1.3
Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple
Inc. ("Apple") in consideration of your agreement to the following
terms, and your use, installation, modification or redistribution of
this Apple software constitutes acceptance of these terms. If you do
not agree with these terms, please do not use, install, modify or
redistribute this Apple software.
In consideration of your agreement to abide by the following terms, and
subject to these terms, Apple grants you a personal, non-exclusive
license, under Apple's copyrights in this original Apple software (the
"Apple Software"), to use, reproduce, modify and redistribute the Apple
Software, with or without modifications, in source and/or binary forms;
provided that if you redistribute the Apple Software in its entirety and
without modifications, you must retain this notice and the following
text and disclaimers in all such redistributions of the Apple Software.
Neither the name, trademarks, service marks or logos of Apple Inc. may
be used to endorse or promote products derived from the Apple Software
without specific prior written permission from Apple. Except as
expressly stated in this notice, no other rights or licenses, express or
implied, are granted by Apple herein, including but not limited to any
patent rights that may be infringed by your derivative works or by other
works in which the Apple Software may be incorporated.
The Apple Software is provided by Apple on an "AS IS" basis. APPLE
MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION
THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS
FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND
OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS.
IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL
OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION,
MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED
AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE),
STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
Copyright (C) 2014 Apple Inc. All Rights Reserved.
*/
#import "IJKMediaPlayback.h"
@interface IJKAVMoviePlayerController : NSObject <IJKMediaPlayback>
- (id)initWithContentURL:(NSURL *)aUrl;
- (id)initWithContentURLString:(NSString *)aUrl;
+ (id)getInstance:(NSString *)aUrl;
@end
/*
* Copyright (c) 2016 Bilibili
* Copyright (c) 2016 Zhang Rui <bbcallen@gmail.com>
*
* This file is part of ijkPlayer.
*
* ijkPlayer is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* ijkPlayer is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with ijkPlayer; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#import <Foundation/Foundation.h>
@interface IJKFFMonitor : NSObject
- (instancetype)init;
@property(nonatomic) NSDictionary *mediaMeta;
@property(nonatomic) NSDictionary *videoMeta;
@property(nonatomic) NSDictionary *audioMeta;
@property(nonatomic, readonly) int64_t duration; // milliseconds
@property(nonatomic, readonly) int64_t bitrate; // bit / sec
@property(nonatomic, readonly) float fps; // frame / sec
@property(nonatomic, readonly) int width; // width
@property(nonatomic, readonly) int height; // height
@property(nonatomic, readonly) NSString *vcodec; // video codec
@property(nonatomic, readonly) NSString *acodec; // audio codec
@property(nonatomic, readonly) int sampleRate;
@property(nonatomic, readonly) int64_t channelLayout;
@property(nonatomic) NSString *vdecoder;
@property(nonatomic) int tcpError;
@property(nonatomic) NSString *remoteIp;
@property(nonatomic) int httpError;
@property(nonatomic) NSString *httpUrl;
@property(nonatomic) NSString *httpHost;
@property(nonatomic) int httpCode;
@property(nonatomic) int64_t httpOpenTick;
@property(nonatomic) int64_t httpSeekTick;
@property(nonatomic) int httpOpenCount;
@property(nonatomic) int httpSeekCount;
@property(nonatomic) int64_t lastHttpOpenDuration;
@property(nonatomic) int64_t lastHttpSeekDuration;
@property(nonatomic) int64_t filesize;
@property(nonatomic) int64_t prepareStartTick;
@property(nonatomic) int64_t prepareDuration;
@property(nonatomic) int64_t firstVideoFrameLatency;
@property(nonatomic) int64_t lastPrerollStartTick;
@property(nonatomic) int64_t lastPrerollDuration;
@end
/*
* IJKFFMoviePlayerController.h
*
* Copyright (c) 2013 Bilibili
* Copyright (c) 2013 Zhang Rui <bbcallen@gmail.com>
*
* This file is part of ijkPlayer.
*
* ijkPlayer is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* ijkPlayer is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with ijkPlayer; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#import "IJKMediaPlayback.h"
#import "IJKFFMonitor.h"
#import "IJKFFOptions.h"
#import "IJKSDLGLViewProtocol.h"
// media meta
#define k_IJKM_KEY_FORMAT @"format"
#define k_IJKM_KEY_DURATION_US @"duration_us"
#define k_IJKM_KEY_START_US @"start_us"
#define k_IJKM_KEY_BITRATE @"bitrate"
// stream meta
#define k_IJKM_KEY_TYPE @"type"
#define k_IJKM_VAL_TYPE__VIDEO @"video"
#define k_IJKM_VAL_TYPE__AUDIO @"audio"
#define k_IJKM_VAL_TYPE__UNKNOWN @"unknown"
#define k_IJKM_KEY_CODEC_NAME @"codec_name"
#define k_IJKM_KEY_CODEC_PROFILE @"codec_profile"
#define k_IJKM_KEY_CODEC_LONG_NAME @"codec_long_name"
// stream: video
#define k_IJKM_KEY_WIDTH @"width"
#define k_IJKM_KEY_HEIGHT @"height"
#define k_IJKM_KEY_FPS_NUM @"fps_num"
#define k_IJKM_KEY_FPS_DEN @"fps_den"
#define k_IJKM_KEY_TBR_NUM @"tbr_num"
#define k_IJKM_KEY_TBR_DEN @"tbr_den"
#define k_IJKM_KEY_SAR_NUM @"sar_num"
#define k_IJKM_KEY_SAR_DEN @"sar_den"
// stream: audio
#define k_IJKM_KEY_SAMPLE_RATE @"sample_rate"
#define k_IJKM_KEY_CHANNEL_LAYOUT @"channel_layout"
#define kk_IJKM_KEY_STREAMS @"streams"
typedef enum IJKLogLevel {
k_IJK_LOG_UNKNOWN = 0,
k_IJK_LOG_DEFAULT = 1,
k_IJK_LOG_VERBOSE = 2,
k_IJK_LOG_DEBUG = 3,
k_IJK_LOG_INFO = 4,
k_IJK_LOG_WARN = 5,
k_IJK_LOG_ERROR = 6,
k_IJK_LOG_FATAL = 7,
k_IJK_LOG_SILENT = 8,
} IJKLogLevel;
@interface IJKFFMoviePlayerController : NSObject <IJKMediaPlayback>
- (id)initWithContentURL:(NSURL *)aUrl
withOptions:(IJKFFOptions *)options;
- (id)initWithContentURLString:(NSString *)aUrlString
withOptions:(IJKFFOptions *)options;
- (id)initWithMoreContent:(NSURL *)aUrl
withOptions:(IJKFFOptions *)options
withGLView:(UIView<IJKSDLGLViewProtocol> *)glView;
- (id)initWithMoreContentString:(NSString *)aUrlString
withOptions:(IJKFFOptions *)options
withGLView:(UIView<IJKSDLGLViewProtocol> *)glView;
- (void)prepareToPlay;
- (void)play;
- (void)pause;
- (void)stop;
- (BOOL)isPlaying;
- (int64_t)trafficStatistic;
- (float)dropFrameRate;
- (void)setPauseInBackground:(BOOL)pause;
- (BOOL)isVideoToolboxOpen;
- (void)setHudValue:(NSString *)value forKey:(NSString *)key;
+ (void)setLogReport:(BOOL)preferLogReport;
+ (void)setLogLevel:(IJKLogLevel)logLevel;
+ (BOOL)checkIfFFmpegVersionMatch:(BOOL)showAlert;
+ (BOOL)checkIfPlayerVersionMatch:(BOOL)showAlert
version:(NSString *)version;
@property(nonatomic, readonly) CGFloat fpsInMeta;
@property(nonatomic, readonly) CGFloat fpsAtOutput;
@property(nonatomic) BOOL shouldShowHudView;
- (void)setOptionValue:(NSString *)value
forKey:(NSString *)key
ofCategory:(IJKFFOptionCategory)category;
- (void)setOptionIntValue:(int64_t)value
forKey:(NSString *)key
ofCategory:(IJKFFOptionCategory)category;
- (void)setFormatOptionValue: (NSString *)value forKey:(NSString *)key;
- (void)setCodecOptionValue: (NSString *)value forKey:(NSString *)key;
- (void)setSwsOptionValue: (NSString *)value forKey:(NSString *)key;
- (void)setPlayerOptionValue: (NSString *)value forKey:(NSString *)key;
- (void)setFormatOptionIntValue: (int64_t)value forKey:(NSString *)key;
- (void)setCodecOptionIntValue: (int64_t)value forKey:(NSString *)key;
- (void)setSwsOptionIntValue: (int64_t)value forKey:(NSString *)key;
- (void)setPlayerOptionIntValue: (int64_t)value forKey:(NSString *)key;
@property (nonatomic, retain) id<IJKMediaUrlOpenDelegate> segmentOpenDelegate;
@property (nonatomic, retain) id<IJKMediaUrlOpenDelegate> tcpOpenDelegate;
@property (nonatomic, retain) id<IJKMediaUrlOpenDelegate> httpOpenDelegate;
@property (nonatomic, retain) id<IJKMediaUrlOpenDelegate> liveOpenDelegate;
@property (nonatomic, retain) id<IJKMediaNativeInvokeDelegate> nativeInvokeDelegate;
- (void)didShutdown;
#pragma mark KVO properties
@property (nonatomic, readonly) IJKFFMonitor *monitor;
@end
#define IJK_FF_IO_TYPE_READ (1)
void IJKFFIOStatDebugCallback(const char *url, int type, int bytes);
void IJKFFIOStatRegister(void (*cb)(const char *url, int type, int bytes));
void IJKFFIOStatCompleteDebugCallback(const char *url,
int64_t read_bytes, int64_t total_size,
int64_t elpased_time, int64_t total_duration);
void IJKFFIOStatCompleteRegister(void (*cb)(const char *url,
int64_t read_bytes, int64_t total_size,
int64_t elpased_time, int64_t total_duration));
/*
* IJKFFOptions.h
*
* Copyright (c) 2013-2015 Bilibili
* Copyright (c) 2013-2015 Zhang Rui <bbcallen@gmail.com>
*
* This file is part of ijkPlayer.
*
* ijkPlayer is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* ijkPlayer is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with ijkPlayer; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#import <Foundation/Foundation.h>
typedef enum IJKFFOptionCategory {
kIJKFFOptionCategoryFormat = 1,
kIJKFFOptionCategoryCodec = 2,
kIJKFFOptionCategorySws = 3,
kIJKFFOptionCategoryPlayer = 4,
kIJKFFOptionCategorySwr = 5,
} IJKFFOptionCategory;
// for codec option 'skip_loop_filter' and 'skip_frame'
typedef enum IJKAVDiscard {
/* We leave some space between them for extensions (drop some
* keyframes for intra-only or drop just some bidir frames). */
IJK_AVDISCARD_NONE =-16, ///< discard nothing
IJK_AVDISCARD_DEFAULT = 0, ///< discard useless packets like 0 size packets in avi
IJK_AVDISCARD_NONREF = 8, ///< discard all non reference
IJK_AVDISCARD_BIDIR = 16, ///< discard all bidirectional frames
IJK_AVDISCARD_NONKEY = 32, ///< discard all frames except keyframes
IJK_AVDISCARD_ALL = 48, ///< discard all
} IJKAVDiscard;
struct IjkMediaPlayer;
@interface IJKFFOptions : NSObject
+(IJKFFOptions *)optionsByDefault;
-(void)applyTo:(struct IjkMediaPlayer *)mediaPlayer;
- (void)setOptionValue:(NSString *)value
forKey:(NSString *)key
ofCategory:(IJKFFOptionCategory)category;
- (void)setOptionIntValue:(int64_t)value
forKey:(NSString *)key
ofCategory:(IJKFFOptionCategory)category;
-(void)setFormatOptionValue: (NSString *)value forKey:(NSString *)key;
-(void)setCodecOptionValue: (NSString *)value forKey:(NSString *)key;
-(void)setSwsOptionValue: (NSString *)value forKey:(NSString *)key;
-(void)setPlayerOptionValue: (NSString *)value forKey:(NSString *)key;
-(void)setFormatOptionIntValue: (int64_t)value forKey:(NSString *)key;
-(void)setCodecOptionIntValue: (int64_t)value forKey:(NSString *)key;
-(void)setSwsOptionIntValue: (int64_t)value forKey:(NSString *)key;
-(void)setPlayerOptionIntValue: (int64_t)value forKey:(NSString *)key;
@property(nonatomic) BOOL showHudView;
@end
/*
* IJKKVOController.h
*
* Copyright (c) 2014 Bilibili
* Copyright (c) 2014 Zhang Rui <bbcallen@gmail.com>
*
* This file is part of ijkPlayer.
*
* ijkPlayer is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* ijkPlayer is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with ijkPlayer; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#import <Foundation/Foundation.h>
@interface IJKKVOController : NSObject
- (id)initWithTarget:(NSObject *)target;
- (void)safelyAddObserver:(NSObject *)observer
forKeyPath:(NSString *)keyPath
options:(NSKeyValueObservingOptions)options
context:(void *)context;
- (void)safelyRemoveObserver:(NSObject *)observer
forKeyPath:(NSString *)keyPath;
- (void)safelyRemoveAllObservers;
@end
/*
* IJKMPMoviePlayerController.h
*
* Copyright (c) 2013 Bilibili
* Copyright (c) 2013 Zhang Rui <bbcallen@gmail.com>
*
* This file is part of ijkPlayer.
*
* ijkPlayer is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* ijkPlayer is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with ijkPlayer; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#import "IJKMediaPlayback.h"
#import <MediaPlayer/MediaPlayer.h>
@interface IJKMPMoviePlayerController : MPMoviePlayerController <IJKMediaPlayback>
- (id)initWithContentURL:(NSURL *)aUrl;
- (id)initWithContentURLString:(NSString *)aUrl;
@end
//
// IJKMediaFrameworkWithSSL.h
// IJKMediaFrameworkWithSSL
//
// Created by zhangxinzheng on 27/02/2017.
// Copyright © 2017 bilibili. All rights reserved.
//
#import <UIKit/UIKit.h>
//! Project version number for IJKMediaFrameworkWithSSL.
FOUNDATION_EXPORT double IJKMediaFrameworkWithSSLVersionNumber;
//! Project version string for IJKMediaFrameworkWithSSL.
FOUNDATION_EXPORT const unsigned char IJKMediaFrameworkWithSSLVersionString[];
// In this header, you should import all the public headers of your framework using statements like #import <IJKMediaFrameworkWithSSL/PublicHeader.h>
#import <IJKMediaFrameworkWithSSL/IJKMediaPlayback.h>
#import <IJKMediaFrameworkWithSSL/IJKMPMoviePlayerController.h>
#import <IJKMediaFrameworkWithSSL/IJKFFOptions.h>
#import <IJKMediaFrameworkWithSSL/IJKFFMoviePlayerController.h>
#import <IJKMediaFrameworkWithSSL/IJKAVMoviePlayerController.h>
#import <IJKMediaFrameworkWithSSL/IJKMediaModule.h>
#import <IJKMediaFrameworkWithSSL/IJKMediaPlayer.h>
#import <IJKMediaFrameworkWithSSL/IJKNotificationManager.h>
#import <IJKMediaFrameworkWithSSL/IJKKVOController.h>
// backward compatible for old names
#define IJKMediaPlaybackIsPreparedToPlayDidChangeNotification IJKMPMediaPlaybackIsPreparedToPlayDidChangeNotification
#define IJKMoviePlayerLoadStateDidChangeNotification IJKMPMoviePlayerLoadStateDidChangeNotification
#define IJKMoviePlayerPlaybackDidFinishNotification IJKMPMoviePlayerPlaybackDidFinishNotification
#define IJKMoviePlayerPlaybackDidFinishReasonUserInfoKey IJKMPMoviePlayerPlaybackDidFinishReasonUserInfoKey
#define IJKMoviePlayerPlaybackStateDidChangeNotification IJKMPMoviePlayerPlaybackStateDidChangeNotification
#define IJKMoviePlayerIsAirPlayVideoActiveDidChangeNotification IJKMPMoviePlayerIsAirPlayVideoActiveDidChangeNotification
#define IJKMoviePlayerVideoDecoderOpenNotification IJKMPMoviePlayerVideoDecoderOpenNotification
#define IJKMoviePlayerFirstVideoFrameRenderedNotification IJKMPMoviePlayerFirstVideoFrameRenderedNotification
#define IJKMoviePlayerFirstAudioFrameRenderedNotification IJKMPMoviePlayerFirstAudioFrameRenderedNotification
#define IJKMoviePlayerFirstAudioFrameDecodedNotification IJKMPMoviePlayerFirstAudioFrameDecodedNotification
#define IJKMoviePlayerFirstVideoFrameDecodedNotification IJKMPMoviePlayerFirstVideoFrameDecodedNotification
#define IJKMoviePlayerOpenInputNotification IJKMPMoviePlayerOpenInputNotification
#define IJKMoviePlayerFindStreamInfoNotification IJKMPMoviePlayerFindStreamInfoNotification
#define IJKMoviePlayerComponentOpenNotification IJKMPMoviePlayerComponentOpenNotification
#define IJKMPMoviePlayerAccurateSeekCompleteNotification IJKMPMoviePlayerAccurateSeekCompleteNotification
#define IJKMoviePlayerSeekAudioStartNotification IJKMPMoviePlayerSeekAudioStartNotification
#define IJKMoviePlayerSeekVideoStartNotification IJKMPMoviePlayerSeekVideoStartNotification
/*
* IJKMediaModule.h
*
* Copyright (c) 2013 Bilibili
* Copyright (c) 2013 Zhang Rui <bbcallen@gmail.com>
*
* This file is part of ijkPlayer.
*
* ijkPlayer is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* ijkPlayer is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with ijkPlayer; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#import <Foundation/Foundation.h>
@interface IJKMediaModule : NSObject
+ (IJKMediaModule *)sharedModule;
@property(atomic, getter=isAppIdleTimerDisabled) BOOL appIdleTimerDisabled;
@property(atomic, getter=isMediaModuleIdleTimerDisabled) BOOL mediaModuleIdleTimerDisabled;
@end
/*
* IJKMediaPlayback.h
*
* Copyright (c) 2013 Bilibili
* Copyright (c) 2013 Zhang Rui <bbcallen@gmail.com>
*
* This file is part of ijkPlayer.
*
* ijkPlayer is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* ijkPlayer is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with ijkPlayer; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
typedef NS_ENUM(NSInteger, IJKMPMovieScalingMode) {
IJKMPMovieScalingModeNone, // No scaling
IJKMPMovieScalingModeAspectFit, // Uniform scale until one dimension fits
IJKMPMovieScalingModeAspectFill, // Uniform scale until the movie fills the visible bounds. One dimension may have clipped contents
IJKMPMovieScalingModeFill // Non-uniform scale. Both render dimensions will exactly match the visible bounds
};
typedef NS_ENUM(NSInteger, IJKMPMoviePlaybackState) {
IJKMPMoviePlaybackStateStopped,
IJKMPMoviePlaybackStatePlaying,
IJKMPMoviePlaybackStatePaused,
IJKMPMoviePlaybackStateInterrupted,
IJKMPMoviePlaybackStateSeekingForward,
IJKMPMoviePlaybackStateSeekingBackward
};
typedef NS_OPTIONS(NSUInteger, IJKMPMovieLoadState) {
IJKMPMovieLoadStateUnknown = 0,
IJKMPMovieLoadStatePlayable = 1 << 0,
IJKMPMovieLoadStatePlaythroughOK = 1 << 1, // Playback will be automatically started in this state when shouldAutoplay is YES
IJKMPMovieLoadStateStalled = 1 << 2, // Playback will be automatically paused in this state, if started
};
typedef NS_ENUM(NSInteger, IJKMPMovieFinishReason) {
IJKMPMovieFinishReasonPlaybackEnded,
IJKMPMovieFinishReasonPlaybackError,
IJKMPMovieFinishReasonUserExited
};
// -----------------------------------------------------------------------------
// Thumbnails
typedef NS_ENUM(NSInteger, IJKMPMovieTimeOption) {
IJKMPMovieTimeOptionNearestKeyFrame,
IJKMPMovieTimeOptionExact
};
@protocol IJKMediaPlayback;
#pragma mark IJKMediaPlayback
@protocol IJKMediaPlayback <NSObject>
- (void)prepareToPlay;
- (void)play;
- (void)pause;
- (void)stop;
- (BOOL)isPlaying;
- (void)shutdown;
- (void)setPauseInBackground:(BOOL)pause;
@property(nonatomic, readonly) UIView *view;
@property(nonatomic) NSTimeInterval currentPlaybackTime;
@property(nonatomic, readonly) NSTimeInterval duration;
@property(nonatomic, readonly) NSTimeInterval playableDuration;
@property(nonatomic, readonly) NSInteger bufferingProgress;
@property(nonatomic, readonly) BOOL isPreparedToPlay;
@property(nonatomic, readonly) IJKMPMoviePlaybackState playbackState;
@property(nonatomic, readonly) IJKMPMovieLoadState loadState;
@property(nonatomic, readonly) int isSeekBuffering;
@property(nonatomic, readonly) int isAudioSync;
@property(nonatomic, readonly) int isVideoSync;
@property(nonatomic, readonly) int64_t numberOfBytesTransferred;
@property(nonatomic, readonly) CGSize naturalSize;
@property(nonatomic) IJKMPMovieScalingMode scalingMode;
@property(nonatomic) BOOL shouldAutoplay;
@property (nonatomic) BOOL allowsMediaAirPlay;
@property (nonatomic) BOOL isDanmakuMediaAirPlay;
@property (nonatomic, readonly) BOOL airPlayMediaActive;
@property (nonatomic) float playbackRate;
@property (nonatomic) float playbackVolume;
- (UIImage *)thumbnailImageAtCurrentTime;
#pragma mark Notifications
#ifdef __cplusplus
#define IJK_EXTERN extern "C" __attribute__((visibility ("default")))
#else
#define IJK_EXTERN extern __attribute__((visibility ("default")))
#endif
// -----------------------------------------------------------------------------
// MPMediaPlayback.h
// Posted when the prepared state changes of an object conforming to the MPMediaPlayback protocol changes.
// This supersedes MPMoviePlayerContentPreloadDidFinishNotification.
IJK_EXTERN NSString *const IJKMPMediaPlaybackIsPreparedToPlayDidChangeNotification;
// -----------------------------------------------------------------------------
// MPMoviePlayerController.h
// Movie Player Notifications
// Posted when the scaling mode changes.
IJK_EXTERN NSString* const IJKMPMoviePlayerScalingModeDidChangeNotification;
// Posted when movie playback ends or a user exits playback.
IJK_EXTERN NSString* const IJKMPMoviePlayerPlaybackDidFinishNotification;
IJK_EXTERN NSString* const IJKMPMoviePlayerPlaybackDidFinishReasonUserInfoKey; // NSNumber (IJKMPMovieFinishReason)
// Posted when the playback state changes, either programatically or by the user.
IJK_EXTERN NSString* const IJKMPMoviePlayerPlaybackStateDidChangeNotification;
// Posted when the network load state changes.
IJK_EXTERN NSString* const IJKMPMoviePlayerLoadStateDidChangeNotification;
// Posted when the movie player begins or ends playing video via AirPlay.
IJK_EXTERN NSString* const IJKMPMoviePlayerIsAirPlayVideoActiveDidChangeNotification;
// -----------------------------------------------------------------------------
// Movie Property Notifications
// Calling -prepareToPlay on the movie player will begin determining movie properties asynchronously.
// These notifications are posted when the associated movie property becomes available.
IJK_EXTERN NSString* const IJKMPMovieNaturalSizeAvailableNotification;
// -----------------------------------------------------------------------------
// Extend Notifications
IJK_EXTERN NSString *const IJKMPMoviePlayerVideoDecoderOpenNotification;
IJK_EXTERN NSString *const IJKMPMoviePlayerFirstVideoFrameRenderedNotification;
IJK_EXTERN NSString *const IJKMPMoviePlayerFirstAudioFrameRenderedNotification;
IJK_EXTERN NSString *const IJKMPMoviePlayerFirstAudioFrameDecodedNotification;
IJK_EXTERN NSString *const IJKMPMoviePlayerFirstVideoFrameDecodedNotification;
IJK_EXTERN NSString *const IJKMPMoviePlayerOpenInputNotification;
IJK_EXTERN NSString *const IJKMPMoviePlayerFindStreamInfoNotification;
IJK_EXTERN NSString *const IJKMPMoviePlayerComponentOpenNotification;
IJK_EXTERN NSString *const IJKMPMoviePlayerDidSeekCompleteNotification;
IJK_EXTERN NSString *const IJKMPMoviePlayerDidSeekCompleteTargetKey;
IJK_EXTERN NSString *const IJKMPMoviePlayerDidSeekCompleteErrorKey;
IJK_EXTERN NSString *const IJKMPMoviePlayerDidAccurateSeekCompleteCurPos;
IJK_EXTERN NSString *const IJKMPMoviePlayerAccurateSeekCompleteNotification;
IJK_EXTERN NSString *const IJKMPMoviePlayerSeekAudioStartNotification;
IJK_EXTERN NSString *const IJKMPMoviePlayerSeekVideoStartNotification;
@end
#pragma mark IJKMediaUrlOpenDelegate
// Must equal to the defination in ijkavformat/ijkavformat.h
typedef NS_ENUM(NSInteger, IJKMediaEvent) {
// Notify Events
IJKMediaEvent_WillHttpOpen = 1, // attr: url
IJKMediaEvent_DidHttpOpen = 2, // attr: url, error, http_code
IJKMediaEvent_WillHttpSeek = 3, // attr: url, offset
IJKMediaEvent_DidHttpSeek = 4, // attr: url, offset, error, http_code
// Control Message
IJKMediaCtrl_WillTcpOpen = 0x20001, // IJKMediaUrlOpenData: no args
IJKMediaCtrl_DidTcpOpen = 0x20002, // IJKMediaUrlOpenData: error, family, ip, port, fd
IJKMediaCtrl_WillHttpOpen = 0x20003, // IJKMediaUrlOpenData: url, segmentIndex, retryCounter
IJKMediaCtrl_WillLiveOpen = 0x20005, // IJKMediaUrlOpenData: url, retryCounter
IJKMediaCtrl_WillConcatSegmentOpen = 0x20007, // IJKMediaUrlOpenData: url, segmentIndex, retryCounter
};
#define IJKMediaEventAttrKey_url @"url"
#define IJKMediaEventAttrKey_host @"host"
#define IJKMediaEventAttrKey_error @"error"
#define IJKMediaEventAttrKey_time_of_event @"time_of_event"
#define IJKMediaEventAttrKey_http_code @"http_code"
#define IJKMediaEventAttrKey_offset @"offset"
#define IJKMediaEventAttrKey_file_size @"file_size"
// event of IJKMediaUrlOpenEvent_xxx
@interface IJKMediaUrlOpenData: NSObject
- (id)initWithUrl:(NSString *)url
event:(IJKMediaEvent)event
segmentIndex:(int)segmentIndex
retryCounter:(int)retryCounter;
@property(nonatomic, readonly) IJKMediaEvent event;
@property(nonatomic, readonly) int segmentIndex;
@property(nonatomic, readonly) int retryCounter;
@property(nonatomic, retain) NSString *url;
@property(nonatomic, assign) int fd;
@property(nonatomic, strong) NSString *msg;
@property(nonatomic) int error; // set a negative value to indicate an error has occured.
@property(nonatomic, getter=isHandled) BOOL handled; // auto set to YES if url changed
@property(nonatomic, getter=isUrlChanged) BOOL urlChanged; // auto set to YES by url changed
@end
@protocol IJKMediaUrlOpenDelegate <NSObject>
- (void)willOpenUrl:(IJKMediaUrlOpenData*) urlOpenData;
@end
@protocol IJKMediaNativeInvokeDelegate <NSObject>
- (int)invoke:(IJKMediaEvent)event attributes:(NSDictionary *)attributes;
@end
/*
* IJKMediaPlayer.h
*
* Copyright (c) 2013 Bilibili
* Copyright (c) 2013 Zhang Rui <bbcallen@gmail.com>
*
* This file is part of ijkPlayer.
*
* ijkPlayer is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* ijkPlayer is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with ijkPlayer; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#import "IJKMediaPlayback.h"
#import "IJKMPMoviePlayerController.h"
#import "IJKFFOptions.h"
#import "IJKFFMoviePlayerController.h"
#import "IJKAVMoviePlayerController.h"
#import "IJKMediaModule.h"
/*
* IJKNotificationManager.h
*
* Copyright (c) 2016 Bilibili
* Copyright (c) 2016 Zhang Rui <bbcallen@gmail.com>
*
* This file is part of ijkPlayer.
*
* ijkPlayer is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* ijkPlayer is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with ijkPlayer; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#import <Foundation/Foundation.h>
@interface IJKNotificationManager : NSObject
- (nullable instancetype)init;
- (void)addObserver:(nonnull id)observer
selector:(nonnull SEL)aSelector
name:(nullable NSString *)aName
object:(nullable id)anObject;
- (void)removeAllObservers:(nonnull id)observer;
@end
/*
* IJKSDLGLViewProtocol.h
*
* Copyright (c) 2017 Bilibili
* Copyright (c) 2017 raymond <raymondzheng1412@gmail.com>
*
* This file is part of ijkPlayer.
*
* ijkPlayer is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* ijkPlayer is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with ijkPlayer; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef IJKSDLGLViewProtocol_h
#define IJKSDLGLViewProtocol_h
#import <UIKit/UIKit.h>
typedef struct IJKOverlay IJKOverlay;
struct IJKOverlay {
int w;
int h;
UInt32 format;
int planes;
UInt16 *pitches;
UInt8 **pixels;
int sar_num;
int sar_den;
CVPixelBufferRef pixel_buffer;
};
@protocol IJKSDLGLViewProtocol <NSObject>
- (UIImage*) snapshot;
@property(nonatomic, readonly) CGFloat fps;
@property(nonatomic) CGFloat scaleFactor;
@property(nonatomic) BOOL isThirdGLView;
- (void) display_pixels: (IJKOverlay *) overlay;
@end
#endif /* IJKSDLGLViewProtocol_h */
framework module IJKMediaFrameworkWithSSL {
umbrella header "IJKMediaFrameworkWithSSL.h"
export *
module * { export * }
}
此差异已折叠。
此差异已折叠。
此差异已折叠。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册