From 9e5babf9db52e64bdae60137be7696e56241fca6 Mon Sep 17 00:00:00 2001 From: xingzilong <xingzilong@454eff88-639b-444f-9e54-f578c98de674> Date: 星期五, 18 八月 2017 18:12:17 +0800 Subject: [PATCH] H264 NALU解析 并在RTSPServer判断 --- RtspFace/PL_AndroidMediaCodecEncoder.cpp | 15 +++++++++++++-- 1 files changed, 13 insertions(+), 2 deletions(-) diff --git a/RtspFace/PL_AndroidMediaCodecEncoder.cpp b/RtspFace/PL_AndroidMediaCodecEncoder.cpp index 2484cd5..3ce90d6 100644 --- a/RtspFace/PL_AndroidMediaCodecEncoder.cpp +++ b/RtspFace/PL_AndroidMediaCodecEncoder.cpp @@ -82,6 +82,7 @@ PL_AndroidMediaCodecEncoder_Config* config = (PL_AndroidMediaCodecEncoder_Config*)args; in->config = *config; + // see: developer.android.com/reference/android/media/MediaFormat.html#KEY_PROFILE AMediaFormat* format = AMediaFormat_new(); AMediaFormat_setString(format, AMEDIAFORMAT_KEY_MIME, config->ak_mime.c_str()); @@ -98,6 +99,12 @@ #define AMEDIA_COLOR_FormatYUV420Flexible 0x7f420888 AMediaFormat_setInt32(format, AMEDIAFORMAT_KEY_COLOR_FORMAT, config->ak_color_format); //AMediaFormat_setInt32(format, AMEDIAFORMAT_KEY_STRIDE, config->ak_width * 2); + + if (config->codecProfileLevel.profile != 0) + AMediaFormat_setInt32(format, "profile", config->codecProfileLevel.profile); + if (config->codecProfileLevel.level != 0) + AMediaFormat_setInt32(format, "level", config->codecProfileLevel.level); + //uint8_t sps[] = {0x0,0x0,0x0,0x1, 0x67, 0x42, 0x00, 0x2A, 0x95, 0xA8, 0x1E, 0x00, 0x89, 0xF9, 0x61, 0x00, 0x00, 0x07, 0x08, 0x00, 0x01, 0x5F, 0x90, 0x04}; //uint8_t pps[] = {0x0,0x0,0x0,0x1, 0x68, 0xCE, 0x3C, 0x80}; @@ -264,8 +271,12 @@ if (spsSize != 0) { - std::string spsStr = base64_encode(((const char*)sps) + 4, spsSize - 4);//#todo aux - std::string ppsStr = base64_encode(((const char*)pps) + 4, ppsSize - 4); + char* tmp = nullptr; + std::string spsStr = tmp = base64_encode(((const char*)sps) + 4, spsSize - 4);//#todo aux + delete[] tmp; + std::string ppsStr = tmp = base64_encode(((const char*)pps) + 4, ppsSize - 4); + delete[] tmp; + tmp = nullptr; this->manager->set_param(PLGP_ENC_SPS_B64, spsStr); this->manager->set_param(PLGP_ENC_PPS_B64, ppsStr); -- Gitblit v1.8.0