VideoPlayer Class

Description

VideoPlayer is the class for video playback.

EasyAR supports normal videos, transparent videos and streaming videos. The video content will be rendered into a texture passed into the player through setRenderTexture.

This class only supports OpenGLES 3.0 texture.

Due to the dependency to OpenGLES, every method in this class (including the destructor) has to be called in a single thread containing an OpenGLES context.

Current version requires width and height being mutiples of 16.

Supported video file formats

Windows: Media Foundation-compatible formats, more can be supported via extra codecs. Please refer to Supported Media Formats in Media Foundation . DirectShow is not supported.

Mac: Not supported.

Android: System supported formats. Please refer to Supported media formats .

iOS: System supported formats. There is no reference in effect currently.

Constructor

C

void easyar_VideoPlayer__ctor(easyar_VideoPlayer * * Return)

C++

VideoPlayer()

Java

public VideoPlayer()

Kotlin

constructor()

Objective-C

+ (easyar_VideoPlayer *) create

Swift

public convenience init()

C#

public VideoPlayer()

isAvailable

Checks if the component is available. It returns true only on Windows, Android or iOS. It’s not available on Mac.

C

bool easyar_VideoPlayer_isAvailable(void)

C++

static bool isAvailable()

Java

public static boolean isAvailable()

Kotlin

companion object fun isAvailable(): Boolean

Objective-C

+ (bool)isAvailable

Swift

public static func isAvailable() -> Bool

C#

public static bool isAvailable()

setVideoType

Sets the video type. The type will default to normal video if not set manually. It should be called before open.

C

void easyar_VideoPlayer_setVideoType(easyar_VideoPlayer * This, easyar_VideoType videoType)

C++

void setVideoType(VideoType videoType)

Java

public void setVideoType(int videoType)

Kotlin

fun setVideoType(videoType: Int): Unit

Objective-C

- (void)setVideoType:(easyar_VideoType)videoType

Swift

public func setVideoType(_ videoType: VideoType) -> Void

C#

public virtual void setVideoType(VideoType videoType)

setRenderTexture

Passes the texture to display video into player. It should be set before open.

C

void easyar_VideoPlayer_setRenderTexture(easyar_VideoPlayer * This, easyar_TextureId * texture)

C++

void setRenderTexture(std::shared_ptr<TextureId> texture)

Java

public void setRenderTexture(@Nonnull TextureId texture)

Kotlin

fun setRenderTexture(texture: TextureId): Unit

Objective-C

- (void)setRenderTexture:(easyar_TextureId *)texture

Swift

public func setRenderTexture(_ texture: TextureId) -> Void

C#

public virtual void setRenderTexture(TextureId texture)

open

Opens a video from path.

