From c2a6b7ea3ce20037aaaccd132f8cb0a8d667dd2a Mon Sep 17 00:00:00 2001 From: houxiao <houxiao@454eff88-639b-444f-9e54-f578c98de674> Date: 星期四, 03 八月 2017 09:48:01 +0800 Subject: [PATCH] split client server --- VisitFace/RtspNativeCodec/app/src/main/cpp/CameraWrapperServer.cpp | 95 +++++++++++++++++-------------- VisitFace/RtspNativeCodec/app/build.gradle | 2 VisitFace/RtspNativeCodec/app/src/main/assets/ac-83-f3-9e-00-7a-20170802.lic | 56 ++++++++++++++++++ VisitFace/RtspNativeCodec/app/src/main/cpp/CMakeLists.txt | 8 ++ 4 files changed, 116 insertions(+), 45 deletions(-) diff --git a/VisitFace/RtspNativeCodec/app/build.gradle b/VisitFace/RtspNativeCodec/app/build.gradle index 051d8cd..887c796 100644 --- a/VisitFace/RtspNativeCodec/app/build.gradle +++ b/VisitFace/RtspNativeCodec/app/build.gradle @@ -9,7 +9,7 @@ targetSdkVersion 23 ndk { //abiFilters 'armeabi-v7a', 'x86' , 'x86_64', 'armeabi' , 'arm64-v8a' - abiFilters 'armeabi-v7a' + abiFilters 'arm64-v8a' } externalNativeBuild { cmake { diff --git a/VisitFace/RtspNativeCodec/app/src/main/assets/ac-83-f3-9e-00-7a-20170802.lic b/VisitFace/RtspNativeCodec/app/src/main/assets/ac-83-f3-9e-00-7a-20170802.lic new file mode 100644 index 0000000..925ec8f --- /dev/null +++ b/VisitFace/RtspNativeCodec/app/src/main/assets/ac-83-f3-9e-00-7a-20170802.lic @@ -0,0 +1,56 @@ +############################################################ +# SenseTime License +# License Product: FaceSdk +# Expiration: 20170731~20171001 +# License SN: e70fbbb8-3108-4e9d-9eea-2ae23febcec4 +############################################################ +sGfdd5sxA8NCweDGA+vU2qzOgOjTn64wtsOftvbVw+MzmQXlL9gGE+JsM0nU +lOHN/Ai/mjyyPqGW4W5FxJgLnqgzp2g09JkRdjXGle8IEY8ag4wXH8LUT+XY +OXBBvilrGRazpr4ni1SVkpgxTHoX3GdBY09aLCaJ9uCj1p7uErIgjhC2AQAA +AAEAAAABJioS4yQz2pTIieigSTrt4ANVz5LRRa52XLWQvB2azvNdASaqkN2B +qMLx/Hy1Bq6TLqWxL0paF9Xj5t/xptpwmax0BxY+Dn4rsdJj4PnChey1B2Hx +OLlVDQUj+oZ3lgpzi1wdFp8RLKEDJVa5WRuiV8Po3o+JrDz5DvX+FJIKyrgF +5piZ69rc/zi0ohoz3VqCCr1OEUv4XSpDkK/g+1NkBHvco/EZe8wLoh0R7nQR +7yHAzGQRZMEBTaduWIATW1PeBQJxUjKGCv57aCB5jeGk0wg/60/4702f2Dth +RpZOeMvfbYedzag4SKaHN5rQ9jE+L0dCqREJvkfUVMYJ8wyvAQABAAAAAAAD +AAAAAAAAAAAAAAAdFrdcj38Pba/zw3OZ/zBgEZR1PVWeUBie2oiKNyH5oui3 +TgKfJH5wsLTGRPVm9S7pvOYfkLzS36uvuwvzZDyuWR2Z4LhnnZuPmaVqjKCs +8vqKNKoYMjqRuKlLc/y+lAk4U/2HGWDkWruVyV2pwqQhUEreQjDI3kFfwPtR +Ku7yaU4WpTKlQnuqI0Obs6/RqzM+XXs3TfxMOQAiBu+kWzaZTC19BtXMPFrN +fAjbMnQde9bo7miN0Suho+Y+NJZgyHmTyQ== +------------------------------------------------------------ +sGfdd7PDtMmWgChyb3iwc4yZ+5BCYGx2EXGQ6F1UdK81ZgekOHb2G3koylH2 +mvqFCYy5VZG7ptB7PYXR50MlM1Lj7gZvwNmZ+HwSU+RHJ2pDqtCXynT+siWj +Vnr9ckFcxSDJhFrJgdDJtLgVO69prG1n2mXRV1eEmXQisiN8uir957lSAQAA +AAEAAABSY7D2PA4tStCS4Vy8knSq2TkH79DUnEPOhCfEnjFWlD6JHrQ3ZqPH +Kk9ZRH3lZfrokpOuf+H4JFmN9ieRNKrBoHmd0dUb/so/O0l3uqQdgmcWy2Zu +Ev5rlq9J1n+2k6eH30ZvuDiHvEDlXslriTXu2zr3UTapsmQ2C8KXEAMgEJpP +n/ADn3aGNOC5WIef/02niO4Ogq1A5ExT8jYryrt3Qbz967OiTbzIu4QF8i5O +VL6Z52jh8yQUNfCEj/EFNxaeOkzVvdzI/UyKoQz0A/HiaVPaeFPqfGT0W9Fm +doJCNRT8EUBLNIOArGWS9z4IVt1eUmiSlZdL1UOOhLaTQQk5AQABAAAAAAAD +AAAAAAAAAAAAAAA5CnBbsitOieiw9TiSddeEoQA33PF9QnEwHYCT3hH9bGrv +EkdoIK0RfFBvWoNGdCum0IFcPC8FSJVOvzVZ3aYX6HTbY/TDNHUaPdSkxTnP +rJKSGK44tbNitScYTEx9llrHroB82SO/8jMtdyh5fjn3ml3MUT9w5w1e7UR9 +ra60yXSYoXfNM2C9d2BrvZfnimoo+3UT7Z8/Syu3mMcA+IFT1IRl9JIeJJJ2 ++NSjXsIypI6Qot99EodntcKHEv/uhRgNo52fnFJoiKLgjONj0Ei/H0PUGy7t +Oe5WM6f7be7IRFVfrHcuAjpZITURHNfcY8LLTkQqYkZxQi2G/4CPmgB1y/HK +clN3H6rTC8QEm2o2elt+MKvp7tILV58= +------------------------------------------------------------ +sGfdd2b8Ah8BAHE8sFaCje8dykovSMlwZoZ2pG3LuJCrVP+QRq9WeOqXjn2i +SNk3UdwC5A+XVloTBylotgzLHbvNtObozgJZE7Awg3VB0khDvEooHQ3lXyoL +sHWaIzR/vHQEOM58zAVu9HQ5egpXBSy+5HNSSgelE+PAQ0PGgk9vmCu/AQAA +AAIAAABb72vbWMY3qa+tGeT9Q/JAWLkTr9kVwp/Bu9PDxx7+ADQXLzXtkx46 +I68gQD/2CnFjHuejZyOVQ/lgK7d2lFdYruDUA/7QHZYFqcm20Ggne0yNZyO8 +ZVROpjuDk+Wt1V3aHEehofWdPdmHv2V+kCSS+0dniNkG7cKYUGlB1us+B8bS +dt2yIY/1/XF5ChgRsvPhXJbWEYiDGRQO6JZOWra3UV/6PRZ7WaZ014PQhKL7 ++rnONfuoGzyi4QxHXwEXY0WWsim4p9yKvxPP52hyuypKyAZdllh6yLp19BMM +OmdbS+lWIxfgGv2M/p2iuuNCJJL0qND3GnsAjg037yYlM1gRAAAAAAAAAAAA +AAAAAAAAAAAAAACKbmaW/YIUkH0xzziHdNgNb7etf83vIBy25xY5DGmoxEXn +vMFlSfMlzf2P2mBmUB373juUxhjLoV8TeUA/IELZgUvz1c9E+8bP/5zGXC9m +Te3kYXVC8xZwDKluLNOKCheNPMlLkI1D5hqzFkOtCeK2yaJ0YNi4u+iPJNhl +CiJQKlT0WIxvBqXyLiiTLQ0Gax+ua4WefxyYnVNqpEx2+kh2wANiE9PeYwh4 +be0ZH4qyi7L+K4TvxCkwKi7n0+QjE1+IEltWfqd4hzW8pAr/9oltZ4ZZJBOL +D64S5OXF3ujCWKIZ9aAfbIZJKZ4onS2AIa6fzh09xHcdiPosQohc4dQW7lqO +ITt7XVvgPNbmpu2irMLC2LLDXNxx+7T4Npcbg6y97ACx5wtwH9N4koXnTwQG +w49V/AOQgzq6sUjgXlIrcIo7oH+Wz1Wp +############################################################ \ No newline at end of file diff --git a/VisitFace/RtspNativeCodec/app/src/main/cpp/CMakeLists.txt b/VisitFace/RtspNativeCodec/app/src/main/cpp/CMakeLists.txt index 4b983a8..95d13b3 100644 --- a/VisitFace/RtspNativeCodec/app/src/main/cpp/CMakeLists.txt +++ b/VisitFace/RtspNativeCodec/app/src/main/cpp/CMakeLists.txt @@ -7,7 +7,7 @@ #set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -O0 -std=c++11 -DANDROID_PLATFORM=android-22 -DANDROID_TOOLCHAIN=gcc -DANDROID_STL=gnustl_static -Wall -UNDEBUG") set(WORKSPACE_PATH "D:/workspace/proxy") -set(ARCH "armeabi-v7a") +set(ARCH "arm64-v8a") include_directories( "${WORKSPACE_PATH}/RtspFace" @@ -68,7 +68,8 @@ "${WORKSPACE_PATH}/RtspFace/PL_BlockGrouping.cpp" #"${WORKSPACE_PATH}/RtspFace/PL_Queue.cpp" #"${WORKSPACE_PATH}/RtspFace/PL_Fork2.cpp" - #"${WORKSPACE_PATH}/RtspFace/PL_AndroidMediaCodecEncoder.cpp" + "${WORKSPACE_PATH}/RtspFace/PL_AndroidMediaCodecEncoder.cpp" + "${WORKSPACE_PATH}/RtspFace/PL_RTSPServer.cpp" "${WORKSPACE_PATH}/FaceServer/proto_hton_ntoh.cpp" "${WORKSPACE_PATH}/FaceServer/PbFaceList.pb.cc" @@ -80,6 +81,9 @@ "${WORKSPACE_PATH}/RtspFace/CvUtil/CvxText.cpp" + "${WORKSPACE_PATH}/RtspFace/FFmpegRTSPServer/LiveServerMediaSubsession.cpp" + "${WORKSPACE_PATH}/RtspFace/FFmpegRTSPServer/LiveRTSPServer.cpp" + "${WORKSPACE_PATH}/RtspFace/FFmpegRTSPServer/FFmpegH264Source.cpp" ) # Include libraries needed for native-codec-jni lib diff --git a/VisitFace/RtspNativeCodec/app/src/main/cpp/CameraWrapperServer.cpp b/VisitFace/RtspNativeCodec/app/src/main/cpp/CameraWrapperServer.cpp index cbdfeb5..7c1adbd 100644 --- a/VisitFace/RtspNativeCodec/app/src/main/cpp/CameraWrapperServer.cpp +++ b/VisitFace/RtspNativeCodec/app/src/main/cpp/CameraWrapperServer.cpp @@ -9,6 +9,7 @@ #include <PL_BlockGrouping.h> #include <PL_ColorConv.h> #include <PL_AndroidMediaCodecEncoder.h> +#include <PL_RTSPServer.h> CameraWrapper::~CameraWrapper() { @@ -102,7 +103,8 @@ PipeLine::register_global_elem_creator("PL_Paint", create_PL_Paint); PipeLine::register_global_elem_creator("PL_V4L2Source", create_PL_V4L2Source); PipeLine::register_global_elem_creator("PL_BlockGrouping", create_PL_BlockGrouping); - //PipeLine::register_global_elem_creator("PL_AndroidMediaCodecEncoder", create_PL_AndroidMediaCodecEncoder); + PipeLine::register_global_elem_creator("PL_AndroidMediaCodecEncoder", create_PL_AndroidMediaCodecEncoder); + PipeLine::register_global_elem_creator("PL_RTSPServer", create_PL_RTSPServer); bool ret = initPl_DecoderPl(); if (!ret) @@ -151,49 +153,59 @@ return false; } - //PL_AndroidMediaCodecEncoder_Config amceCfg; - //amceCfg.ak_bit_rate = 5000000; // 512KB - //amceCfg.ak_color_format = 21; // COLOR_FormatYUV420SemiPlanar; - //amceCfg.ak_frame_rate = 25; - //amceCfg.ak_height = 480; - //amceCfg.ak_i_frame_interval = 20; - //amceCfg.ak_mime = "video/avc"; - //amceCfg.ak_width = 640; - //PL_AndroidMediaCodecEncoder* plAMCE = (PL_AndroidMediaCodecEncoder*)pipeLineRender->push_elem("PL_AndroidMediaCodecEncoder"); - //ret = plAMCE->init(&amceCfg); + PL_AndroidMediaCodecEncoder_Config amceCfg; + amceCfg.ak_bit_rate = 5000000; // 512KB + amceCfg.ak_color_format = 21; // COLOR_FormatYUV420SemiPlanar; + amceCfg.ak_frame_rate = 25; + amceCfg.ak_height = 480; + amceCfg.ak_i_frame_interval = 20; + amceCfg.ak_mime = "video/avc"; + amceCfg.ak_width = 640; + PL_AndroidMediaCodecEncoder* plAMCE = (PL_AndroidMediaCodecEncoder*)pipeLineRender->push_elem("PL_AndroidMediaCodecEncoder"); + ret = plAMCE->init(&amceCfg); + if (!ret) + { + LOG_ERROR << "pipeLineRender.plAMCE init error" << LOG_ENDL; + return false; + } + + PL_RTSPServer* plRtspServer = (PL_RTSPServer*)pipeLineRender->push_elem("PL_RTSPServer"); + RTSPServerConfig rtspServerConfig; + //rtspServerConfig.syncDeliverFrame = false; + ret = plRtspServer->init(&rtspServerConfig); + if (!ret) + { + LOG_ERROR << "pipeLineRender.plRtspServer init error" << LOG_ENDL; + return false; + } + + //PL_ColorConv_Config PLColorConvCfg; + //PL_ColorConv* plColorConv = (PL_ColorConv*)pipeLineRender->push_elem("PL_ColorConv"); + //ret = plColorConv->init(&PLColorConvCfg); + //if (!ret) + //{ + // LOG_ERROR << "pipeLineRender.plPaint init error" << LOG_ENDL; + // return false; + //} + + //PL_Paint_Config plPaintCfg; + //plPaintCfg.fontPath = fontPath; + //plPaintCfg.plplCtx = &plplContext; + //PL_Paint* plPaint = (PL_Paint*)pipeLineRender->push_elem("PL_Paint"); + //ret = plPaint->init(&plPaintCfg); //if (!ret) //{ - // LOG_ERROR << "pipeLineRender.plAMCE init error" << LOG_ENDL; + // LOG_ERROR << "pipeLineRender.plPaint init error" << LOG_ENDL; // return false; //} - PL_ColorConv_Config PLColorConvCfg; - PL_ColorConv* plColorConv = (PL_ColorConv*)pipeLineRender->push_elem("PL_ColorConv"); - ret = plColorConv->init(&PLColorConvCfg); - if (!ret) - { - LOG_ERROR << "pipeLineRender.plPaint init error" << LOG_ENDL; - return false; - } - - PL_Paint_Config plPaintCfg; - plPaintCfg.fontPath = fontPath; - plPaintCfg.plplCtx = &plplContext; - PL_Paint* plPaint = (PL_Paint*)pipeLineRender->push_elem("PL_Paint"); - ret = plPaint->init(&plPaintCfg); - if (!ret) - { - LOG_ERROR << "pipeLineRender.plPaint init error" << LOG_ENDL; - return false; - } - - PL_AndroidSurfaceViewRender* asvRender = (PL_AndroidSurfaceViewRender*)pipeLineRender->push_elem("PL_AndroidSurfaceViewRender"); - ret = asvRender->init(&asvrConfig); - if (!ret) - { - LOG_ERROR << "pipeLineRender.asvRender init error" << LOG_ENDL; - return false; - } + //PL_AndroidSurfaceViewRender* asvRender = (PL_AndroidSurfaceViewRender*)pipeLineRender->push_elem("PL_AndroidSurfaceViewRender"); + //ret = asvRender->init(&asvrConfig); + //if (!ret) + //{ + // LOG_ERROR << "pipeLineRender.asvRender init error" << LOG_ENDL; + // return false; + //} } return true; @@ -461,9 +473,7 @@ //#debug //test_paint(cameraWrapper); - cameraWrapper.pipeLineRender->pipe(&pm);//#todo - //if (cameraWrapper.pipeLineRender->check_pipe_complete(last = cameraWrapper.pipeLineRender->pipe(&pm))) - // last->gain(pm); + cameraWrapper.pipeLineRender->pipe(&pm); } LOG_INFO << "CameraWrapper::decoder_thd stop, ret=" << LOG_ENDL; @@ -478,6 +488,7 @@ { sleep(10); + continue;//#todo if (time(nullptr) - cameraWrapper.lastAliveTime > 20) { PL_RTSPClient* rtspClient = (PL_RTSPClient*)cameraWrapper.pipeLineDecoderDetector->at(0); -- Gitblit v1.8.0