# FFmpegForAndroid **Repository Path**: RandB/FFmpegForAndroid ## Basic Information - **Project Name**: FFmpegForAndroid - **Description**: ffmpeg 的熟悉 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-12-23 - **Last Updated**: 2021-03-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## FFMPEG Android 练习项目 >此项目目的在于练习FFMEG,借鉴 [字节流动/博客](https://blog.csdn.net/Kennethdroid/article/details/107103315) 跟着博主的思路和流程来慢慢熟悉ffmpeg在音视频处理的流程和相应的API,在此表示感谢! 1.本项目 Kotlin 和 C++ 实现对FFmpeg 的调用 >记录问题 注意事项 c++ 调用kotlin 的函数, 函数签名与java 中的函数签名不一致,导致函数找不到问题。 进入 app\build\tmp\kotlin-classess\debug\包名 运行javap -s xxx 命令查看类中的所有签名 举例: ``` Compiled from "NatureMediaPlayer.kt" public final class com.nature.ffmpegforandroid.NatureMediaPlayer { public static final int VIDEO_GL_RENDER; descriptor: I public static final int AUDIO_GL_RENDER; descriptor: I public static final int VR_3D_GL_RENDER; descriptor: I public static final int MSG_DECODER_INIT_ERROR; descriptor: I public static final int MSG_DECODER_READY; descriptor: I public static final int MSG_DECODER_DONE; descriptor: I public static final int MSG_REQUEST_RENDER; descriptor: I public static final int MSG_DECODING_TIME; descriptor: I public static final int MEDIA_PARAM_VIDEO_WIDTH; descriptor: I public static final int MEDIA_PARAM_VIDEO_HEIGHT; descriptor: I public static final int MEDIA_PARAM_VIDEO_DURATION; descriptor: I public static final int VIDEO_RENDER_OPENGL; descriptor: I public static final int VIDEO_RENDER_ANWINDOW; descriptor: I public static final int VIDEO_RENDER_3D_VR; descriptor: I public static final com.nature.ffmpegforandroid.NatureMediaPlayer$Companion Companion; descriptor: Lcom/nature/ffmpegforandroid/NatureMediaPlayer$Companion; public final com.nature.ffmpegforandroid.NatureMediaPlayer$EventCallback getMEventCallback(); descriptor: ()Lcom/nature/ffmpegforandroid/NatureMediaPlayer$EventCallback; public final void setMEventCallback(com.nature.ffmpegforandroid.NatureMediaPlayer$EventCallback); descriptor: (Lcom/nature/ffmpegforandroid/NatureMediaPlayer$EventCallback;)V public final void natureMediaPlayerInit(java.lang.String, int, android.view.Surface); descriptor: (Ljava/lang/String;ILandroid/view/Surface;)V public final void play(); descriptor: ()V public final void pause(); descriptor: ()V public final void seekToPosition(float); descriptor: (F)V public final void stop(); descriptor: ()V public final void unInit(); descriptor: ()V public final long getMediaParams(int); descriptor: (I)J public final kotlin.Unit playerEventCallback(int, float); descriptor: (IF)Lkotlin/Unit; public final native long native_get_media_param(long, int); descriptor: (JI)J public final native void native_un_init(long); descriptor: (J)V public final native void native_stop(long); descriptor: (J)V public final native void native_seek2_position(long, float); descriptor: (JF)V public final native void native_pause(long); descriptor: (J)V public final native long native_init(java.lang.String, int, android.view.Surface); descriptor: (Ljava/lang/String;ILandroid/view/Surface;)J public final native void native_play(long); descriptor: (J)V public final native void native_onsurface_created(int); descriptor: (I)V public final native void native_ondraw_frame(int); descriptor: (I)V public final native void native_onsurface_onchanged(int, int, int); descriptor: (III)V public com.nature.ffmpegforandroid.NatureMediaPlayer(); descriptor: ()V static {}; descriptor: ()V } ```