path can be a local video file (path/to/video.mp4) or url (http://www…/…/video.mp4). storageType indicates the type of path. See StorageType for more description.

This method is an asynchronous method. Open may take some time to finish. If you want to know the open result or the play status while playing, you have to handle callback. The callback will be called from a different thread. You can check if the open finished successfully and start play after a successful open.

C

void easyar_VideoPlayer_open(easyar_VideoPlayer * This, easyar_String * path, easyar_StorageType storageType, easyar_CallbackScheduler * callbackScheduler, easyar_OptionalOfFunctorOfVoidFromVideoStatus callback)

C++

void open(std::string path, StorageType storageType, std::shared_ptr<CallbackScheduler> callbackScheduler, std::optional<std::function<void(VideoStatus)>> callback)

Java

public void open(java.lang.@Nonnull String path, int storageType, @Nonnull CallbackScheduler callbackScheduler, @Nullable FunctorOfVoidFromVideoStatus callback)

Kotlin

fun open(path: String, storageType: Int, callbackScheduler: CallbackScheduler, callback: FunctorOfVoidFromVideoStatus?): Unit

Objective-C

- (void)open:(NSString *)path storageType:(easyar_StorageType)storageType callbackScheduler:(easyar_CallbackScheduler *)callbackScheduler callback:(void (^)(easyar_VideoStatus status))callback

Swift

public func `open`(_ path: String, _ storageType: StorageType, _ callbackScheduler: CallbackScheduler, _ callback: ((VideoStatus) -> Void)?) -> Void

C#

public virtual void open(string path, StorageType storageType, CallbackScheduler callbackScheduler, Optional<Action<VideoStatus>> callback)

close

Closes the video.

C

void easyar_VideoPlayer_close(easyar_VideoPlayer * This)

C++

void close()

Java

public void close()

Kotlin

fun close(): Unit

Objective-C

- (void)close

Swift

public func close() -> Void

C#

public virtual void close()

play

Starts or continues to play video.

C

bool easyar_VideoPlayer_play(easyar_VideoPlayer * This)

C++

bool play()

Java

public boolean play()

Kotlin

fun play(): Boolean

Objective-C

- (bool)play

Swift

public func play() -> Bool

C#

public virtual bool play()

stop

Stops the video playback.

C

void easyar_VideoPlayer_stop(easyar_VideoPlayer * This)

C++

void stop()

Java

public void stop()

Kotlin

fun stop(): Unit

Objective-C

- (void)stop

Swift

public func stop() -> Void

C#

public virtual void stop()

pause

Pauses the video playback.

C

void easyar_VideoPlayer_pause(easyar_VideoPlayer * This)

C++

void pause()

Java

public void pause()

Kotlin

fun pause(): Unit

Objective-C

- (void)pause

Swift

public func pause() -> Void

C#

public virtual void pause()

isRenderTextureAvailable

Checks whether video texture is ready for render. Use this to check if texture passed into the player has been touched.

C

bool easyar_VideoPlayer_isRenderTextureAvailable(easyar_VideoPlayer * This)

C++

bool isRenderTextureAvailable()

Java

public boolean isRenderTextureAvailable()

Kotlin

fun isRenderTextureAvailable(): Boolean

Objective-C

- (bool)isRenderTextureAvailable

Swift

public func isRenderTextureAvailable() -> Bool

C#

public virtual bool isRenderTextureAvailable()

updateFrame

Updates texture data. This should be called in the renderer thread when isRenderTextureAvailable returns true.

C

void easyar_VideoPlayer_updateFrame(easyar_VideoPlayer * This)

C++

void updateFrame()

Java

public void updateFrame()

Kotlin

fun updateFrame(): Unit

Objective-C

- (void)updateFrame

Swift

public func updateFrame() -> Void

C#

public virtual void updateFrame()

duration

Returns the video duration. Use after a successful open.

C

int easyar_VideoPlayer_duration(easyar_VideoPlayer * This)

C++

int duration()

Java

public int duration()

Kotlin

fun duration(): Int

Objective-C

- (int)duration

Swift

public func duration() -> Int32

C#

public virtual int duration()

currentPosition

Returns the current position of video. Use after a successful open.

C

int easyar_VideoPlayer_currentPosition(easyar_VideoPlayer * This)

C++

int currentPosition()

Java

public int currentPosition()

Kotlin

fun currentPosition(): Int

Objective-C

- (int)currentPosition

Swift

public func currentPosition() -> Int32

C#

public virtual int currentPosition()

seek

Seeks to play to position . Use after a successful open.

C

bool easyar_VideoPlayer_seek(easyar_VideoPlayer * This, int position)

C++

bool seek(int position)

Java

public boolean seek(int position)

Kotlin

fun seek(position: Int): Boolean

Objective-C

- (bool)seek:(int)position

Swift

public func seek(_ position: Int32) -> Bool

C#

public virtual bool seek(int position)

size

Returns the video size. Use after a successful open.

C

easyar_Vec2I easyar_VideoPlayer_size(easyar_VideoPlayer * This)

C++

Vec2I size()

Java

public @Nonnull Vec2I size()

Kotlin

fun size(): Vec2I

Objective-C

- (easyar_Vec2I *)size

Swift

public func size() -> Vec2I

C#

public virtual Vec2I size()

volume

Returns current volume. Use after a successful open.

C

float easyar_VideoPlayer_volume(easyar_VideoPlayer * This)

C++

float volume()

Java

public float volume()

Kotlin

fun volume(): Float

Objective-C

- (float)volume

Swift

public func volume() -> Float

C#

public virtual float volume()

setVolume

Sets volume of the video. Use after a successful open.

C

bool easyar_VideoPlayer_setVolume(easyar_VideoPlayer * This, float volume)

C++

bool setVolume(float volume)

Java

public boolean setVolume(float volume)

Kotlin

fun setVolume(volume: Float): Boolean

Objective-C

- (bool)setVolume:(float)volume

Swift

public func setVolume(_ volume: Float) -> Bool

C#

public virtual bool setVolume(float volume)