X-Git-Url: http://47.100.26.94:8080/?a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjni%2FFfmpegHelper.h;fp=app%2Fsrc%2Fmain%2Fjni%2FFfmpegHelper.h;h=aba871b11c13c517b45245208cb610fbfff8cf90;hb=7a99b2b0d2cf8048e1d9dd7fae5ccf984a865b1e;hp=0000000000000000000000000000000000000000;hpb=effab912d57394ec776ffc03d6c969866c70cdf9;p=rtmpclient.git diff --git a/app/src/main/jni/FfmpegHelper.h b/app/src/main/jni/FfmpegHelper.h new file mode 100644 index 0000000..aba871b --- /dev/null +++ b/app/src/main/jni/FfmpegHelper.h @@ -0,0 +1,50 @@ +#ifndef __FFMPEG_HELPER_H__ +#define __FFMPEG_HELPER_H__ + +#include +#include + +extern "C" { + #include "libavformat/avformat.h" + #include "libavcodec/avcodec.h" + #include "libswscale/swscale.h" + #include "libavutil/imgutils.h" + #include "libavutil/time.h" + #include "libavdevice/avdevice.h" +} + +class FfmpegHelper { +public: + static jint nativeOnLoad(JavaVM * jvm, void* reserved); + static jint nativeInitialEncoder(JNIEnv *env, jclass cls, jint width, jint height, jstring url); + static jint nativeProcessFrame(JNIEnv *env, jclass cls, jbyteArray data); + static jint nativeClose(); + +private: + static void av_log_cb (void *ptr, int level, const char* fmt, va_list vl); + void javaPrint(const char* str); + static void init(); + int processFrame(uint8_t *data); + int initEncoder(int width, int height, const char* url); + int close(); + +private: + FfmpegHelper(JavaVM* vm, jclass cls); + +private: + static FfmpegHelper* singleton; + JavaVM *jvm; + jclass ai_suanzi_rtmpclient_FfmpegHelper; + static bool isInit; + + AVFormatContext* formatCtx; + AVCodecContext* codecCtx; + AVCodec* codec; + AVStream* vStream; + int pWidth; + int pHeight; + unsigned int frameCnt; + int64_t startTime; +}; + +#endif /* __FFMPEG_HELPER_H__ */