ibiliplayer是什么_BiliBili

本文详细介绍了IjkMediaPlayer的JNI Native方法,包括设置数据源、播放控制、音视频设置等功能,揭示了其在Android应用中的使用原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

static JNINativeMethod g_methods[] = {

{

"_setDataSource",

"(Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;)V",

(void *) IjkMediaPlayer_setDataSourceAndHeaders

},

{ "_setDataSourceFd",       "(I)V",     (void *) IjkMediaPlayer_setDataSourceFd },

{ "_setDataSource",         "(Ltv/danmaku/ijk/media/player/misc/IMediaDataSource;)V", (void *)IjkMediaPlayer_setDataSourceCallback },

{ "_setVideoSurface",       "(Landroid/view/Surface;)V", (void *) IjkMediaPlayer_setVideoSurface },

{ "_prepareAsync",          "()V",      (void *) IjkMediaPlayer_prepareAsync },

{ "_start",                 "()V",      (void *) IjkMediaPlayer_start },

{ "_stop",                  "()V",      (void *) IjkMediaPlayer_stop },

{ "seekTo",                 "(J)V",     (void *) IjkMediaPlayer_seekTo },

{ "_pause",                 "()V",      (void *) IjkMediaPlayer_pause },

{ "isPlaying",              "()Z",      (void *) IjkMediaPlayer_isPlaying },

{ "getCurrentPosition",     "()J",      (void *) IjkMediaPlayer_getCurrentPosition },

{ "getDuration",            "()J",      (void *) IjkMediaPlayer_getDuration },

{ "_release",               "()V",      (void *) IjkMediaPlayer_release },

{ "_reset",                 "()V",      (void *) IjkMediaPlayer_reset },

{ "setVolume",              "(FF)V",    (void *) IjkMediaPlayer_setVolume },

{ "getAudioSessionId",      "()I",      (void *) IjkMediaPlayer_getAudioSessionId },

{ "native_init",            "()V",      (void *) IjkMediaPlayer_native_init },

{ "native_setup",           "(Ljava/lang/Object;)V", (void *) IjkMediaPlayer_native_setup },

{ "native_finalize",        "()V",      (void *) IjkMediaPlayer_native_finalize },

{ "_setOption",             "(ILjava/lang/String;Ljava/lang/String;)V", (void *) IjkMediaPlayer_setOption },

{ "_setOption",             "(ILjava/lang/String;J)V",                  (void *) IjkMediaPlayer_setOptionLong },

{ "_getColorFormatName",    "(I)Ljava/lang/String;",    (void *) IjkMediaPlayer_getColorFormatName },

{ "_getVideoCodecInfo",     "()Ljava/lang/String;",     (void *) IjkMediaPlayer_getVideoCodecInfo },

{ "_getAudioCodecInfo",     "()Ljava/lang/String;",     (void *) IjkMediaPlayer_getAudioCodecInfo },

{ "_getMediaMeta",          "()Landroid/os/Bundle;",    (void *) IjkMediaPlayer_getMediaMeta },

{ "_setLoopCount",          "(I)V",                     (void *) IjkMediaPlayer_setLoopCount },

{ "_getLoopCount",          "()I",                      (void *) IjkMediaPlayer_getLoopCount },

{ "_getPropertyFloat",      "(IF)F",                    (void *) ijkMediaPlayer_getPropertyFloat },

{ "_setPropertyFloat",      "(IF)V",                    (void *) ijkMediaPlayer_setPropertyFloat },

{ "_getPropertyLong",       "(IJ)J",                    (void *) ijkMediaPlayer_getPropertyLong },

{ "_setPropertyLong",       "(IJ)V",                    (void *) ijkMediaPlayer_setPropertyLong },

{ "_setStreamSelected",     "(IZ)V",                    (void *) ijkMediaPlayer_setStreamSelected },

{ "native_profileBegin",    "(Ljava/lang/String;)V",    (void *) IjkMediaPlayer_native_profileBegin },

{ "native_profileEnd",      "()V",                      (void *) IjkMediaPlayer_native_profileEnd },

{ "native_setLogLevel",     "(I)V",                     (void *) IjkMediaPlayer_native_setLogLevel },

};

JNIEXPORT jint JNI_OnLoad(JavaVM *vm, void *reserved)

{

JNIEnv* env = NULL;

g_jvm = vm;

if ((*vm)->GetEnv(vm, (void**) &env, JNI_VERSION_1_4) != JNI_OK) {

return -1;

}

assert(env != NULL);

pthread_mutex_init(&g_clazz.mutex, NULL );

// FindClass returns LocalReference

IJK_FIND_JAVA_CLASS(env, g_clazz.clazz, JNI_CLASS_IJKPLAYER);

(*env)->RegisterNatives(env, g_clazz.clazz, g_methods, NELEM(g_methods) );

ijkmp_global_init();

ijkmp_global_set_inject_callback(inject_callback);

FFmpegApi_global_init(env);

return JNI_VERSION_1_4;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值