From 712c1e4474aa1ee249bd34615fe637e7129b0059 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Mon, 10 Mar 2025 15:05:31 +0800 Subject: [PATCH 01/27] update:xengine v9.14 supported --- XEngine_Source/VSCopy_Debug.bat | 17 +++++++++-------- XEngine_Source/VSCopy_x64.bat | 17 +++++++++-------- XEngine_Source/VSCopy_x86.bat | 17 +++++++++-------- .../XEngine_StreamMediaApp/XEngine_AVPacket.cpp | 3 --- 4 files changed, 27 insertions(+), 27 deletions(-) diff --git a/XEngine_Source/VSCopy_Debug.bat b/XEngine_Source/VSCopy_Debug.bat index bee8dc5..2ef0427 100644 --- a/XEngine_Source/VSCopy_Debug.bat +++ b/XEngine_Source/VSCopy_Debug.bat @@ -12,6 +12,7 @@ copy /y "D:\XEngine\XEngine_SourceCode\Debug\NetHelp_XSocket.dll" "./" copy /y "D:\XEngine\XEngine_SourceCode\Debug\NetHelp_APIHelp.dll" "./" copy /y "D:\XEngine\XEngine_SourceCode\Debug\NetHelp_APIAddr.dll" "./" copy /y "D:\XEngine\XEngine_SourceCode\Debug\XEngine_SystemApi.dll" "./" +copy /y "D:\XEngine\XEngine_SourceCode\Debug\XEngine_SystemConfig.dll" "./" copy /y "D:\XEngine\XEngine_SourceCode\Debug\HelpComponents_Packets.dll" "./" copy /y "D:\XEngine\XEngine_SourceCode\Debug\HelpComponents_XLog.dll" "./" @@ -29,11 +30,11 @@ copy /y "D:\XEngine\XEngine_SourceCode\Debug\StreamMedia_HLSProtocol.dll" "./" copy /y "D:\XEngine\XEngine_SourceCode\Debug\XEngine_AVHelp.dll" "./" copy /y "D:\XEngine\XEngine_SourceCode\Debug\XEngine_AudioCodec.dll" "./" -copy /y "%XEngine_Lib32%\XEngine_AVCodec\avcodec-60.dll" "./" -copy /y "%XEngine_Lib32%\XEngine_AVCodec\avdevice-60.dll" "./" -copy /y "%XEngine_Lib32%\XEngine_AVCodec\avfilter-9.dll" "./" -copy /y "%XEngine_Lib32%\XEngine_AVCodec\avformat-60.dll" "./" -copy /y "%XEngine_Lib32%\XEngine_AVCodec\avutil-58.dll" "./" -copy /y "%XEngine_Lib32%\XEngine_AVCodec\postproc-57.dll" "./" -copy /y "%XEngine_Lib32%\XEngine_AVCodec\swresample-4.dll" "./" -copy /y "%XEngine_Lib32%\XEngine_AVCodec\swscale-7.dll" "./" \ No newline at end of file +copy /y "%XEngine_Lib32%\XEngine_AVCodec\avcodec-61.dll" "./" +copy /y "%XEngine_Lib32%\XEngine_AVCodec\avdevice-61.dll" "./" +copy /y "%XEngine_Lib32%\XEngine_AVCodec\avfilter-10.dll" "./" +copy /y "%XEngine_Lib32%\XEngine_AVCodec\avformat-61.dll" "./" +copy /y "%XEngine_Lib32%\XEngine_AVCodec\avutil-59.dll" "./" +copy /y "%XEngine_Lib32%\XEngine_AVCodec\postproc-58.dll" "./" +copy /y "%XEngine_Lib32%\XEngine_AVCodec\swresample-5.dll" "./" +copy /y "%XEngine_Lib32%\XEngine_AVCodec\swscale-8.dll" "./" \ No newline at end of file diff --git a/XEngine_Source/VSCopy_x64.bat b/XEngine_Source/VSCopy_x64.bat index 1a3a932..c4c4739 100644 --- a/XEngine_Source/VSCopy_x64.bat +++ b/XEngine_Source/VSCopy_x64.bat @@ -12,6 +12,7 @@ copy /y "%XEngine_Lib64%\XEngine_NetHelp\NetHelp_XSocket.dll" "./" copy /y "%XEngine_Lib64%\XEngine_NetHelp\NetHelp_APIHelp.dll" "./" copy /y "%XEngine_Lib64%\XEngine_NetHelp\NetHelp_APIAddr.dll" "./" copy /y "%XEngine_Lib64%\XEngine_SystemSdk\XEngine_SystemApi.dll" "./" +copy /y "%XEngine_Lib64%\XEngine_SystemSdk\XEngine_SystemConfig.dll" "./" copy /y "%XEngine_Lib64%\XEngine_HelpComponents\HelpComponents_Packets.dll" "./" copy /y "%XEngine_Lib64%\XEngine_HelpComponents\HelpComponents_XLog.dll" "./" @@ -29,11 +30,11 @@ copy /y "%XEngine_Lib64%\XEngine_StreamMedia\StreamMedia_HLSProtocol.dll" "./" copy /y "%XEngine_Lib64%\XEngine_AVCodec\XEngine_AVHelp.dll" "./" copy /y "%XEngine_Lib64%\XEngine_AVCodec\XEngine_AudioCodec.dll" "./" -copy /y "%XEngine_Lib64%\XEngine_AVCodec\avcodec-60.dll" "./" -copy /y "%XEngine_Lib64%\XEngine_AVCodec\avdevice-60.dll" "./" -copy /y "%XEngine_Lib64%\XEngine_AVCodec\avfilter-9.dll" "./" -copy /y "%XEngine_Lib64%\XEngine_AVCodec\avformat-60.dll" "./" -copy /y "%XEngine_Lib64%\XEngine_AVCodec\avutil-58.dll" "./" -copy /y "%XEngine_Lib64%\XEngine_AVCodec\postproc-57.dll" "./" -copy /y "%XEngine_Lib64%\XEngine_AVCodec\swresample-4.dll" "./" -copy /y "%XEngine_Lib64%\XEngine_AVCodec\swscale-7.dll" "./" \ No newline at end of file +copy /y "%XEngine_Lib64%\XEngine_AVCodec\avcodec-61.dll" "./" +copy /y "%XEngine_Lib64%\XEngine_AVCodec\avdevice-61.dll" "./" +copy /y "%XEngine_Lib64%\XEngine_AVCodec\avfilter-10.dll" "./" +copy /y "%XEngine_Lib64%\XEngine_AVCodec\avformat-61.dll" "./" +copy /y "%XEngine_Lib64%\XEngine_AVCodec\avutil-59.dll" "./" +copy /y "%XEngine_Lib64%\XEngine_AVCodec\postproc-58.dll" "./" +copy /y "%XEngine_Lib64%\XEngine_AVCodec\swresample-5.dll" "./" +copy /y "%XEngine_Lib64%\XEngine_AVCodec\swscale-8.dll" "./" \ No newline at end of file diff --git a/XEngine_Source/VSCopy_x86.bat b/XEngine_Source/VSCopy_x86.bat index 55e617d..fce463a 100644 --- a/XEngine_Source/VSCopy_x86.bat +++ b/XEngine_Source/VSCopy_x86.bat @@ -12,6 +12,7 @@ copy /y "%XEngine_Lib32%\XEngine_NetHelp\NetHelp_XSocket.dll" "./" copy /y "%XEngine_Lib32%\XEngine_NetHelp\NetHelp_APIHelp.dll" "./" copy /y "%XEngine_Lib32%\XEngine_NetHelp\NetHelp_APIAddr.dll" "./" copy /y "%XEngine_Lib32%\XEngine_SystemSdk\XEngine_SystemApi.dll" "./" +copy /y "%XEngine_Lib32%\XEngine_SystemSdk\XEngine_SystemConfig.dll" "./" copy /y "%XEngine_Lib32%\XEngine_HelpComponents\HelpComponents_Packets.dll" "./" copy /y "%XEngine_Lib32%\XEngine_HelpComponents\HelpComponents_XLog.dll" "./" @@ -29,11 +30,11 @@ copy /y "%XEngine_Lib32%\XEngine_StreamMedia\StreamMedia_HLSProtocol.dll" "./" copy /y "%XEngine_Lib32%\XEngine_AVCodec\XEngine_AVHelp.dll" "./" copy /y "%XEngine_Lib32%\XEngine_AVCodec\XEngine_AudioCodec.dll" "./" -copy /y "%XEngine_Lib32%\XEngine_AVCodec\avcodec-60.dll" "./" -copy /y "%XEngine_Lib32%\XEngine_AVCodec\avdevice-60.dll" "./" -copy /y "%XEngine_Lib32%\XEngine_AVCodec\avfilter-9.dll" "./" -copy /y "%XEngine_Lib32%\XEngine_AVCodec\avformat-60.dll" "./" -copy /y "%XEngine_Lib32%\XEngine_AVCodec\avutil-58.dll" "./" -copy /y "%XEngine_Lib32%\XEngine_AVCodec\postproc-57.dll" "./" -copy /y "%XEngine_Lib32%\XEngine_AVCodec\swresample-4.dll" "./" -copy /y "%XEngine_Lib32%\XEngine_AVCodec\swscale-7.dll" "./" \ No newline at end of file +copy /y "%XEngine_Lib32%\XEngine_AVCodec\avcodec-61.dll" "./" +copy /y "%XEngine_Lib32%\XEngine_AVCodec\avdevice-61.dll" "./" +copy /y "%XEngine_Lib32%\XEngine_AVCodec\avfilter-10.dll" "./" +copy /y "%XEngine_Lib32%\XEngine_AVCodec\avformat-61.dll" "./" +copy /y "%XEngine_Lib32%\XEngine_AVCodec\avutil-59.dll" "./" +copy /y "%XEngine_Lib32%\XEngine_AVCodec\postproc-58.dll" "./" +copy /y "%XEngine_Lib32%\XEngine_AVCodec\swresample-5.dll" "./" +copy /y "%XEngine_Lib32%\XEngine_AVCodec\swscale-8.dll" "./" \ No newline at end of file diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_AVPacket.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_AVPacket.cpp index 9dce294..b2c0cfa 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_AVPacket.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_AVPacket.cpp @@ -279,8 +279,6 @@ bool XEngine_AVPacket_AVHdr(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int n XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("推流端:%s,初始化音频解码器失败,错误:%lX"), lpszClientAddr, AudioCodec_GetLastError()); return false; } - int nTmp = 0; - AudioCodec_Stream_SetResample(xhDecodec, &nTmp, st_AVInfo.st_AudioInfo.nSampleRate, st_AVInfo.st_AudioInfo.nSampleRate, ENUM_AVCODEC_AUDIO_SAMPLEFMT_FLTP, ENUM_AVCODEC_AUDIO_SAMPLEFMT_S16, st_AVInfo.st_AudioInfo.nChannel, st_AVInfo.st_AudioInfo.nChannel); st_AVInfo.st_AudioInfo.enAVCodec = ENUM_XENGINE_AVCODEC_AUDIO_TYPE_AAC; if (!AudioCodec_Stream_EnInit(&xhEncodec, &st_AVInfo.st_AudioInfo)) @@ -289,7 +287,6 @@ bool XEngine_AVPacket_AVHdr(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int n XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("推流端:%s,初始化音频编码器失败,错误:%lX"), lpszClientAddr, AudioCodec_GetLastError()); return false; } - AudioCodec_Stream_SetResample(xhEncodec, &nTmp, st_AVInfo.st_AudioInfo.nSampleRate, st_AVInfo.st_AudioInfo.nSampleRate, ENUM_AVCODEC_AUDIO_SAMPLEFMT_S16, ENUM_AVCODEC_AUDIO_SAMPLEFMT_FLTP, st_AVInfo.st_AudioInfo.nChannel, st_AVInfo.st_AudioInfo.nChannel); if (!ModuleSession_PushStream_AudioCodecSet(lpszClientAddr, xhDecodec, xhEncodec)) { From f4df6126f8c9bdd339f05e4089b3830aaf3e2322 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Mon, 10 Mar 2025 15:06:21 +0800 Subject: [PATCH 02/27] ci:update left time --- .github/workflows/macbuild.yml | 4 ++-- .github/workflows/msbuild.yml | 4 ++-- .github/workflows/ubuntubuild.yml | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/macbuild.yml b/.github/workflows/macbuild.yml index 1a36dc8..f62b9b6 100644 --- a/.github/workflows/macbuild.yml +++ b/.github/workflows/macbuild.yml @@ -92,11 +92,11 @@ jobs: with: name: XEngine_StreamMediaApp-x86_64-Mac path: XEngine_Release/ - retention-days: 3 + retention-days: 1 - name: Upload folder as artifact with mac arm if: matrix.os == 'macos-14' uses: actions/upload-artifact@v4 with: name: XEngine_StreamMediaApp-Arm64-Mac path: XEngine_Release/ - retention-days: 3 \ No newline at end of file + retention-days: 1 \ No newline at end of file diff --git a/.github/workflows/msbuild.yml b/.github/workflows/msbuild.yml index 713c01b..8a08835 100644 --- a/.github/workflows/msbuild.yml +++ b/.github/workflows/msbuild.yml @@ -116,7 +116,7 @@ jobs: with: name: XEngine_StreamMediaApp-x86_32-Windows path: XEngine_Release/ - retention-days: 3 + retention-days: 1 - name: Upload folder as artifact with x64 if: matrix.configuration == 'Release' && matrix.platform == 'x64' @@ -124,4 +124,4 @@ jobs: with: name: XEngine_StreamMediaApp-x86_64-Windows path: XEngine_Release/ - retention-days: 3 \ No newline at end of file + retention-days: 1 \ No newline at end of file diff --git a/.github/workflows/ubuntubuild.yml b/.github/workflows/ubuntubuild.yml index 8fd36e1..77d5d9f 100644 --- a/.github/workflows/ubuntubuild.yml +++ b/.github/workflows/ubuntubuild.yml @@ -89,11 +89,11 @@ jobs: with: name: XEngine_StreamMediaApp-x86_64-Ubuntu-22.04 path: XEngine_Release/ - retention-days: 3 + retention-days: 1 - name: Upload folder as artifact with ubuntu24.04 if: matrix.os == 'ubuntu-24.04' uses: actions/upload-artifact@v4 with: name: XEngine_StreamMediaApp-x86_64-Ubuntu-24.04 path: XEngine_Release/ - retention-days: 3 \ No newline at end of file + retention-days: 1 \ No newline at end of file From 73f32e0efee28422fcb15b83971f8b0ee0d723fb Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Tue, 25 Mar 2025 17:08:29 +0800 Subject: [PATCH 03/27] update:depend library --- XEngine_Source/XEngine_Depend | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/XEngine_Source/XEngine_Depend b/XEngine_Source/XEngine_Depend index d022f0c..fda9f7d 160000 --- a/XEngine_Source/XEngine_Depend +++ b/XEngine_Source/XEngine_Depend @@ -1 +1 @@ -Subproject commit d022f0c7d2298275d663543afd33e18243c5f25d +Subproject commit fda9f7d9140cc6a32eecb499e2acb67e8e1c7e6f From ecf5e20146ce828cbe7c9efeecaa75c516e81832 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Tue, 25 Mar 2025 17:24:38 +0800 Subject: [PATCH 04/27] added:windows arm64 build support --- .github/workflows/msbuild.yml | 40 ++++++++- XEngine_Source/VSCopy_Arm64.bat | 40 +++++++++ XEngine_Source/XEngine.sln | 34 ++++++++ .../XEngine_ModuleConfigure.vcxproj | 82 ++++++++++++++++++ XEngine_Source/XEngine_ModuleConfigure/pch.h | 20 +++-- .../XEngine_ModuleHelp.vcxproj | 80 ++++++++++++++++++ .../XEngine_ModuleProtocol.vcxproj | 80 ++++++++++++++++++ XEngine_Source/XEngine_ModuleProtocol/pch.h | 20 +++-- .../XEngine_ModuleQueue.vcxproj | 76 +++++++++++++++++ .../XEngine_ModuleSession.vcxproj | 80 ++++++++++++++++++ .../XEngine_StreamMediaApp/XEngine_Hdr.h | 84 +++++++++++-------- .../XEngine_StreamMediaApp.vcxproj | 68 +++++++++++++++ 12 files changed, 652 insertions(+), 52 deletions(-) create mode 100644 XEngine_Source/VSCopy_Arm64.bat diff --git a/.github/workflows/msbuild.yml b/.github/workflows/msbuild.yml index 8a08835..4acef15 100644 --- a/.github/workflows/msbuild.yml +++ b/.github/workflows/msbuild.yml @@ -18,7 +18,7 @@ jobs: fail-fast: false matrix: configuration: [Debug ,Release] - platform: [x86 ,x64] + platform: [x86 ,x64 ,ARM64] runs-on: windows-latest @@ -62,6 +62,14 @@ jobs: ./vcpkg.exe install libsrt:x64-windows libsrtp:x64-windows ./vcpkg.exe integrate install shell: pwsh + - name: vcpkg install (ARM64) + if: matrix.platform == 'ARM64' + run: | + cd vcpkg + ./bootstrap-vcpkg.bat + ./vcpkg.exe install libsrt:Arm64-windows libsrtp:Arm64-windows + ./vcpkg.exe integrate install + shell: pwsh - name: Set up Dependency x86_64 Environment if: matrix.platform == 'x64' @@ -83,6 +91,20 @@ jobs: echo "XENGINE_INCLUDE=${{ github.workspace }}/XEngine_Windows" | Out-File -FilePath $env:GITHUB_ENV -Append echo "XENGINE_LIB32=${{ github.workspace }}/XEngine_Windows/XEngine_Windows" | Out-File -FilePath $env:GITHUB_ENV -Append shell: pwsh + - name: Set up Dependency ARM64 Environment + if: matrix.platform == 'ARM64' + run: | + $response = Invoke-RestMethod -Uri "https://api.github.com/repos/libxengine/libxengine/releases/latest" -Headers @{"Accept"="application/vnd.github.v3+json"} + $latest_tag = $response.tag_name + Write-Host "Latest Tag: $latest_tag" + + $url = "https://github.com/libxengine/libxengine/releases/download/$latest_tag/XEngine_Windows_Arm64.zip" + Invoke-WebRequest -Uri $url -OutFile "XEngine_Windows_Arm64.zip" + Expand-Archive -Path ./XEngine_Windows_Arm64.zip -DestinationPath ./XEngine_Windows -Force + + echo "XENGINE_INCLUDE=${{ github.workspace }}/XEngine_Windows" | Out-File -FilePath $env:GITHUB_ENV -Append + echo "XENGINE_LIBARM64=${{ github.workspace }}/XEngine_Windows/XEngine_Windows" | Out-File -FilePath $env:GITHUB_ENV -Append + shell: pwsh - name: Setup MSBuild uses: microsoft/setup-msbuild@v2 @@ -109,6 +131,15 @@ jobs: cd XEngine_Release .\VSCopy_x64.bat shell: pwsh + - name: Conditional Step for ARM64 Release + if: matrix.configuration == 'Release' && matrix.platform == 'ARM64' + run: | + cp -r XEngine_Source/ARM64/Release/*.dll XEngine_Release/ + cp -r XEngine_Source/ARM64/Release/*.exe XEngine_Release/ + cp -r XEngine_Source/VSCopy_Arm64.bat XEngine_Release/ + cd XEngine_Release + .\VSCopy_Arm64.bat + shell: pwsh - name: Upload folder as artifact with x86 if: matrix.configuration == 'Release' && matrix.platform == 'x86' @@ -124,4 +155,11 @@ jobs: with: name: XEngine_StreamMediaApp-x86_64-Windows path: XEngine_Release/ + retention-days: 1 + - name: Upload folder as artifact with ARM64 + if: matrix.configuration == 'Release' && matrix.platform == 'ARM64' + uses: actions/upload-artifact@v4 + with: + name: XEngine_StreamMediaApp-Arm64-Windows + path: XEngine_Release/ retention-days: 1 \ No newline at end of file diff --git a/XEngine_Source/VSCopy_Arm64.bat b/XEngine_Source/VSCopy_Arm64.bat new file mode 100644 index 0000000..9128790 --- /dev/null +++ b/XEngine_Source/VSCopy_Arm64.bat @@ -0,0 +1,40 @@ +copy /y "%XEngine_LibArm64%\XEngine_BaseLib\XEngine_BaseLib.dll" "./" +copy /y "%XEngine_LibArm64%\XEngine_BaseLib\XEngine_BaseSafe.dll" "./" +copy /y "%XEngine_LibArm64%\XEngine_BaseLib\XEngine_Algorithm.dll" "./" +copy /y "%XEngine_LibArm64%\XEngine_Core\XEngine_Core.dll" "./" +copy /y "%XEngine_LibArm64%\XEngine_Core\XEngine_ManagePool.dll" "./" +copy /y "%XEngine_LibArm64%\XEngine_Core\XEngine_Cryption.dll" "./" + +copy /y "%XEngine_LibArm64%\XEngine_Client\XClient_Stream.dll" "./" +copy /y "%XEngine_LibArm64%\XEngine_Client\XClient_APIHelp.dll" "./" + +copy /y "%XEngine_LibArm64%\XEngine_NetHelp\NetHelp_XSocket.dll" "./" +copy /y "%XEngine_LibArm64%\XEngine_NetHelp\NetHelp_APIHelp.dll" "./" +copy /y "%XEngine_LibArm64%\XEngine_NetHelp\NetHelp_APIAddr.dll" "./" +copy /y "%XEngine_LibArm64%\XEngine_SystemSdk\XEngine_SystemApi.dll" "./" +copy /y "%XEngine_LibArm64%\XEngine_SystemSdk\XEngine_SystemConfig.dll" "./" + +copy /y "%XEngine_LibArm64%\XEngine_HelpComponents\HelpComponents_Packets.dll" "./" +copy /y "%XEngine_LibArm64%\XEngine_HelpComponents\HelpComponents_XLog.dll" "./" + +copy /y "%XEngine_LibArm64%\XEngine_RfcComponents\RfcComponents_HttpProtocol.dll" "./" +copy /y "%XEngine_LibArm64%\XEngine_RfcComponents\RfcComponents_NatProtocol.dll" "./" + +copy /y "%XEngine_LibArm64%\XEngine_StreamMedia\StreamMedia_SDPProtocol.dll" "./" +copy /y "%XEngine_LibArm64%\XEngine_StreamMedia\StreamMedia_FLVProtocol.dll" "./" +copy /y "%XEngine_LibArm64%\XEngine_StreamMedia\StreamMedia_RTMPProtocol.dll" "./" +copy /y "%XEngine_LibArm64%\XEngine_StreamMedia\StreamMedia_RTSPProtocol.dll" "./" +copy /y "%XEngine_LibArm64%\XEngine_StreamMedia\StreamMedia_RTPProtocol.dll" "./" +copy /y "%XEngine_LibArm64%\XEngine_StreamMedia\StreamMedia_RTCPProtocol.dll" "./" +copy /y "%XEngine_LibArm64%\XEngine_StreamMedia\StreamMedia_HLSProtocol.dll" "./" +copy /y "%XEngine_LibArm64%\XEngine_AVCodec\XEngine_AVHelp.dll" "./" +copy /y "%XEngine_LibArm64%\XEngine_AVCodec\XEngine_AudioCodec.dll" "./" + +copy /y "%XEngine_LibArm64%\XEngine_AVCodec\avcodec-61.dll" "./" +copy /y "%XEngine_LibArm64%\XEngine_AVCodec\avdevice-61.dll" "./" +copy /y "%XEngine_LibArm64%\XEngine_AVCodec\avfilter-10.dll" "./" +copy /y "%XEngine_LibArm64%\XEngine_AVCodec\avformat-61.dll" "./" +copy /y "%XEngine_LibArm64%\XEngine_AVCodec\avutil-59.dll" "./" +copy /y "%XEngine_LibArm64%\XEngine_AVCodec\postproc-58.dll" "./" +copy /y "%XEngine_LibArm64%\XEngine_AVCodec\swresample-5.dll" "./" +copy /y "%XEngine_LibArm64%\XEngine_AVCodec\swscale-8.dll" "./" \ No newline at end of file diff --git a/XEngine_Source/XEngine.sln b/XEngine_Source/XEngine.sln index 4662416..cfdc81a 100644 --- a/XEngine_Source/XEngine.sln +++ b/XEngine_Source/XEngine.sln @@ -49,72 +49,106 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XEngine_InfoReport", "XEngi EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|ARM64 = Debug|ARM64 Debug|x64 = Debug|x64 Debug|x86 = Debug|x86 + Release|ARM64 = Release|ARM64 Release|x64 = Release|x64 Release|x86 = Release|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution + {F54F152C-594F-4465-A44E-2DB915B39760}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {F54F152C-594F-4465-A44E-2DB915B39760}.Debug|ARM64.Build.0 = Debug|ARM64 {F54F152C-594F-4465-A44E-2DB915B39760}.Debug|x64.ActiveCfg = Debug|x64 {F54F152C-594F-4465-A44E-2DB915B39760}.Debug|x64.Build.0 = Debug|x64 {F54F152C-594F-4465-A44E-2DB915B39760}.Debug|x86.ActiveCfg = Debug|Win32 {F54F152C-594F-4465-A44E-2DB915B39760}.Debug|x86.Build.0 = Debug|Win32 + {F54F152C-594F-4465-A44E-2DB915B39760}.Release|ARM64.ActiveCfg = Release|ARM64 + {F54F152C-594F-4465-A44E-2DB915B39760}.Release|ARM64.Build.0 = Release|ARM64 {F54F152C-594F-4465-A44E-2DB915B39760}.Release|x64.ActiveCfg = Release|x64 {F54F152C-594F-4465-A44E-2DB915B39760}.Release|x64.Build.0 = Release|x64 {F54F152C-594F-4465-A44E-2DB915B39760}.Release|x86.ActiveCfg = Release|Win32 {F54F152C-594F-4465-A44E-2DB915B39760}.Release|x86.Build.0 = Release|Win32 + {6C935BE1-77E3-4719-A7A6-C76ABAFEE010}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {6C935BE1-77E3-4719-A7A6-C76ABAFEE010}.Debug|ARM64.Build.0 = Debug|ARM64 {6C935BE1-77E3-4719-A7A6-C76ABAFEE010}.Debug|x64.ActiveCfg = Debug|x64 {6C935BE1-77E3-4719-A7A6-C76ABAFEE010}.Debug|x64.Build.0 = Debug|x64 {6C935BE1-77E3-4719-A7A6-C76ABAFEE010}.Debug|x86.ActiveCfg = Debug|Win32 {6C935BE1-77E3-4719-A7A6-C76ABAFEE010}.Debug|x86.Build.0 = Debug|Win32 + {6C935BE1-77E3-4719-A7A6-C76ABAFEE010}.Release|ARM64.ActiveCfg = Release|ARM64 + {6C935BE1-77E3-4719-A7A6-C76ABAFEE010}.Release|ARM64.Build.0 = Release|ARM64 {6C935BE1-77E3-4719-A7A6-C76ABAFEE010}.Release|x64.ActiveCfg = Release|x64 {6C935BE1-77E3-4719-A7A6-C76ABAFEE010}.Release|x64.Build.0 = Release|x64 {6C935BE1-77E3-4719-A7A6-C76ABAFEE010}.Release|x86.ActiveCfg = Release|Win32 {6C935BE1-77E3-4719-A7A6-C76ABAFEE010}.Release|x86.Build.0 = Release|Win32 + {6D0FCB40-D544-4AB2-A239-2FEBC4B98F6D}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {6D0FCB40-D544-4AB2-A239-2FEBC4B98F6D}.Debug|ARM64.Build.0 = Debug|ARM64 {6D0FCB40-D544-4AB2-A239-2FEBC4B98F6D}.Debug|x64.ActiveCfg = Debug|x64 {6D0FCB40-D544-4AB2-A239-2FEBC4B98F6D}.Debug|x64.Build.0 = Debug|x64 {6D0FCB40-D544-4AB2-A239-2FEBC4B98F6D}.Debug|x86.ActiveCfg = Debug|Win32 {6D0FCB40-D544-4AB2-A239-2FEBC4B98F6D}.Debug|x86.Build.0 = Debug|Win32 + {6D0FCB40-D544-4AB2-A239-2FEBC4B98F6D}.Release|ARM64.ActiveCfg = Release|ARM64 + {6D0FCB40-D544-4AB2-A239-2FEBC4B98F6D}.Release|ARM64.Build.0 = Release|ARM64 {6D0FCB40-D544-4AB2-A239-2FEBC4B98F6D}.Release|x64.ActiveCfg = Release|x64 {6D0FCB40-D544-4AB2-A239-2FEBC4B98F6D}.Release|x64.Build.0 = Release|x64 {6D0FCB40-D544-4AB2-A239-2FEBC4B98F6D}.Release|x86.ActiveCfg = Release|Win32 {6D0FCB40-D544-4AB2-A239-2FEBC4B98F6D}.Release|x86.Build.0 = Release|Win32 + {98DB01B5-30B7-4C00-9A84-39886680F069}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {98DB01B5-30B7-4C00-9A84-39886680F069}.Debug|ARM64.Build.0 = Debug|ARM64 {98DB01B5-30B7-4C00-9A84-39886680F069}.Debug|x64.ActiveCfg = Debug|x64 {98DB01B5-30B7-4C00-9A84-39886680F069}.Debug|x64.Build.0 = Debug|x64 {98DB01B5-30B7-4C00-9A84-39886680F069}.Debug|x86.ActiveCfg = Debug|Win32 {98DB01B5-30B7-4C00-9A84-39886680F069}.Debug|x86.Build.0 = Debug|Win32 + {98DB01B5-30B7-4C00-9A84-39886680F069}.Release|ARM64.ActiveCfg = Release|ARM64 + {98DB01B5-30B7-4C00-9A84-39886680F069}.Release|ARM64.Build.0 = Release|ARM64 {98DB01B5-30B7-4C00-9A84-39886680F069}.Release|x64.ActiveCfg = Release|x64 {98DB01B5-30B7-4C00-9A84-39886680F069}.Release|x64.Build.0 = Release|x64 {98DB01B5-30B7-4C00-9A84-39886680F069}.Release|x86.ActiveCfg = Release|Win32 {98DB01B5-30B7-4C00-9A84-39886680F069}.Release|x86.Build.0 = Release|Win32 + {2E55D676-E9F5-48B8-B65E-FE0E7C3D2AEB}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {2E55D676-E9F5-48B8-B65E-FE0E7C3D2AEB}.Debug|ARM64.Build.0 = Debug|ARM64 {2E55D676-E9F5-48B8-B65E-FE0E7C3D2AEB}.Debug|x64.ActiveCfg = Debug|x64 {2E55D676-E9F5-48B8-B65E-FE0E7C3D2AEB}.Debug|x64.Build.0 = Debug|x64 {2E55D676-E9F5-48B8-B65E-FE0E7C3D2AEB}.Debug|x86.ActiveCfg = Debug|Win32 {2E55D676-E9F5-48B8-B65E-FE0E7C3D2AEB}.Debug|x86.Build.0 = Debug|Win32 + {2E55D676-E9F5-48B8-B65E-FE0E7C3D2AEB}.Release|ARM64.ActiveCfg = Release|ARM64 + {2E55D676-E9F5-48B8-B65E-FE0E7C3D2AEB}.Release|ARM64.Build.0 = Release|ARM64 {2E55D676-E9F5-48B8-B65E-FE0E7C3D2AEB}.Release|x64.ActiveCfg = Release|x64 {2E55D676-E9F5-48B8-B65E-FE0E7C3D2AEB}.Release|x64.Build.0 = Release|x64 {2E55D676-E9F5-48B8-B65E-FE0E7C3D2AEB}.Release|x86.ActiveCfg = Release|Win32 {2E55D676-E9F5-48B8-B65E-FE0E7C3D2AEB}.Release|x86.Build.0 = Release|Win32 + {9FF6FA78-456E-4A7E-86B1-17E4DB5403C9}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {9FF6FA78-456E-4A7E-86B1-17E4DB5403C9}.Debug|ARM64.Build.0 = Debug|ARM64 {9FF6FA78-456E-4A7E-86B1-17E4DB5403C9}.Debug|x64.ActiveCfg = Debug|x64 {9FF6FA78-456E-4A7E-86B1-17E4DB5403C9}.Debug|x64.Build.0 = Debug|x64 {9FF6FA78-456E-4A7E-86B1-17E4DB5403C9}.Debug|x86.ActiveCfg = Debug|Win32 {9FF6FA78-456E-4A7E-86B1-17E4DB5403C9}.Debug|x86.Build.0 = Debug|Win32 + {9FF6FA78-456E-4A7E-86B1-17E4DB5403C9}.Release|ARM64.ActiveCfg = Release|ARM64 + {9FF6FA78-456E-4A7E-86B1-17E4DB5403C9}.Release|ARM64.Build.0 = Release|ARM64 {9FF6FA78-456E-4A7E-86B1-17E4DB5403C9}.Release|x64.ActiveCfg = Release|x64 {9FF6FA78-456E-4A7E-86B1-17E4DB5403C9}.Release|x64.Build.0 = Release|x64 {9FF6FA78-456E-4A7E-86B1-17E4DB5403C9}.Release|x86.ActiveCfg = Release|Win32 {9FF6FA78-456E-4A7E-86B1-17E4DB5403C9}.Release|x86.Build.0 = Release|Win32 + {F1736B3F-03A2-4FC7-B045-A12BA8D724FB}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {F1736B3F-03A2-4FC7-B045-A12BA8D724FB}.Debug|ARM64.Build.0 = Debug|ARM64 {F1736B3F-03A2-4FC7-B045-A12BA8D724FB}.Debug|x64.ActiveCfg = Debug|x64 {F1736B3F-03A2-4FC7-B045-A12BA8D724FB}.Debug|x64.Build.0 = Debug|x64 {F1736B3F-03A2-4FC7-B045-A12BA8D724FB}.Debug|x86.ActiveCfg = Debug|Win32 {F1736B3F-03A2-4FC7-B045-A12BA8D724FB}.Debug|x86.Build.0 = Debug|Win32 + {F1736B3F-03A2-4FC7-B045-A12BA8D724FB}.Release|ARM64.ActiveCfg = Release|ARM64 + {F1736B3F-03A2-4FC7-B045-A12BA8D724FB}.Release|ARM64.Build.0 = Release|ARM64 {F1736B3F-03A2-4FC7-B045-A12BA8D724FB}.Release|x64.ActiveCfg = Release|x64 {F1736B3F-03A2-4FC7-B045-A12BA8D724FB}.Release|x64.Build.0 = Release|x64 {F1736B3F-03A2-4FC7-B045-A12BA8D724FB}.Release|x86.ActiveCfg = Release|Win32 {F1736B3F-03A2-4FC7-B045-A12BA8D724FB}.Release|x86.Build.0 = Release|Win32 + {F6520D2C-BB8E-45BB-964B-F5D6A4318A89}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {F6520D2C-BB8E-45BB-964B-F5D6A4318A89}.Debug|ARM64.Build.0 = Debug|ARM64 {F6520D2C-BB8E-45BB-964B-F5D6A4318A89}.Debug|x64.ActiveCfg = Debug|x64 {F6520D2C-BB8E-45BB-964B-F5D6A4318A89}.Debug|x64.Build.0 = Debug|x64 {F6520D2C-BB8E-45BB-964B-F5D6A4318A89}.Debug|x86.ActiveCfg = Debug|Win32 {F6520D2C-BB8E-45BB-964B-F5D6A4318A89}.Debug|x86.Build.0 = Debug|Win32 + {F6520D2C-BB8E-45BB-964B-F5D6A4318A89}.Release|ARM64.ActiveCfg = Release|ARM64 + {F6520D2C-BB8E-45BB-964B-F5D6A4318A89}.Release|ARM64.Build.0 = Release|ARM64 {F6520D2C-BB8E-45BB-964B-F5D6A4318A89}.Release|x64.ActiveCfg = Release|x64 {F6520D2C-BB8E-45BB-964B-F5D6A4318A89}.Release|x64.Build.0 = Release|x64 {F6520D2C-BB8E-45BB-964B-F5D6A4318A89}.Release|x86.ActiveCfg = Release|Win32 diff --git a/XEngine_Source/XEngine_ModuleConfigure/XEngine_ModuleConfigure.vcxproj b/XEngine_Source/XEngine_ModuleConfigure/XEngine_ModuleConfigure.vcxproj index dcb4d51..c721427 100644 --- a/XEngine_Source/XEngine_ModuleConfigure/XEngine_ModuleConfigure.vcxproj +++ b/XEngine_Source/XEngine_ModuleConfigure/XEngine_ModuleConfigure.vcxproj @@ -1,10 +1,18 @@ + + Debug + ARM64 + Debug Win32 + + Release + ARM64 + Release Win32 @@ -45,6 +53,12 @@ v143 Unicode + + DynamicLibrary + true + v143 + Unicode + DynamicLibrary false @@ -52,6 +66,13 @@ true Unicode + + DynamicLibrary + false + v143 + true + Unicode + @@ -66,9 +87,15 @@ + + + + + + true @@ -84,11 +111,20 @@ true $(XEngine_Include);../XEngine_Depend/XEngine_Module/jsoncpp;$(IncludePath) + + true + $(XEngine_Include);../XEngine_Depend/XEngine_Module/jsoncpp;$(IncludePath) + false $(XEngine_Include);../XEngine_Depend/XEngine_Module/jsoncpp;$(IncludePath) $(XEngine_Lib64);$(LibraryPath) + + false + $(XEngine_Include);../XEngine_Depend/XEngine_Module/jsoncpp;$(IncludePath) + $(XEngine_LibArm64);$(LibraryPath) + Level3 @@ -152,6 +188,25 @@ XEngine_ModuleConfigure.def + + + Level3 + true + _DEBUG;XENGINEMODULECONFIGURE_EXPORTS;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + Use + pch.h + 4819 + stdcpp20 + stdc17 + + + Windows + true + false + XEngine_ModuleConfigure.def + + Level3 @@ -177,6 +232,31 @@ XEngine_ModuleConfigure.def + + + Level3 + true + true + true + NDEBUG;XENGINEMODULECONFIGURE_EXPORTS;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + Use + pch.h + MultiThreadedDLL + 4819 + /utf-8 %(AdditionalOptions) + stdcpp20 + stdc17 + + + Windows + true + true + true + false + XEngine_ModuleConfigure.def + + @@ -190,8 +270,10 @@ Create Create + Create Create Create + Create diff --git a/XEngine_Source/XEngine_ModuleConfigure/pch.h b/XEngine_Source/XEngine_ModuleConfigure/pch.h index e4091ee..0458e69 100644 --- a/XEngine_Source/XEngine_ModuleConfigure/pch.h +++ b/XEngine_Source/XEngine_ModuleConfigure/pch.h @@ -40,16 +40,20 @@ extern XLONG Config_dwErrorCode; #ifdef _MSC_BUILD #ifdef _DEBUG -#ifdef _WIN64 -#pragma comment(lib,"../x64/Debug/jsoncpp") -#else -#pragma comment(lib,"../Debug/jsoncpp") +#ifdef _M_X64 +#pragma comment(lib,"../x64/Debug/jsoncpp.lib") +#elif _M_ARM64 +#pragma comment(lib,"../ARM64/Debug/jsoncpp.lib") +#elif _M_IX86 +#pragma comment(lib,"../Debug/jsoncpp.lib") #endif #else -#ifdef _WIN64 -#pragma comment(lib,"../x64/Release/jsoncpp") -#else -#pragma comment(lib,"../Release/jsoncpp") +#ifdef _M_X64 +#pragma comment(lib,"../x64/Release/jsoncpp.lib") +#elif _M_ARM64 +#pragma comment(lib,"../ARM64/Release/jsoncpp.lib") +#elif _M_IX86 +#pragma comment(lib,"../Release/jsoncpp.lib") #endif #endif #endif \ No newline at end of file diff --git a/XEngine_Source/XEngine_ModuleHelp/XEngine_ModuleHelp.vcxproj b/XEngine_Source/XEngine_ModuleHelp/XEngine_ModuleHelp.vcxproj index 3a7ef3d..9e78bb0 100644 --- a/XEngine_Source/XEngine_ModuleHelp/XEngine_ModuleHelp.vcxproj +++ b/XEngine_Source/XEngine_ModuleHelp/XEngine_ModuleHelp.vcxproj @@ -1,10 +1,18 @@ + + Debug + ARM64 + Debug Win32 + + Release + ARM64 + Release Win32 @@ -45,6 +53,12 @@ v143 Unicode + + DynamicLibrary + true + v143 + Unicode + DynamicLibrary false @@ -52,6 +66,13 @@ true Unicode + + DynamicLibrary + false + v143 + true + Unicode + @@ -66,9 +87,15 @@ + + + + + + true @@ -85,11 +112,21 @@ $(XEngine_Include);../XEngine_ThirdPart/opencc/include;$(IncludePath) $(XEngine_Lib64);$(LibraryPath) + + true + $(XEngine_Include);../XEngine_ThirdPart/opencc/include;$(IncludePath) + $(XEngine_LibArm64);$(LibraryPath) + false $(XEngine_Include);../XEngine_ThirdPart/opencc/include;$(IncludePath) $(XEngine_Lib64);$(LibraryPath) + + false + $(XEngine_Include);../XEngine_ThirdPart/opencc/include;$(IncludePath) + $(XEngine_LibArm64);$(LibraryPath) + false @@ -156,6 +193,24 @@ XEngine_ModuleHelp.def + + + Level3 + true + _DEBUG;XENGINEMODULEHELP_EXPORTS;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + Use + pch.h + stdcpp20 + stdc17 + + + Windows + true + false + XEngine_ModuleHelp.def + + Level3 @@ -179,6 +234,29 @@ XEngine_ModuleHelp.def + + + Level3 + true + true + true + NDEBUG;XENGINEMODULEHELP_EXPORTS;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + Use + pch.h + /utf-8 %(AdditionalOptions) + stdcpp20 + stdc17 + + + Windows + true + true + true + false + XEngine_ModuleHelp.def + + @@ -200,8 +278,10 @@ Create Create + Create Create Create + Create diff --git a/XEngine_Source/XEngine_ModuleProtocol/XEngine_ModuleProtocol.vcxproj b/XEngine_Source/XEngine_ModuleProtocol/XEngine_ModuleProtocol.vcxproj index f9b13fe..932b5f3 100644 --- a/XEngine_Source/XEngine_ModuleProtocol/XEngine_ModuleProtocol.vcxproj +++ b/XEngine_Source/XEngine_ModuleProtocol/XEngine_ModuleProtocol.vcxproj @@ -1,10 +1,18 @@ + + Debug + ARM64 + Debug Win32 + + Release + ARM64 + Release Win32 @@ -45,6 +53,12 @@ v143 Unicode + + DynamicLibrary + true + v143 + Unicode + DynamicLibrary false @@ -52,6 +66,13 @@ true Unicode + + DynamicLibrary + false + v143 + true + Unicode + @@ -66,9 +87,15 @@ + + + + + + true @@ -85,11 +112,21 @@ $(XEngine_Include);../XEngine_Depend/XEngine_Module/jsoncpp;$(IncludePath) $(XEngine_Lib64);$(LibraryPath) + + true + $(XEngine_Include);../XEngine_Depend/XEngine_Module/jsoncpp;$(IncludePath) + $(XEngine_LibArm64);$(LibraryPath) + false $(XEngine_Include);../XEngine_Depend/XEngine_Module/jsoncpp;$(IncludePath) $(XEngine_Lib64);$(LibraryPath) + + false + $(XEngine_Include);../XEngine_Depend/XEngine_Module/jsoncpp;$(IncludePath) + $(XEngine_LibArm64);$(LibraryPath) + Level3 @@ -149,6 +186,24 @@ XEngine_ModuleProtocol.def + + + Level3 + true + _DEBUG;XENGINEMODULEPROTOCOL_EXPORTS;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + Use + pch.h + stdcpp20 + stdc17 + + + Windows + true + false + XEngine_ModuleProtocol.def + + Level3 @@ -172,6 +227,29 @@ XEngine_ModuleProtocol.def + + + Level3 + true + true + true + NDEBUG;XENGINEMODULEPROTOCOL_EXPORTS;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + Use + pch.h + /utf-8 %(AdditionalOptions) + stdcpp20 + stdc17 + + + Windows + true + true + true + false + XEngine_ModuleProtocol.def + + @@ -187,8 +265,10 @@ Create Create + Create Create Create + Create diff --git a/XEngine_Source/XEngine_ModuleProtocol/pch.h b/XEngine_Source/XEngine_ModuleProtocol/pch.h index fb09612..3ee5b0b 100644 --- a/XEngine_Source/XEngine_ModuleProtocol/pch.h +++ b/XEngine_Source/XEngine_ModuleProtocol/pch.h @@ -40,16 +40,20 @@ extern XLONG ModuleProtocol_dwErrorCode; #ifdef _MSC_BUILD #ifdef _DEBUG -#ifdef _WIN64 -#pragma comment(lib,"../x64/Debug/jsoncpp") -#else -#pragma comment(lib,"../Debug/jsoncpp") +#ifdef _M_X64 +#pragma comment(lib,"../x64/Debug/jsoncpp.lib") +#elif _M_ARM64 +#pragma comment(lib,"../ARM64/Debug/jsoncpp.lib") +#elif _M_IX86 +#pragma comment(lib,"../Debug/jsoncpp.lib") #endif #else -#ifdef _WIN64 -#pragma comment(lib,"../x64/Release/jsoncpp") -#else -#pragma comment(lib,"../Release/jsoncpp") +#ifdef _M_X64 +#pragma comment(lib,"../x64/Release/jsoncpp.lib") +#elif _M_ARM64 +#pragma comment(lib,"../ARM64/Release/jsoncpp.lib") +#elif _M_IX86 +#pragma comment(lib,"../Release/jsoncpp.lib") #endif #endif #endif \ No newline at end of file diff --git a/XEngine_Source/XEngine_ModuleQueue/XEngine_ModuleQueue.vcxproj b/XEngine_Source/XEngine_ModuleQueue/XEngine_ModuleQueue.vcxproj index 88d660d..ac67acc 100644 --- a/XEngine_Source/XEngine_ModuleQueue/XEngine_ModuleQueue.vcxproj +++ b/XEngine_Source/XEngine_ModuleQueue/XEngine_ModuleQueue.vcxproj @@ -1,10 +1,18 @@ + + Debug + ARM64 + Debug Win32 + + Release + ARM64 + Release Win32 @@ -45,6 +53,12 @@ v143 Unicode + + DynamicLibrary + true + v143 + Unicode + DynamicLibrary false @@ -52,6 +66,13 @@ true Unicode + + DynamicLibrary + false + v143 + true + Unicode + @@ -66,9 +87,15 @@ + + + + + + $(XEngine_Include);$(IncludePath) @@ -79,9 +106,15 @@ $(XEngine_Include);$(IncludePath) + + $(XEngine_Include);$(IncludePath) + $(XEngine_Include);$(IncludePath) + + $(XEngine_Include);$(IncludePath) + Level3 @@ -141,6 +174,24 @@ XEngine_ModuleQueue.def + + + Level3 + true + _DEBUG;XENGINEMODULEQUEUE_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + true + Use + pch.h + stdcpp20 + stdc17 + + + Windows + true + false + XEngine_ModuleQueue.def + + Level3 @@ -164,6 +215,29 @@ XEngine_ModuleQueue.def + + + Level3 + true + true + true + NDEBUG;XENGINEMODULEQUEUE_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + true + Use + pch.h + /utf-8 %(AdditionalOptions) + stdcpp20 + stdc17 + + + Windows + true + true + true + false + XEngine_ModuleQueue.def + + @@ -177,8 +251,10 @@ Create Create + Create Create Create + Create diff --git a/XEngine_Source/XEngine_ModuleSession/XEngine_ModuleSession.vcxproj b/XEngine_Source/XEngine_ModuleSession/XEngine_ModuleSession.vcxproj index a54ebd3..413b10e 100644 --- a/XEngine_Source/XEngine_ModuleSession/XEngine_ModuleSession.vcxproj +++ b/XEngine_Source/XEngine_ModuleSession/XEngine_ModuleSession.vcxproj @@ -1,10 +1,18 @@ + + Debug + ARM64 + Debug Win32 + + Release + ARM64 + Release Win32 @@ -45,6 +53,12 @@ v143 Unicode + + DynamicLibrary + true + v143 + Unicode + DynamicLibrary false @@ -52,6 +66,13 @@ true Unicode + + DynamicLibrary + false + v143 + true + Unicode + @@ -66,9 +87,15 @@ + + + + + + true @@ -85,11 +112,21 @@ $(XEngine_Include);$(IncludePath) $(XEngine_Lib64);$(LibraryPath) + + true + $(XEngine_Include);$(IncludePath) + $(XEngine_LibArm64);$(LibraryPath) + false $(XEngine_Include);$(IncludePath) $(XEngine_Lib64);$(LibraryPath) + + false + $(XEngine_Include);$(IncludePath) + $(XEngine_LibArm64);$(LibraryPath) + Level3 @@ -149,6 +186,24 @@ XEngine_ModuleSession.def + + + Level3 + true + _DEBUG;XENGINEMODULESESSION_EXPORTS;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + Use + pch.h + stdcpp20 + stdc17 + + + Windows + true + false + XEngine_ModuleSession.def + + Level3 @@ -172,6 +227,29 @@ XEngine_ModuleSession.def + + + Level3 + true + true + true + NDEBUG;XENGINEMODULESESSION_EXPORTS;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + Use + pch.h + /utf-8 %(AdditionalOptions) + stdcpp20 + stdc17 + + + Windows + true + true + true + false + XEngine_ModuleSession.def + + @@ -187,8 +265,10 @@ Create Create + Create Create Create + Create diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_Hdr.h b/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_Hdr.h index 326061b..209da29 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_Hdr.h +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_Hdr.h @@ -145,41 +145,11 @@ extern XENGINE_SERVICECONFIG st_ServiceConfig; extern FILE* pSt_VFile; extern FILE* pSt_AFile; + //连接库 #ifdef _MSC_BUILD -#ifdef _WIN64 -#ifdef _DEBUG -#pragma comment(lib,"../../x64/Debug/XEngine_ModuleConfigure.lib") -#pragma comment(lib,"../../x64/Debug/XEngine_ModuleProtocol.lib") -#pragma comment(lib,"../../x64/Debug/XEngine_ModuleSession.lib") -#pragma comment(lib,"../../x64/Debug/XEngine_ModuleHelp") -#pragma comment(lib,"../../x64/Debug/XEngine_ModuleQueue") -#pragma comment(lib,"../../x64/Debug/XEngine_InfoReport") -#else -#pragma comment(lib,"../../x64/Release/XEngine_ModuleConfigure.lib") -#pragma comment(lib,"../../x64/Release/XEngine_ModuleProtocol.lib") -#pragma comment(lib,"../../x64/Release/XEngine_ModuleSession.lib") -#pragma comment(lib,"../../x64/Release/XEngine_ModuleHelp") -#pragma comment(lib,"../../x64/Release/XEngine_ModuleQueue") -#pragma comment(lib,"../../x64/Release/XEngine_InfoReport") -#endif -#else -#ifdef _DEBUG -#pragma comment(lib,"../../Debug/XEngine_ModuleConfigure.lib") -#pragma comment(lib,"../../Debug/XEngine_ModuleProtocol.lib") -#pragma comment(lib,"../../Debug/XEngine_ModuleSession.lib") -#pragma comment(lib,"../../Debug/XEngine_ModuleHelp") -#pragma comment(lib,"../../Debug/XEngine_ModuleQueue") -#pragma comment(lib,"../../Debug/XEngine_InfoReport") -#else -#pragma comment(lib,"../../Release/XEngine_ModuleConfigure.lib") -#pragma comment(lib,"../../Release/XEngine_ModuleProtocol.lib") -#pragma comment(lib,"../../Release/XEngine_ModuleSession.lib") -#pragma comment(lib,"../../Release/XEngine_ModuleHelp") -#pragma comment(lib,"../../Release/XEngine_ModuleQueue") -#pragma comment(lib,"../../Release/XEngine_InfoReport") -#endif -#endif +#pragma comment(lib,"Ws2_32.lib") +#pragma comment(lib,"Dbghelp.lib") #pragma comment(lib,"XEngine_BaseLib/XEngine_BaseLib.lib") #pragma comment(lib,"XEngine_Core/XEngine_Core.lib") #pragma comment(lib,"XEngine_Core/XEngine_ManagePool.lib") @@ -201,6 +171,50 @@ extern FILE* pSt_AFile; #pragma comment(lib,"XEngine_AVCodec/XEngine_AVHelp.lib") #pragma comment(lib,"XEngine_AVCodec/XEngine_AudioCodec.lib") #pragma comment(lib,"XEngine_SystemSdk/XEngine_SystemApi.lib") -#pragma comment(lib,"Ws2_32.lib") -#pragma comment(lib,"Dbghelp.lib") +#ifdef _DEBUG +#ifdef _M_X64 +#pragma comment(lib,"../../x64/Debug/XEngine_ModuleConfigure.lib") +#pragma comment(lib,"../../x64/Debug/XEngine_ModuleProtocol.lib") +#pragma comment(lib,"../../x64/Debug/XEngine_ModuleSession.lib") +#pragma comment(lib,"../../x64/Debug/XEngine_ModuleHelp") +#pragma comment(lib,"../../x64/Debug/XEngine_ModuleQueue") +#pragma comment(lib,"../../x64/Debug/XEngine_InfoReport") +#elif _M_ARM64 +#pragma comment(lib,"../../ARM64/Debug/XEngine_ModuleConfigure.lib") +#pragma comment(lib,"../../ARM64/Debug/XEngine_ModuleProtocol.lib") +#pragma comment(lib,"../../ARM64/Debug/XEngine_ModuleSession.lib") +#pragma comment(lib,"../../ARM64/Debug/XEngine_ModuleHelp") +#pragma comment(lib,"../../ARM64/Debug/XEngine_ModuleQueue") +#pragma comment(lib,"../../ARM64/Debug/XEngine_InfoReport") +#elif _M_IX86 +#pragma comment(lib,"../../Debug/XEngine_ModuleConfigure.lib") +#pragma comment(lib,"../../Debug/XEngine_ModuleProtocol.lib") +#pragma comment(lib,"../../Debug/XEngine_ModuleSession.lib") +#pragma comment(lib,"../../Debug/XEngine_ModuleHelp") +#pragma comment(lib,"../../Debug/XEngine_ModuleQueue") +#pragma comment(lib,"../../Debug/XEngine_InfoReport") +#endif +#else +#ifdef _M_X64 +#pragma comment(lib,"../../x64/Release/XEngine_ModuleConfigure.lib") +#pragma comment(lib,"../../x64/Release/XEngine_ModuleProtocol.lib") +#pragma comment(lib,"../../x64/Release/XEngine_ModuleSession.lib") +#pragma comment(lib,"../../x64/Release/XEngine_ModuleHelp") +#pragma comment(lib,"../../x64/Release/XEngine_ModuleQueue") +#pragma comment(lib,"../../x64/Release/XEngine_InfoReport") +#elif _M_ARM64 +#pragma comment(lib,"../../ARM64/Release/XEngine_ModuleConfigure.lib") +#pragma comment(lib,"../../ARM64/Release/XEngine_ModuleProtocol.lib") +#pragma comment(lib,"../../ARM64/Release/XEngine_ModuleSession.lib") +#pragma comment(lib,"../../ARM64/Release/XEngine_ModuleHelp") +#pragma comment(lib,"../../ARM64/Release/XEngine_ModuleQueue") +#pragma comment(lib,"../../ARM64/Release/XEngine_InfoReport") +#elif _M_IX86 +#pragma comment(lib,"../../Release/XEngine_ModuleConfigure.lib") +#pragma comment(lib,"../../Release/XEngine_ModuleProtocol.lib") +#pragma comment(lib,"../../Release/XEngine_ModuleSession.lib") +#pragma comment(lib,"../../Release/XEngine_ModuleHelp") +#pragma comment(lib,"../../Release/XEngine_ModuleQueue") +#pragma comment(lib,"../../Release/XEngine_InfoReport") +#endif #endif \ No newline at end of file diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_StreamMediaApp.vcxproj b/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_StreamMediaApp.vcxproj index 67d6625..0ead0be 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_StreamMediaApp.vcxproj +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_StreamMediaApp.vcxproj @@ -1,10 +1,18 @@ + + Debug + ARM64 + Debug Win32 + + Release + ARM64 + Release Win32 @@ -45,6 +53,12 @@ v143 Unicode + + Application + true + v143 + Unicode + Application false @@ -52,6 +66,13 @@ true Unicode + + Application + false + v143 + true + Unicode + @@ -66,9 +87,15 @@ + + + + + + $(XEngine_Include);$(IncludePath) @@ -82,10 +109,18 @@ $(XEngine_Include);$(IncludePath) $(XEngine_Lib64);$(LibraryPath) + + $(XEngine_Include);$(IncludePath) + $(XEngine_LibArm64);$(LibraryPath) + $(XEngine_Include);$(IncludePath) $(XEngine_Lib64);$(LibraryPath) + + $(XEngine_Include);$(IncludePath) + $(XEngine_Lib64);$(LibraryPath) + false @@ -136,6 +171,20 @@ true + + + Level3 + true + _DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + stdcpp20 + stdc17 + + + Console + true + + Level3 @@ -155,6 +204,25 @@ true + + + Level3 + true + true + true + NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + /utf-8 %(AdditionalOptions) + stdcpp20 + stdc17 + + + Console + true + true + true + + From a6f91e78c3cb1c34392e86d43d670a36faf2cb05 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Tue, 25 Mar 2025 17:37:49 +0800 Subject: [PATCH 05/27] ci:add ubuntu arm64 ci:update release name fixed:build error --- .github/workflows/macbuild.yml | 4 ++-- .github/workflows/msbuild.yml | 6 +++--- .github/workflows/release.yml | 13 +++++++++++-- .../{ubuntubuild.yml => ubuntux86_64_build.yml} | 4 ++-- .../XEngine_StreamMediaApp/XEngine_Hdr.h | 1 + 5 files changed, 19 insertions(+), 9 deletions(-) rename .github/workflows/{ubuntubuild.yml => ubuntux86_64_build.yml} (96%) diff --git a/.github/workflows/macbuild.yml b/.github/workflows/macbuild.yml index f62b9b6..9088267 100644 --- a/.github/workflows/macbuild.yml +++ b/.github/workflows/macbuild.yml @@ -90,13 +90,13 @@ jobs: if: matrix.os == 'macos-13' uses: actions/upload-artifact@v4 with: - name: XEngine_StreamMediaApp-x86_64-Mac + name: XEngine_StreamMediaApp-Mac_x86_64 path: XEngine_Release/ retention-days: 1 - name: Upload folder as artifact with mac arm if: matrix.os == 'macos-14' uses: actions/upload-artifact@v4 with: - name: XEngine_StreamMediaApp-Arm64-Mac + name: XEngine_StreamMediaApp-Mac_Arm64 path: XEngine_Release/ retention-days: 1 \ No newline at end of file diff --git a/.github/workflows/msbuild.yml b/.github/workflows/msbuild.yml index 4acef15..7795dc7 100644 --- a/.github/workflows/msbuild.yml +++ b/.github/workflows/msbuild.yml @@ -145,7 +145,7 @@ jobs: if: matrix.configuration == 'Release' && matrix.platform == 'x86' uses: actions/upload-artifact@v4 with: - name: XEngine_StreamMediaApp-x86_32-Windows + name: XEngine_StreamMediaApp-Windows_x86_32 path: XEngine_Release/ retention-days: 1 @@ -153,13 +153,13 @@ jobs: if: matrix.configuration == 'Release' && matrix.platform == 'x64' uses: actions/upload-artifact@v4 with: - name: XEngine_StreamMediaApp-x86_64-Windows + name: XEngine_StreamMediaApp-Windows_x86_64 path: XEngine_Release/ retention-days: 1 - name: Upload folder as artifact with ARM64 if: matrix.configuration == 'Release' && matrix.platform == 'ARM64' uses: actions/upload-artifact@v4 with: - name: XEngine_StreamMediaApp-Arm64-Windows + name: XEngine_StreamMediaApp-Windows_Arm64 path: XEngine_Release/ retention-days: 1 \ No newline at end of file diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 0c200df..0407b3d 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -15,10 +15,19 @@ jobs: with: fetch-depth: 0 - - name: Download ubuntubuild + - name: Download x86_64 ubuntubuild uses: dawidd6/action-download-artifact@v6 with: - workflow: ubuntubuild.yml + workflow: ubuntux86_64_build.yml + workflow_conclusion: success + check_artifacts: false + skip_unpack: true + if_no_artifact_found: fail + path: ./XRelease/ + - name: Download Arm64 ubuntubuild + uses: dawidd6/action-download-artifact@v6 + with: + workflow: UbuntuArm64_build.yml workflow_conclusion: success check_artifacts: false skip_unpack: true diff --git a/.github/workflows/ubuntubuild.yml b/.github/workflows/ubuntux86_64_build.yml similarity index 96% rename from .github/workflows/ubuntubuild.yml rename to .github/workflows/ubuntux86_64_build.yml index 77d5d9f..3516963 100644 --- a/.github/workflows/ubuntubuild.yml +++ b/.github/workflows/ubuntux86_64_build.yml @@ -87,13 +87,13 @@ jobs: if: matrix.os == 'ubuntu-22.04' uses: actions/upload-artifact@v4 with: - name: XEngine_StreamMediaApp-x86_64-Ubuntu-22.04 + name: XEngine_StreamMediaApp-Ubuntu_22.04_x86_64 path: XEngine_Release/ retention-days: 1 - name: Upload folder as artifact with ubuntu24.04 if: matrix.os == 'ubuntu-24.04' uses: actions/upload-artifact@v4 with: - name: XEngine_StreamMediaApp-x86_64-Ubuntu-24.04 + name: XEngine_StreamMediaApp-Ubuntu_24.04_x86_64 path: XEngine_Release/ retention-days: 1 \ No newline at end of file diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_Hdr.h b/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_Hdr.h index 209da29..0d7d497 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_Hdr.h +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_Hdr.h @@ -217,4 +217,5 @@ extern FILE* pSt_AFile; #pragma comment(lib,"../../Release/XEngine_ModuleQueue") #pragma comment(lib,"../../Release/XEngine_InfoReport") #endif +#endif #endif \ No newline at end of file From 9d3a02cad898461a86727034c4a6c117f184cc4a Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Tue, 25 Mar 2025 18:00:03 +0800 Subject: [PATCH 06/27] fixed:build error --- .github/workflows/RockyX86_64_build.yml | 84 +++++++++++++++++++++++++ .github/workflows/UbuntuArm64_build.yml | 75 ++++++++++++++++++++++ 2 files changed, 159 insertions(+) create mode 100644 .github/workflows/RockyX86_64_build.yml create mode 100644 .github/workflows/UbuntuArm64_build.yml diff --git a/.github/workflows/RockyX86_64_build.yml b/.github/workflows/RockyX86_64_build.yml new file mode 100644 index 0000000..5d9c47a --- /dev/null +++ b/.github/workflows/RockyX86_64_build.yml @@ -0,0 +1,84 @@ +name: rocky x86_64 build workflows + +on: + push: + branches: + - 'develop' + paths: + - 'XEngine_Source/**' + - 'XEngine_Release/**' + - '.github/**' + +permissions: + contents: read + +jobs: + build: + runs-on: ubuntu-latest + container: + image: rockylinux/rockylinux:9.5 + + steps: + # 检出您的主仓库代码 + - name: Checkout main repository code + uses: actions/checkout@v4 + with: + ref: 'develop' + + # 检出依赖的xengine仓库到指定的xengine目录 + - name: Checkout dependency repository (xengine) + uses: actions/checkout@v4 + with: + repository: libxengine/libxengine + path: libxengine + + - name: sub module checkout (opensource) + uses: actions/checkout@v4 + with: + repository: libxengine/XEngine_OPenSource + path: XEngine_Source/XEngine_Depend + + - name: install system package + run: | + dnf update -y + dnf install gcc g++ make git jq unzip -y + dnf install libsrtp-devel libsrt-devel -y + # 设置依赖库的环境变量 + - name: Set up Dependency rocky linux Environment + run: | + cd libxengine + chmod 777 * + ./XEngine_LINEnv.sh -i 0 + - name: install xengine library + run: | + latest_tag=$(curl -s https://api.github.com/repos/libxengine/libxengine/releases/latest | jq -r .tag_name) + wget https://github.com/libxengine/libxengine/releases/download/$latest_tag/XEngine_RockyLinux_9_x86-64.zip + unzip ./XEngine_RockyLinux_9_x86-64.zip -d ./XEngine_RockyLinux_9_x86-64 + cd XEngine_RockyLinux_9_x86-64 + + cp -rf ./XEngine_Include /usr/local/include + find ./XEngine_Linux -name "*.so" -exec cp {} /usr/lib64 \; + ldconfig + + - name: make + run: | + cd XEngine_Source + make + make FLAGS=InstallAll + make FLAGS=CleanAll + + make RELEASE=1 + make FLAGS=InstallAll + make FLAGS=CleanAll + + - name: test + run: | + cd XEngine_Release + ./XEngine_StreamMediaApp -t + + - name: Upload folder as artifact with RockyLinux + uses: actions/upload-artifact@v4 + with: + name: XEngine_StreamMediaApp-RockyLinux_9_x86_64 + path: XEngine_Release/ + retention-days: 1 diff --git a/.github/workflows/UbuntuArm64_build.yml b/.github/workflows/UbuntuArm64_build.yml new file mode 100644 index 0000000..f564013 --- /dev/null +++ b/.github/workflows/UbuntuArm64_build.yml @@ -0,0 +1,75 @@ +name: ubuntu Arm64 build workflows + +on: + push: + branches: + - 'develop' + paths: + - 'XEngine_Source/**' + - 'XEngine_Release/**' + - '.github/**' + +jobs: + build: + runs-on: ubuntu-24.04 + env: + IMAGE_NAME: ubuntu:24.04 + + strategy: + fail-fast: false + matrix: + arch: [linux/arm64] + + steps: + - name: Checkout main repository code + uses: actions/checkout@v4 + with: + ref: 'develop' + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Build ${{ matrix.arch }} + run: | + docker run --platform ${{ matrix.arch }} --rm \ + -v ${{ github.workspace }}:/workspace \ + -w /workspace ${{ env.IMAGE_NAME }} /bin/sh -c ' + set -e + apt update -y + apt install git make g++ wget curl jq unzip -y + apt install libsrt-gnutls-dev libsrtp2-dev -y + + git config --global --add safe.directory /workspace + git submodule init + git submodule update + + latest_tag=$(curl -s https://api.github.com/repos/libxengine/libxengine/releases/latest | jq -r .tag_name) + wget https://github.com/libxengine/libxengine/releases/download/$latest_tag/XEngine_UBuntu_24.04_Arm64.zip + unzip ./XEngine_UBuntu_24.04_Arm64.zip -d ./XEngine_UBuntu_24.04_Arm64 + cd XEngine_UBuntu_24.04_Arm64 + + chmod 777 ./XEngine_LINEnv.sh + ./XEngine_LINEnv.sh -i 0 + + cp -rf ./XEngine_Include /usr/local/include + find ./XEngine_Linux -name "*.so" -exec cp {} /usr/local/lib \; + ldconfig + cd .. + + cd XEngine_Source + make ARCH=Arm64 RELEASE=1 + make FLAGS=InstallAll + make FLAGS=CleanAll + cd .. + + cd XEngine_Release + ./XEngine_StreamMediaApp -t + chown -R $(id -u):$(id -g) . + chmod -R a+r . ' + + - name: Upload folder as artifact with ubuntu Arm64 + uses: actions/upload-artifact@v4 + with: + name: XEngine_StreamMediaApp-Ubuntu_24.04_Arm64 + path: XEngine_Release/ + retention-days: 1 \ No newline at end of file From d0b7d392b58be735b2aa31d74cc2693466c53085 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Thu, 27 Mar 2025 10:07:44 +0800 Subject: [PATCH 07/27] fixed:build error --- .../XEngine_StreamMediaApp/XEngine_StreamMediaApp.vcxproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_StreamMediaApp.vcxproj b/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_StreamMediaApp.vcxproj index 0ead0be..5f627b0 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_StreamMediaApp.vcxproj +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_StreamMediaApp.vcxproj @@ -119,7 +119,7 @@ $(XEngine_Include);$(IncludePath) - $(XEngine_Lib64);$(LibraryPath) + $(XEngine_LibArm64);$(LibraryPath) false From 03c72b72b4d6d749d4b667448d5cd3f6c4a57d4a Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Thu, 27 Mar 2025 11:09:54 +0800 Subject: [PATCH 08/27] ci:rockylinux build support --- .github/workflows/RockyArm64_build.yml | 80 +++++++++++++++++++++++++ .github/workflows/RockyX86_64_build.yml | 7 ++- 2 files changed, 84 insertions(+), 3 deletions(-) create mode 100644 .github/workflows/RockyArm64_build.yml diff --git a/.github/workflows/RockyArm64_build.yml b/.github/workflows/RockyArm64_build.yml new file mode 100644 index 0000000..c364c69 --- /dev/null +++ b/.github/workflows/RockyArm64_build.yml @@ -0,0 +1,80 @@ +name: rocky Arm64 build workflows + +on: + push: + branches: + - 'develop' + paths: + - 'XEngine_Source/**' + - 'XEngine_Release/**' + - '.github/**' + +permissions: + contents: read + +jobs: + build: + runs-on: ubuntu-24.04 + env: + IMAGE_NAME: rockylinux/rockylinux:9.5 + + strategy: + fail-fast: false + matrix: + arch: [linux/arm64] + + steps: + # 检出您的主仓库代码 + - name: Checkout main repository code + uses: actions/checkout@v4 + with: + ref: 'develop' + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Build ${{ matrix.arch }} + run: | + docker run --platform ${{ matrix.arch }} --rm \ + -v ${{ github.workspace }}:/workspace \ + -w /workspace ${{ env.IMAGE_NAME }} /bin/sh -c ' + set -e + dnf update -y + dnf install --allowerasing git make g++ wget curl jq unzip -y + + git config --global --add safe.directory /workspace + git submodule init + git submodule update + + latest_tag=$(curl -s https://api.github.com/repos/libxengine/libxengine/releases/latest | jq -r .tag_name) + wget https://github.com/libxengine/libxengine/releases/download/$latest_tag/XEngine_RockyLinux_9_Arm64.zip + unzip ./XEngine_RockyLinux_9_Arm64.zip -d ./XEngine_RockyLinux_9_Arm64 + cd XEngine_RockyLinux_9_Arm64 + + chmod 777 ./XEngine_LINEnv.sh + ./XEngine_LINEnv.sh -i 0 + + dnf install libsrtp-devel srt-devel -y + + cp -rf ./XEngine_Include /usr/local/include + find ./XEngine_Linux -name "*.so" -exec cp {} /usr/lib64 \; + ldconfig + cd .. + + cd XEngine_Source + make ARCH=Arm64 RELEASE=1 + make FLAGS=InstallAll + make FLAGS=CleanAll + cd .. + + cd XEngine_Release + ./XEngine_ProxyServiceApp -t + chown -R $(id -u):$(id -g) . + chmod -R a+r . ' + + - name: Upload folder as artifact with RockyLinux + uses: actions/upload-artifact@v4 + with: + name: XEngine_ProxyServiceApp-RockyLinux_9_Arm64 + path: XEngine_Release/ + retention-days: 1 diff --git a/.github/workflows/RockyX86_64_build.yml b/.github/workflows/RockyX86_64_build.yml index 5d9c47a..eb479b5 100644 --- a/.github/workflows/RockyX86_64_build.yml +++ b/.github/workflows/RockyX86_64_build.yml @@ -37,18 +37,19 @@ jobs: with: repository: libxengine/XEngine_OPenSource path: XEngine_Source/XEngine_Depend - + - name: install system package run: | - dnf update -y + dnf update dnf install gcc g++ make git jq unzip -y - dnf install libsrtp-devel libsrt-devel -y # 设置依赖库的环境变量 - name: Set up Dependency rocky linux Environment run: | cd libxengine chmod 777 * ./XEngine_LINEnv.sh -i 0 + dnf install libsrtp-devel srt-devel -y + - name: install xengine library run: | latest_tag=$(curl -s https://api.github.com/repos/libxengine/libxengine/releases/latest | jq -r .tag_name) From 5b954cd86502f326942556d3cdf8b442d1dd1105 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Thu, 27 Mar 2025 11:24:32 +0800 Subject: [PATCH 09/27] ci:build fix --- .github/workflows/RockyX86_64_build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/RockyX86_64_build.yml b/.github/workflows/RockyX86_64_build.yml index eb479b5..de5c3a7 100644 --- a/.github/workflows/RockyX86_64_build.yml +++ b/.github/workflows/RockyX86_64_build.yml @@ -40,7 +40,7 @@ jobs: - name: install system package run: | - dnf update + dnf update -y dnf install gcc g++ make git jq unzip -y # 设置依赖库的环境变量 - name: Set up Dependency rocky linux Environment From db5ac7f58c70299e03659907d2bf9385b352d873 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Thu, 27 Mar 2025 14:06:09 +0800 Subject: [PATCH 10/27] fixed:rockylinux build --- .github/workflows/macbuild.yml | 4 +--- .github/workflows/release.yml | 22 ++++++++++++++++++++-- XEngine_Source/XEngine_ModuleHelp/Makefile | 7 ++++++- 3 files changed, 27 insertions(+), 6 deletions(-) diff --git a/.github/workflows/macbuild.yml b/.github/workflows/macbuild.yml index 9088267..df00f1a 100644 --- a/.github/workflows/macbuild.yml +++ b/.github/workflows/macbuild.yml @@ -80,11 +80,9 @@ jobs: make PLATFORM=mac FLAGS=InstallAll make PLATFORM=mac FLAGS=CleanAll - - name: test (srt bug on macos-arm64,not run) - if: matrix.os == 'macos-13' + - name: test (srt bug on macos,not run) run: | cd XEngine_Release - ./XEngine_StreamMediaApp -t - name: Upload folder as artifact with mac x64 if: matrix.os == 'macos-13' diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 0407b3d..434cafc 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -15,7 +15,7 @@ jobs: with: fetch-depth: 0 - - name: Download x86_64 ubuntubuild + - name: Download x86_64 ubuntu build uses: dawidd6/action-download-artifact@v6 with: workflow: ubuntux86_64_build.yml @@ -24,7 +24,7 @@ jobs: skip_unpack: true if_no_artifact_found: fail path: ./XRelease/ - - name: Download Arm64 ubuntubuild + - name: Download Arm64 ubuntu build uses: dawidd6/action-download-artifact@v6 with: workflow: UbuntuArm64_build.yml @@ -33,6 +33,24 @@ jobs: skip_unpack: true if_no_artifact_found: fail path: ./XRelease/ + - name: Download x86_64 rockylinux build + uses: dawidd6/action-download-artifact@v6 + with: + workflow: RockyX86_64_build.yml + workflow_conclusion: success + check_artifacts: false + skip_unpack: true + if_no_artifact_found: fail + path: ./XRelease/ + - name: Download Arm64 rockylinux build + uses: dawidd6/action-download-artifact@v6 + with: + workflow: RockyArm64_build.yml + workflow_conclusion: success + check_artifacts: false + skip_unpack: true + if_no_artifact_found: fail + path: ./XRelease/ - name: Download macbuild uses: dawidd6/action-download-artifact@v6 with: diff --git a/XEngine_Source/XEngine_ModuleHelp/Makefile b/XEngine_Source/XEngine_ModuleHelp/Makefile index 10a5555..6b5ec21 100644 --- a/XEngine_Source/XEngine_ModuleHelp/Makefile +++ b/XEngine_Source/XEngine_ModuleHelp/Makefile @@ -19,7 +19,12 @@ ifeq ($(MACRO_SRT_SUPPORT),1) ifeq ($(PLATFORM),mac) LIB += -lsrt else - LIB += -lsrt-gnutls + ifeq (/etc/redhat-release,$(wildcard /etc/redhat-release)) + LIB += -lsrt + else + LIB += -lsrt-gnutls + endif + endif endif ifeq ($(MACRO_RTC_SUPPORT),1) From b85f9b3f5219622e96674473376db5b359433464 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Fri, 28 Mar 2025 11:10:24 +0800 Subject: [PATCH 11/27] ci:fixed rocky linux --- .github/workflows/RockyArm64_build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/RockyArm64_build.yml b/.github/workflows/RockyArm64_build.yml index c364c69..a07eaa0 100644 --- a/.github/workflows/RockyArm64_build.yml +++ b/.github/workflows/RockyArm64_build.yml @@ -68,13 +68,13 @@ jobs: cd .. cd XEngine_Release - ./XEngine_ProxyServiceApp -t + ./XEngine_StreamMediaApp -t chown -R $(id -u):$(id -g) . chmod -R a+r . ' - name: Upload folder as artifact with RockyLinux uses: actions/upload-artifact@v4 with: - name: XEngine_ProxyServiceApp-RockyLinux_9_Arm64 + name: XEngine_StreamMediaApp-RockyLinux_9_Arm64 path: XEngine_Release/ retention-days: 1 From c967286d39fbebec97df55287c61f0654bf430ad Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Fri, 28 Mar 2025 15:48:52 +0800 Subject: [PATCH 12/27] fixed:reply error when strema not found for rtmp with play --- XEngine_Source/VSCopy_Debug.bat | 4 +- .../PushStream_RTMPTask.cpp | 99 ++++++++++++------- 2 files changed, 68 insertions(+), 35 deletions(-) diff --git a/XEngine_Source/VSCopy_Debug.bat b/XEngine_Source/VSCopy_Debug.bat index 2ef0427..0380452 100644 --- a/XEngine_Source/VSCopy_Debug.bat +++ b/XEngine_Source/VSCopy_Debug.bat @@ -1,9 +1,9 @@ copy /y "D:\XEngine\XEngine_SourceCode\Debug\XEngine_BaseLib.dll" "./" copy /y "D:\XEngine\XEngine_SourceCode\Debug\XEngine_BaseSafe.dll" "./" copy /y "D:\XEngine\XEngine_SourceCode\Debug\XEngine_Algorithm.dll" "./" -copy /y "D:\XEngine\XEngine_SourceCode\Debug\XEngine_Cryption.dll" "./" +copy /y "D:\XEngine\XEngine_SourceCode\Debug\XEngine_Core.dll" "./" copy /y "D:\XEngine\XEngine_SourceCode\Debug\XEngine_ManagePool.dll" "./" -copy /y "D:\XEngine\XEngine_SourceCode\Debug\XEngine_OPenSsl.dll" "./" +copy /y "D:\XEngine\XEngine_SourceCode\Debug\XEngine_Cryption.dll" "./" copy /y "D:\XEngine\XEngine_SourceCode\Debug\XClient_Stream.dll" "./" copy /y "D:\XEngine\XEngine_SourceCode\Debug\XClient_APIHelp.dll" "./" diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PushStream/PushStream_RTMPTask.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PushStream/PushStream_RTMPTask.cpp index 71ab898..9283619 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PushStream/PushStream_RTMPTask.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PushStream/PushStream_RTMPTask.cpp @@ -349,41 +349,74 @@ bool PushStream_RTMPTask_Handle(XENGINE_RTMPHDR* pSt_RTMPHdr, LPCXSTR lpszClient memset(st_RTMPCommand.tszCMDName, '\0', sizeof(st_RTMPCommand.tszCMDName)); st_RTMPCommand.nProCount = 0; st_RTMPCommand.nObCount = 0; - //RTMP拉流端 - XENGINE_RTMPUSERCONTROL st_RTMPControl; - memset(&st_RTMPControl, '\0', sizeof(XENGINE_RTMPUSERCONTROL)); - - st_RTMPControl.nControlID = XENGINE_STREAMMEDIA_RTMP_CONTROL_STREAMBEGIN; - st_RTMPControl.nValue32 = 1; - //流开始 - RTMPProtocol_Help_PKTUserControl(ptszSDBuffer, &nSDLen, &st_RTMPControl); - XEngine_Network_Send(lpszClientAddr, ptszSDBuffer, nSDLen, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_PUSH_RTMP); - //状态,有没有这个流 - st_RTMPCommand.nProCount = 3; - BaseLib_Memory_Malloc((XPPPMEM)&st_RTMPCommand.ppSt_CMDProperty, st_RTMPCommand.nProCount, sizeof(XENGINE_RTMPCMDPROPERTY)); - - strcpy(st_RTMPCommand.tszCMDName, XENGINE_STREAMMEDIA_RTMP_COMMAND_ONSTATUS); - - _tcsxcpy(st_RTMPCommand.ppSt_CMDProperty[0]->tszKeyBuffer, "level"); - st_RTMPCommand.ppSt_CMDProperty[0]->st_CMDOBJect.byType = XENGINE_STREAMMEDIA_RTMP_PLTYPE_AFM0_STRING; - st_RTMPCommand.ppSt_CMDProperty[0]->st_CMDOBJect.nMLen = 6; - _tcsxcpy(st_RTMPCommand.ppSt_CMDProperty[0]->st_CMDOBJect.tszMsgBuffer, "status"); - - _tcsxcpy(st_RTMPCommand.ppSt_CMDProperty[1]->tszKeyBuffer, "code"); - st_RTMPCommand.ppSt_CMDProperty[1]->st_CMDOBJect.byType = XENGINE_STREAMMEDIA_RTMP_PLTYPE_AFM0_STRING; - st_RTMPCommand.ppSt_CMDProperty[1]->st_CMDOBJect.nMLen = 23; - _tcsxcpy(st_RTMPCommand.ppSt_CMDProperty[1]->st_CMDOBJect.tszMsgBuffer, "NetStream.Publish.Start"); - - _tcsxcpy(st_RTMPCommand.ppSt_CMDProperty[2]->tszKeyBuffer, "description"); - st_RTMPCommand.ppSt_CMDProperty[2]->st_CMDOBJect.byType = XENGINE_STREAMMEDIA_RTMP_PLTYPE_AFM0_STRING; - st_RTMPCommand.ppSt_CMDProperty[2]->st_CMDOBJect.nMLen = 10; - _tcsxcpy(st_RTMPCommand.ppSt_CMDProperty[2]->st_CMDOBJect.tszMsgBuffer, "Start live"); - RTMPProtocol_Help_PKTCommand(ptszSDBuffer, &nSDLen, 5, &st_RTMPCommand); - XEngine_Network_Send(lpszClientAddr, ptszSDBuffer, nSDLen, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_PUSH_RTMP); //发送RTMP包头 - if (!ModuleSession_PushStream_FindStream(tszSMSAddr, tszPushAddr)) + if (ModuleSession_PushStream_FindStream(tszSMSAddr, tszPushAddr)) + { + //RTMP拉流端 + XENGINE_RTMPUSERCONTROL st_RTMPControl; + memset(&st_RTMPControl, '\0', sizeof(XENGINE_RTMPUSERCONTROL)); + + st_RTMPControl.nControlID = XENGINE_STREAMMEDIA_RTMP_CONTROL_STREAMBEGIN; + st_RTMPControl.nValue32 = 1; + //流开始 + RTMPProtocol_Help_PKTUserControl(ptszSDBuffer, &nSDLen, &st_RTMPControl); + XEngine_Network_Send(lpszClientAddr, ptszSDBuffer, nSDLen, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_PUSH_RTMP); + //状态,有没有这个流 + st_RTMPCommand.nProCount = 3; + BaseLib_Memory_Malloc((XPPPMEM)&st_RTMPCommand.ppSt_CMDProperty, st_RTMPCommand.nProCount, sizeof(XENGINE_RTMPCMDPROPERTY)); + + strcpy(st_RTMPCommand.tszCMDName, XENGINE_STREAMMEDIA_RTMP_COMMAND_ONSTATUS); + + _tcsxcpy(st_RTMPCommand.ppSt_CMDProperty[0]->tszKeyBuffer, "level"); + st_RTMPCommand.ppSt_CMDProperty[0]->st_CMDOBJect.byType = XENGINE_STREAMMEDIA_RTMP_PLTYPE_AFM0_STRING; + st_RTMPCommand.ppSt_CMDProperty[0]->st_CMDOBJect.nMLen = 6; + _tcsxcpy(st_RTMPCommand.ppSt_CMDProperty[0]->st_CMDOBJect.tszMsgBuffer, "status"); + + _tcsxcpy(st_RTMPCommand.ppSt_CMDProperty[1]->tszKeyBuffer, "code"); + st_RTMPCommand.ppSt_CMDProperty[1]->st_CMDOBJect.byType = XENGINE_STREAMMEDIA_RTMP_PLTYPE_AFM0_STRING; + st_RTMPCommand.ppSt_CMDProperty[1]->st_CMDOBJect.nMLen = 23; + _tcsxcpy(st_RTMPCommand.ppSt_CMDProperty[1]->st_CMDOBJect.tszMsgBuffer, "NetStream.Publish.Start"); + + _tcsxcpy(st_RTMPCommand.ppSt_CMDProperty[2]->tszKeyBuffer, "description"); + st_RTMPCommand.ppSt_CMDProperty[2]->st_CMDOBJect.byType = XENGINE_STREAMMEDIA_RTMP_PLTYPE_AFM0_STRING; + st_RTMPCommand.ppSt_CMDProperty[2]->st_CMDOBJect.nMLen = 10; + _tcsxcpy(st_RTMPCommand.ppSt_CMDProperty[2]->st_CMDOBJect.tszMsgBuffer, "Start live"); + + RTMPProtocol_Help_PKTCommand(ptszSDBuffer, &nSDLen, 5, &st_RTMPCommand); + XEngine_Network_Send(lpszClientAddr, ptszSDBuffer, nSDLen, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_PUSH_RTMP); + } + else { - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("拉流端:%s,请求拉流的参数不正确:%s,错误:%lX"), lpszClientAddr, tszSMSAddr, ModuleSession_GetLastError()); + st_RTMPCommand.nProCount = 4; + BaseLib_Memory_Malloc((XPPPMEM)&st_RTMPCommand.ppSt_CMDProperty, st_RTMPCommand.nProCount, sizeof(XENGINE_RTMPCMDPROPERTY)); + + strcpy(st_RTMPCommand.tszCMDName, XENGINE_STREAMMEDIA_RTMP_COMMAND_ONSTATUS); + + _tcsxcpy(st_RTMPCommand.ppSt_CMDProperty[0]->tszKeyBuffer, "level"); + st_RTMPCommand.ppSt_CMDProperty[0]->st_CMDOBJect.byType = XENGINE_STREAMMEDIA_RTMP_PLTYPE_AFM0_STRING; + st_RTMPCommand.ppSt_CMDProperty[0]->st_CMDOBJect.nMLen = 5; + _tcsxcpy(st_RTMPCommand.ppSt_CMDProperty[0]->st_CMDOBJect.tszMsgBuffer, "error"); + + LPCXSTR lpszCMDString = _X("NetStream.Play.StreamNotFound"); + _tcsxcpy(st_RTMPCommand.ppSt_CMDProperty[1]->tszKeyBuffer, "code"); + st_RTMPCommand.ppSt_CMDProperty[1]->st_CMDOBJect.byType = XENGINE_STREAMMEDIA_RTMP_PLTYPE_AFM0_STRING; + st_RTMPCommand.ppSt_CMDProperty[1]->st_CMDOBJect.nMLen = _tcsxlen(lpszCMDString); + _tcsxcpy(st_RTMPCommand.ppSt_CMDProperty[1]->st_CMDOBJect.tszMsgBuffer, lpszCMDString); + + LPCXSTR lpszCMDDescription = _X("The stream does not exist"); + _tcsxcpy(st_RTMPCommand.ppSt_CMDProperty[2]->tszKeyBuffer, "description"); + st_RTMPCommand.ppSt_CMDProperty[2]->st_CMDOBJect.byType = XENGINE_STREAMMEDIA_RTMP_PLTYPE_AFM0_STRING; + st_RTMPCommand.ppSt_CMDProperty[2]->st_CMDOBJect.nMLen = _tcsxlen(lpszCMDDescription); + _tcsxcpy(st_RTMPCommand.ppSt_CMDProperty[2]->st_CMDOBJect.tszMsgBuffer, lpszCMDDescription); + + _tcsxcpy(st_RTMPCommand.ppSt_CMDProperty[3]->tszKeyBuffer, "details"); + st_RTMPCommand.ppSt_CMDProperty[3]->st_CMDOBJect.byType = XENGINE_STREAMMEDIA_RTMP_PLTYPE_AFM0_STRING; + st_RTMPCommand.ppSt_CMDProperty[3]->st_CMDOBJect.nMLen = _tcsxlen(tszSMSAddr); + _tcsxcpy(st_RTMPCommand.ppSt_CMDProperty[3]->st_CMDOBJect.tszMsgBuffer, tszSMSAddr); + + RTMPProtocol_Help_PKTCommand(ptszSDBuffer, &nSDLen, 3, &st_RTMPCommand); + XEngine_Network_Send(lpszClientAddr, ptszSDBuffer, nSDLen, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_PUSH_RTMP); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("拉流端:%s,请求拉流的参数不正确:%s,流没有找到,错误:%lX"), lpszClientAddr, tszSMSAddr, ModuleSession_GetLastError()); return false; } //配置头 From 9a24b7c0bd94d0d310759fb4ae406737725a4a0e Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Thu, 3 Apr 2025 15:36:03 +0800 Subject: [PATCH 13/27] modify:use memory pool for memory of push stream --- .../PushStream_JT1078Task.cpp | 10 ++++------ .../PushStream_RTMPTask.cpp | 18 ++++++++---------- .../PushStream_SrtTask.cpp | 10 ++++------ .../PushStream_XStreamTask.cpp | 10 ++++------ .../XEngine_StreamMediaApp/XEngine_Hdr.h | 3 +-- .../XEngine_StreamMediaApp.cpp | 11 +++++++++++ 6 files changed, 32 insertions(+), 30 deletions(-) diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PushStream/PushStream_JT1078Task.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PushStream/PushStream_JT1078Task.cpp index 11dfa7b..a3baf89 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PushStream/PushStream_JT1078Task.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PushStream/PushStream_JT1078Task.cpp @@ -77,8 +77,8 @@ bool PushStream_JT1078Task_Handle(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nSDLen = 0; XCHAR tszSMSAddr[MAX_PATH]; XCHAR tszDeviceNumber[128]; - XCHAR* ptszRVBuffer = (XCHAR*)malloc(XENGINE_MEMORY_SIZE_MAX); - XCHAR* ptszSDBuffer = (XCHAR*)malloc(XENGINE_MEMORY_SIZE_MAX); + XCHAR* ptszRVBuffer = (XCHAR*)ManagePool_Memory_Alloc(xhMemoryPool, XENGINE_MEMORY_SIZE_MAX); + XCHAR* ptszSDBuffer = (XCHAR*)ManagePool_Memory_Alloc(xhMemoryPool, XENGINE_MEMORY_SIZE_MAX); memset(tszSMSAddr, '\0', sizeof(tszSMSAddr)); memset(tszDeviceNumber, '\0', sizeof(tszDeviceNumber)); @@ -136,10 +136,8 @@ bool PushStream_JT1078Task_Handle(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, } } } - free(ptszSDBuffer); - free(ptszRVBuffer); - ptszRVBuffer = NULL; - ptszSDBuffer = NULL; + ManagePool_Memory_Free(xhMemoryPool, ptszRVBuffer); + ManagePool_Memory_Free(xhMemoryPool, ptszSDBuffer); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_DEBUG, _X("JT1078:%s,开始推送数据,设备ID:%s,通道:%d,大小:%d"), lpszClientAddr, tszDeviceNumber, pSt_RTPHdr->byChannel, nMsgLen); return true; } \ No newline at end of file diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PushStream/PushStream_RTMPTask.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PushStream/PushStream_RTMPTask.cpp index 9283619..8696fa8 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PushStream/PushStream_RTMPTask.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PushStream/PushStream_RTMPTask.cpp @@ -37,6 +37,7 @@ XHTHREAD CALLBACK PushStream_RTMPTask_Thread(XPVOID lParam) //得到一个指定客户端的完整数据包 if (RTMPProtocol_Parse_Recv(ppSst_ListAddr[i]->tszClientAddr, &ptszMsgBuffer, &nMsgLen, &st_RTMPHdr)) { + printf("%s = %d,%d\n", ppSst_ListAddr[i]->tszClientAddr, ppSst_ListAddr[i]->nPktCount, j); //在另外一个函数里面处理数据 PushStream_RTMPTask_Handle(&st_RTMPHdr, ppSst_ListAddr[i]->tszClientAddr, ptszMsgBuffer, nMsgLen); //释放内存 @@ -48,15 +49,15 @@ XHTHREAD CALLBACK PushStream_RTMPTask_Thread(XPVOID lParam) } return 0; } + bool PushStream_RTMPTask_Handle(XENGINE_RTMPHDR* pSt_RTMPHdr, LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen) { int nRVLen = 0; int nSDLen = 0; int nPMLen = 0; - XCHAR* ptszRVBuffer = (XCHAR*)malloc(XENGINE_MEMORY_SIZE_MAX); - XCHAR* ptszSDBuffer = (XCHAR*)malloc(XENGINE_MEMORY_SIZE_MAX); - XCHAR* ptszMSGBuffer = (XCHAR*)malloc(XENGINE_MEMORY_SIZE_MAX); - + XCHAR* ptszRVBuffer = (XCHAR*)ManagePool_Memory_Alloc(xhMemoryPool, XENGINE_MEMORY_SIZE_MAX); + XCHAR* ptszSDBuffer = (XCHAR*)ManagePool_Memory_Alloc(xhMemoryPool, XENGINE_MEMORY_SIZE_MAX); + XCHAR* ptszMSGBuffer = (XCHAR*)ManagePool_Memory_Alloc(xhMemoryPool, XENGINE_MEMORY_SIZE_MAX); if (XENGINE_STREAMMEDIA_RTMP_MSGTYPE_CONNREQ == pSt_RTMPHdr->byTypeID) { XBYTE byVersion = 0; @@ -488,11 +489,8 @@ bool PushStream_RTMPTask_Handle(XENGINE_RTMPHDR* pSt_RTMPHdr, LPCXSTR lpszClient XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_DEBUG, _X("RTMP推流端:%s,接受推流数据,数据大小:%d"), lpszClientAddr, nMsgLen); } - free(ptszRVBuffer); - free(ptszSDBuffer); - free(ptszMSGBuffer); - ptszRVBuffer = NULL; - ptszSDBuffer = NULL; - ptszMSGBuffer = NULL; + ManagePool_Memory_Free(xhMemoryPool, ptszRVBuffer); + ManagePool_Memory_Free(xhMemoryPool, ptszSDBuffer); + ManagePool_Memory_Free(xhMemoryPool, ptszMSGBuffer); return true; } \ No newline at end of file diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PushStream/PushStream_SrtTask.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PushStream/PushStream_SrtTask.cpp index d235a30..4f9d39e 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PushStream/PushStream_SrtTask.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PushStream/PushStream_SrtTask.cpp @@ -101,8 +101,8 @@ bool PushStream_SrtTask_ThreadProcess(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuf { int nRVLen = 0; int nSDLen = 0; - XCHAR* ptszRVBuffer = (XCHAR*)malloc(XENGINE_MEMORY_SIZE_MAX); - XCHAR* ptszSDBuffer = (XCHAR*)malloc(XENGINE_MEMORY_SIZE_MAX); + XCHAR* ptszRVBuffer = (XCHAR*)ManagePool_Memory_Alloc(xhMemoryPool, XENGINE_MEMORY_SIZE_MAX); + XCHAR* ptszSDBuffer = (XCHAR*)ManagePool_Memory_Alloc(xhMemoryPool, XENGINE_MEMORY_SIZE_MAX); if (0x1b == byAVType) { @@ -141,9 +141,7 @@ bool PushStream_SrtTask_ThreadProcess(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuf XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_DEBUG, _X("SRT推流端:%s,接受音频推流数据,数据大小:%d"), lpszClientAddr, nMsgLen); } - free(ptszRVBuffer); - free(ptszSDBuffer); - ptszRVBuffer = NULL; - ptszSDBuffer = NULL; + ManagePool_Memory_Free(xhMemoryPool, ptszRVBuffer); + ManagePool_Memory_Free(xhMemoryPool, ptszSDBuffer); return true; } \ No newline at end of file diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PushStream/PushStream_XStreamTask.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PushStream/PushStream_XStreamTask.cpp index 4f170ea..3c66251 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PushStream/PushStream_XStreamTask.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PushStream/PushStream_XStreamTask.cpp @@ -53,8 +53,8 @@ bool PushStream_XStreamTask_Handle(XENGINE_PROTOCOLHDR* pSt_ProtocolHdr, LPCXSTR { int nRVLen = 0; int nSDLen = 0; - XCHAR* ptszRVBuffer = (XCHAR*)malloc(XENGINE_MEMORY_SIZE_MAX); - XCHAR* ptszSDBuffer = (XCHAR*)malloc(XENGINE_MEMORY_SIZE_MAX); + XCHAR* ptszRVBuffer = (XCHAR*)ManagePool_Memory_Alloc(xhMemoryPool, XENGINE_MEMORY_SIZE_MAX); + XCHAR* ptszSDBuffer = (XCHAR*)ManagePool_Memory_Alloc(xhMemoryPool, XENGINE_MEMORY_SIZE_MAX); if (ENUM_XENGINE_COMMUNICATION_PROTOCOL_TYPE_HEARTBEAT == pSt_ProtocolHdr->unOperatorType) { @@ -130,9 +130,7 @@ bool PushStream_XStreamTask_Handle(XENGINE_PROTOCOLHDR* pSt_ProtocolHdr, LPCXSTR XEngine_Network_Send(lpszClientAddr, (LPCXSTR)pSt_ProtocolHdr, sizeof(XENGINE_PROTOCOLHDR), ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_PUSH_XSTREAM); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _X("XStream推流端:%s,主协议错误,协议:%x 不支持"), lpszClientAddr, pSt_ProtocolHdr->unOperatorType); } - free(ptszRVBuffer); - free(ptszSDBuffer); - ptszRVBuffer = NULL; - ptszSDBuffer = NULL; + ManagePool_Memory_Free(xhMemoryPool, ptszRVBuffer); + ManagePool_Memory_Free(xhMemoryPool, ptszSDBuffer); return true; } \ No newline at end of file diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_Hdr.h b/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_Hdr.h index 0d7d497..f34bfbf 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_Hdr.h +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_Hdr.h @@ -108,6 +108,7 @@ using namespace std; extern bool bIsRun; extern bool bIsTest; extern XHANDLE xhLog; +extern XHANDLE xhMemoryPool; //HTTP服务器 extern XHANDLE xhHttpSocket; extern XHANDLE xhHttpHeart; @@ -144,8 +145,6 @@ extern XENGINE_SERVICECONFIG st_ServiceConfig; //调试 extern FILE* pSt_VFile; extern FILE* pSt_AFile; - - //连接库 #ifdef _MSC_BUILD #pragma comment(lib,"Ws2_32.lib") diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_StreamMediaApp.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_StreamMediaApp.cpp index f28e027..608d095 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_StreamMediaApp.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_StreamMediaApp.cpp @@ -13,6 +13,7 @@ bool bIsRun = false; bool bIsTest = false; XHANDLE xhLog = NULL; +XHANDLE xhMemoryPool = NULL; //HTTP服务器 XHANDLE xhHttpSocket = NULL; XHANDLE xhHttpHeart = NULL; @@ -96,6 +97,7 @@ void ServiceApp_Stop(int signo) ModuleHelp_SRTPCore_Destory(); HLSProtocol_M3u8Packet_Delete(xhHLSFile); + ManagePool_Memory_Destory(xhMemoryPool); HelpComponents_XLog_Destroy(xhLog); if (NULL != pSt_AFile) { @@ -228,6 +230,14 @@ int main(int argc, char** argv) signal(SIGTERM, ServiceApp_Stop); signal(SIGABRT, ServiceApp_Stop); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,初始化信号量成功")); + + xhMemoryPool = ManagePool_Memory_Create(); + if (NULL == xhMemoryPool) + { + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,初始化内存池失败,错误:%lX"), ManagePool_GetLastError()); + goto XENGINE_SERVICEAPP_EXIT; + } + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,初始化内存池成功")); //启动HTTP服务相关代码 if (st_ServiceConfig.nHttpPort > 0) { @@ -695,6 +705,7 @@ int main(int argc, char** argv) ModuleHelp_SRTPCore_Destory(); HLSProtocol_M3u8Packet_Delete(xhHLSFile); + ManagePool_Memory_Destory(xhMemoryPool); HelpComponents_XLog_Destroy(xhLog); if (NULL != pSt_AFile) { From ad979eb9da4bc3b8cedb93837b704dc1d7a5d42d Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Fri, 4 Apr 2025 15:38:26 +0800 Subject: [PATCH 14/27] modify:reply not found stream message for ts and flv and xstream when play --- .../PullStream_ClientGet.cpp | 26 ++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PullStream/PullStream_ClientGet.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PullStream/PullStream_ClientGet.cpp index 3f7fa06..6880201 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PullStream/PullStream_ClientGet.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PullStream/PullStream_ClientGet.cpp @@ -51,7 +51,7 @@ bool PullStream_ClientGet_Handle(LPCXSTR lpszClientAddr, XCHAR*** ppptszListHdr, ModuleProtocol_Packet_Comm(tszRVBuffer, &nRVLen, NULL, 404, "not found"); HttpProtocol_Server_SendMsgEx(xhHttpPacket, tszSDBuffer, &nSDLen, &st_HDRParam, tszRVBuffer, nRVLen); XEngine_Network_Send(lpszClientAddr, tszSDBuffer, nSDLen, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_HTTP); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("拉流端:%s,请求拉流的URL参数不正确:%s,错误:%lX"), lpszClientAddr, tszVluBuffer, ModuleSession_GetLastError()); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("拉流端:%s,请求拉流的URL参数不正确:%s,可能流不存在,错误:%lX"), lpszClientAddr, tszVluBuffer, ModuleSession_GetLastError()); return false; } memset(tszVluBuffer, '\0', sizeof(tszVluBuffer)); @@ -60,6 +60,14 @@ bool PullStream_ClientGet_Handle(LPCXSTR lpszClientAddr, XCHAR*** ppptszListHdr, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE enStreamType; if (0 == _tcsxnicmp(tszVluBuffer, "flv", 3)) { + if (!ModuleSession_PushStream_FindStream(tszSMSAddr, tszPushAddr)) + { + ModuleProtocol_Packet_Comm(tszRVBuffer, &nRVLen, NULL, 404, "not found"); + HttpProtocol_Server_SendMsgEx(xhHttpPacket, tszSDBuffer, &nSDLen, &st_HDRParam, tszRVBuffer, nRVLen); + XEngine_Network_Send(lpszClientAddr, tszSDBuffer, nSDLen, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_HTTP); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("拉流端:%s,请求拉流的URL参数不正确:%s,可能流不存在,错误:%lX"), lpszClientAddr, tszVluBuffer, ModuleSession_GetLastError()); + return false; + } int nTagSize = 0; enStreamType = ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_PULL_FLV; //拷贝数据 @@ -122,6 +130,14 @@ bool PullStream_ClientGet_Handle(LPCXSTR lpszClientAddr, XCHAR*** ppptszListHdr, } else if (0 == _tcsxnicmp(tszVluBuffer, "xstream", 7)) { + if (!ModuleSession_PushStream_FindStream(tszSMSAddr, tszPushAddr)) + { + ModuleProtocol_Packet_Comm(tszRVBuffer, &nRVLen, NULL, 404, "not found"); + HttpProtocol_Server_SendMsgEx(xhHttpPacket, tszSDBuffer, &nSDLen, &st_HDRParam, tszRVBuffer, nRVLen); + XEngine_Network_Send(lpszClientAddr, tszSDBuffer, nSDLen, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_HTTP); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("拉流端:%s,请求拉流的URL参数不正确:%s,可能流不存在,错误:%lX"), lpszClientAddr, tszVluBuffer, ModuleSession_GetLastError()); + return false; + } enStreamType = ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_PULL_XSTREAM; XENGINE_PROTOCOL_AVINFO st_AVInfo; @@ -152,6 +168,14 @@ bool PullStream_ClientGet_Handle(LPCXSTR lpszClientAddr, XCHAR*** ppptszListHdr, } else if (0 == _tcsxnicmp(tszVluBuffer, "ts", 2)) { + if (!ModuleSession_PushStream_FindStream(tszSMSAddr, tszPushAddr)) + { + ModuleProtocol_Packet_Comm(tszRVBuffer, &nRVLen, NULL, 404, "not found"); + HttpProtocol_Server_SendMsgEx(xhHttpPacket, tszSDBuffer, &nSDLen, &st_HDRParam, tszRVBuffer, nRVLen); + XEngine_Network_Send(lpszClientAddr, tszSDBuffer, nSDLen, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_HTTP); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("拉流端:%s,请求拉流的URL参数不正确:%s,可能流不存在,错误:%lX"), lpszClientAddr, tszVluBuffer, ModuleSession_GetLastError()); + return false; + } enStreamType = ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_PULL_TS; //返回数据,为HTTP CHUNKED nSDLen = _xstprintf(tszSDBuffer, _X("HTTP/1.1 200 OK\r\n" From 6966a89e595c98baf3a5374cb021082439e0967b Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Fri, 4 Apr 2025 16:32:25 +0800 Subject: [PATCH 15/27] added:pre pull stream support for xstream ts srt --- .../XEngine_Config/XEngine_Config.json | 22 +++++++++---- XEngine_Source/XEngine_BuildSwitch.h | 2 +- .../ModuleConfig_Define.h | 8 +++++ .../ModuleConfigure_Json.cpp | 15 ++++++++- .../PullStream_ClientGet.cpp | 32 ++++++++++++------- .../PushStream_SrtTask.cpp | 11 ++++--- 6 files changed, 65 insertions(+), 25 deletions(-) diff --git a/XEngine_Release/XEngine_Config/XEngine_Config.json b/XEngine_Release/XEngine_Config/XEngine_Config.json index 3f27141..be8c6ff 100644 --- a/XEngine_Release/XEngine_Config/XEngine_Config.json +++ b/XEngine_Release/XEngine_Config/XEngine_Config.json @@ -28,23 +28,28 @@ }, "XPull": { "XStream": { - "bEnable": true + "bEnable": true, + "bPrePull": true }, "RTMP": { - "bEnable": true + "bEnable": true, + "bPrePull": false }, "FLV": { - "bEnable": true + "bEnable": true, + "bPrePull": false }, "RTSP": { "bEnable": true, + "bPrePull": true, "nVRTPPort": 56001, "nVRTCPPort": 56002, "nARTPPort": 56003, "nARTCPPort": 56004 }, "RTC": { - "bEnable": true, + "bEnable": false, + "bPrePull": false, "tszICEUser": "xengine", "tszICEPass": "3321308h8i6vt3769r6638l1409d50jz", "tszCertStr": "./XEngine_Key/server.crt", @@ -52,13 +57,16 @@ "tszDerStr": "./XEngine_Key/server.der" }, "SRT": { - "bEnable": true + "bEnable": true, + "bPrePull": true }, "TS": { - "bEnable": true + "bEnable": true, + "bPrePull": true }, "HLS": { "bEnable": false, + "bPrePull": true, "bClear": false, "nTime": 15, "tszHLSPath": "./XEngine_File" @@ -71,7 +79,7 @@ "LogLeave": 17 }, "XReport":{ - "bEnable":true, + "bEnable":false, "tszServiceName":"XEngine_StreamMedia", "tszAPIUrl":"http://app.xyry.org:5501/api?function=machine" } diff --git a/XEngine_Source/XEngine_BuildSwitch.h b/XEngine_Source/XEngine_BuildSwitch.h index e7d51f9..3dc2f27 100644 --- a/XEngine_Source/XEngine_BuildSwitch.h +++ b/XEngine_Source/XEngine_BuildSwitch.h @@ -10,5 +10,5 @@ // Purpose: 编译开关选项 // History: *********************************************************************/ -#define _XENGINE_STREAMMEDIA_BUILDSWITCH_SRT 1 //SRT协议编译开关选项 +#define _XENGINE_STREAMMEDIA_BUILDSWITCH_SRT 0 //SRT协议编译开关选项 #define _XENGINE_STREAMMEDIA_BUILDSWITCH_RTC 1 //WEBRTC协议编译开关选项 \ No newline at end of file diff --git a/XEngine_Source/XEngine_ModuleConfigure/ModuleConfig_Define.h b/XEngine_Source/XEngine_ModuleConfigure/ModuleConfig_Define.h index 651a7d2..46d0299 100644 --- a/XEngine_Source/XEngine_ModuleConfigure/ModuleConfig_Define.h +++ b/XEngine_Source/XEngine_ModuleConfigure/ModuleConfig_Define.h @@ -58,33 +58,40 @@ typedef struct tag_XEngine_ServiceConfig struct { bool bEnable; + bool bPrePull; }st_PullXStream; struct { bool bEnable; + bool bPrePull; }st_PullRtmp; struct { bool bEnable; + bool bPrePull; }st_PullFlv; struct { XCHAR tszHLSPath[MAX_PATH]; int nTime; bool bEnable; + bool bPrePull; bool bClear; }st_PullHls; struct { bool bEnable; + bool bPrePull; }st_PullSrt; struct { bool bEnable; + bool bPrePull; }st_PullTs; struct { bool bEnable; + bool bPrePull; int nVRTPPort; int nVRTCPPort; int nARTPPort; @@ -98,6 +105,7 @@ typedef struct tag_XEngine_ServiceConfig XCHAR tszKeyStr[MAX_PATH]; XCHAR tszDerStr[MAX_PATH]; bool bEnable; + bool bPrePull; }st_PullWebRtc; }st_XPull; struct diff --git a/XEngine_Source/XEngine_ModuleConfigure/ModuleConfigure_Json/ModuleConfigure_Json.cpp b/XEngine_Source/XEngine_ModuleConfigure/ModuleConfigure_Json/ModuleConfigure_Json.cpp index 89c0957..24585ea 100644 --- a/XEngine_Source/XEngine_ModuleConfigure/ModuleConfigure_Json/ModuleConfigure_Json.cpp +++ b/XEngine_Source/XEngine_ModuleConfigure/ModuleConfigure_Json/ModuleConfigure_Json.cpp @@ -139,14 +139,25 @@ bool CModuleConfigure_Json::ModuleConfigure_Json_File(LPCXSTR lpszConfigFile, XE Json::Value st_PullTs = st_Pull["TS"]; pSt_ServerConfig->st_XPull.st_PullXStream.bEnable = st_PullXStream["bEnable"].asBool(); + pSt_ServerConfig->st_XPull.st_PullXStream.bPrePull = st_PullXStream["bPrePull"].asBool(); + pSt_ServerConfig->st_XPull.st_PullRtmp.bEnable = st_PullRtmp["bEnable"].asBool(); + pSt_ServerConfig->st_XPull.st_PullRtmp.bPrePull = st_PullRtmp["bPrePull"].asBool(); + pSt_ServerConfig->st_XPull.st_PullFlv.bEnable = st_PullFlv["bEnable"].asBool(); + pSt_ServerConfig->st_XPull.st_PullFlv.bPrePull = st_PullFlv["bPrePull"].asBool(); + pSt_ServerConfig->st_XPull.st_PullHls.bEnable = st_PullHls["bEnable"].asBool(); - pSt_ServerConfig->st_XPull.st_PullWebRtc.bEnable = st_PullWebRtc["bEnable"].asBool(); + pSt_ServerConfig->st_XPull.st_PullHls.bPrePull = st_PullHls["bPrePull"].asBool(); + pSt_ServerConfig->st_XPull.st_PullSrt.bEnable = st_PullSrt["bEnable"].asBool(); + pSt_ServerConfig->st_XPull.st_PullSrt.bPrePull = st_PullSrt["bPrePull"].asBool(); + pSt_ServerConfig->st_XPull.st_PullTs.bEnable = st_Pull["bEnable"].asBool(); + pSt_ServerConfig->st_XPull.st_PullTs.bPrePull = st_Pull["bPrePull"].asBool(); pSt_ServerConfig->st_XPull.st_PullRtsp.bEnable = st_PullRtsp["bEnable"].asBool(); + pSt_ServerConfig->st_XPull.st_PullRtsp.bPrePull = st_PullRtsp["bPrePull"].asBool(); pSt_ServerConfig->st_XPull.st_PullRtsp.nVRTPPort = st_PullRtsp["nVRTPPort"].asInt(); pSt_ServerConfig->st_XPull.st_PullRtsp.nVRTCPPort = st_PullRtsp["nVRTCPPort"].asInt(); pSt_ServerConfig->st_XPull.st_PullRtsp.nARTPPort = st_PullRtsp["nARTPPort"].asInt(); @@ -156,6 +167,8 @@ bool CModuleConfigure_Json::ModuleConfigure_Json_File(LPCXSTR lpszConfigFile, XE pSt_ServerConfig->st_XPull.st_PullHls.nTime = st_PullHls["nTime"].asInt(); _tcsxcpy(pSt_ServerConfig->st_XPull.st_PullHls.tszHLSPath, st_PullHls["tszHLSPath"].asCString()); + pSt_ServerConfig->st_XPull.st_PullWebRtc.bEnable = st_PullWebRtc["bEnable"].asBool(); + pSt_ServerConfig->st_XPull.st_PullWebRtc.bPrePull = st_PullWebRtc["bPrePull"].asBool(); _tcsxcpy(pSt_ServerConfig->st_XPull.st_PullWebRtc.tszICEUser, st_PullWebRtc["tszICEUser"].asCString()); _tcsxcpy(pSt_ServerConfig->st_XPull.st_PullWebRtc.tszICEPass, st_PullWebRtc["tszICEPass"].asCString()); _tcsxcpy(pSt_ServerConfig->st_XPull.st_PullWebRtc.tszCertStr, st_PullWebRtc["tszCertStr"].asCString()); diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PullStream/PullStream_ClientGet.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PullStream/PullStream_ClientGet.cpp index 6880201..a80337c 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PullStream/PullStream_ClientGet.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PullStream/PullStream_ClientGet.cpp @@ -130,13 +130,16 @@ bool PullStream_ClientGet_Handle(LPCXSTR lpszClientAddr, XCHAR*** ppptszListHdr, } else if (0 == _tcsxnicmp(tszVluBuffer, "xstream", 7)) { - if (!ModuleSession_PushStream_FindStream(tszSMSAddr, tszPushAddr)) + if (!st_ServiceConfig.st_XPull.st_PullXStream.bPrePull) { - ModuleProtocol_Packet_Comm(tszRVBuffer, &nRVLen, NULL, 404, "not found"); - HttpProtocol_Server_SendMsgEx(xhHttpPacket, tszSDBuffer, &nSDLen, &st_HDRParam, tszRVBuffer, nRVLen); - XEngine_Network_Send(lpszClientAddr, tszSDBuffer, nSDLen, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_HTTP); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("拉流端:%s,请求拉流的URL参数不正确:%s,可能流不存在,错误:%lX"), lpszClientAddr, tszVluBuffer, ModuleSession_GetLastError()); - return false; + if (!ModuleSession_PushStream_FindStream(tszSMSAddr, tszPushAddr)) + { + ModuleProtocol_Packet_Comm(tszRVBuffer, &nRVLen, NULL, 404, "not found"); + HttpProtocol_Server_SendMsgEx(xhHttpPacket, tszSDBuffer, &nSDLen, &st_HDRParam, tszRVBuffer, nRVLen); + XEngine_Network_Send(lpszClientAddr, tszSDBuffer, nSDLen, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_HTTP); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("拉流端:%s,请求拉流的URL参数不正确:%s,可能流不存在,错误:%lX"), lpszClientAddr, tszVluBuffer, ModuleSession_GetLastError()); + return false; + } } enStreamType = ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_PULL_XSTREAM; XENGINE_PROTOCOL_AVINFO st_AVInfo; @@ -168,14 +171,19 @@ bool PullStream_ClientGet_Handle(LPCXSTR lpszClientAddr, XCHAR*** ppptszListHdr, } else if (0 == _tcsxnicmp(tszVluBuffer, "ts", 2)) { - if (!ModuleSession_PushStream_FindStream(tszSMSAddr, tszPushAddr)) + if (!st_ServiceConfig.st_XPull.st_PullTs.bPrePull) { - ModuleProtocol_Packet_Comm(tszRVBuffer, &nRVLen, NULL, 404, "not found"); - HttpProtocol_Server_SendMsgEx(xhHttpPacket, tszSDBuffer, &nSDLen, &st_HDRParam, tszRVBuffer, nRVLen); - XEngine_Network_Send(lpszClientAddr, tszSDBuffer, nSDLen, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_HTTP); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("拉流端:%s,请求拉流的URL参数不正确:%s,可能流不存在,错误:%lX"), lpszClientAddr, tszVluBuffer, ModuleSession_GetLastError()); - return false; + //TS流,需要预拉流 + if (!ModuleSession_PushStream_FindStream(tszSMSAddr, tszPushAddr)) + { + ModuleProtocol_Packet_Comm(tszRVBuffer, &nRVLen, NULL, 404, "not found"); + HttpProtocol_Server_SendMsgEx(xhHttpPacket, tszSDBuffer, &nSDLen, &st_HDRParam, tszRVBuffer, nRVLen); + XEngine_Network_Send(lpszClientAddr, tszSDBuffer, nSDLen, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_HTTP); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("拉流端:%s,请求拉流的URL参数不正确:%s,可能流不存在,错误:%lX"), lpszClientAddr, tszVluBuffer, ModuleSession_GetLastError()); + return false; + } } + enStreamType = ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_PULL_TS; //返回数据,为HTTP CHUNKED nSDLen = _xstprintf(tszSDBuffer, _X("HTTP/1.1 200 OK\r\n" diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PushStream/PushStream_SrtTask.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PushStream/PushStream_SrtTask.cpp index 4f9d39e..c17886b 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PushStream/PushStream_SrtTask.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PushStream/PushStream_SrtTask.cpp @@ -35,11 +35,14 @@ bool PushStream_SrtTask_Connct(LPCXSTR lpszClientAddr, XSOCKET hSocket) { XCHAR tszPushAddr[128]; memset(tszPushAddr, '\0', sizeof(tszPushAddr)); - //得到推流地址 - if (!ModuleSession_PushStream_FindStream(tszSMSAddr, tszPushAddr)) + if (!st_ServiceConfig.st_XPull.st_PullSrt.bPrePull) { - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("SRT客户端:%s,请求拉流的参数不正确:%s,错误:%lX"), lpszClientAddr, tszSMSAddr, ModuleSession_GetLastError()); - return false; + //得到推流地址 + if (!ModuleSession_PushStream_FindStream(tszSMSAddr, tszPushAddr)) + { + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("SRT客户端:%s,请求拉流的参数不正确:%s,错误:%lX"), lpszClientAddr, tszSMSAddr, ModuleSession_GetLastError()); + return false; + } } ModuleSession_PullStream_Insert(lpszClientAddr, tszSMSAddr, tszPushAddr, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_PULL_SRT); ModuleSession_PushStream_ClientInsert(tszPushAddr, lpszClientAddr, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_PULL_SRT); From d0da682274092eea99d5258cd6362808fdd35a84 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Sat, 5 Apr 2025 15:23:32 +0800 Subject: [PATCH 16/27] added:pre-play stream for rtmp support --- .../ModuleSession_Define.h | 27 ++- .../ModuleSession_PullStream.cpp | 86 +++++++- .../ModuleSession_PullStream.h | 3 +- .../XEngine_ModuleSession.def | 1 + XEngine_Source/XEngine_ModuleSession/pch.cpp | 8 +- .../PushStream_RTMPTask.cpp | 198 ++++++++++-------- .../PushStream_RTMPTask.h | 2 + 7 files changed, 227 insertions(+), 98 deletions(-) diff --git a/XEngine_Source/XEngine_ModuleSession/ModuleSession_Define.h b/XEngine_Source/XEngine_ModuleSession/ModuleSession_Define.h index 063ce8c..0fc0df8 100644 --- a/XEngine_Source/XEngine_ModuleSession/ModuleSession_Define.h +++ b/XEngine_Source/XEngine_ModuleSession/ModuleSession_Define.h @@ -41,6 +41,7 @@ typedef struct XCHAR tszAudioCName[MAX_PATH]; XCHAR tszAudioLabel[MAX_PATH]; }st_WEBRtc; + XCHAR tszClientAddr[MAX_PATH]; XCHAR tszSMSAddr[MAX_PATH]; XCHAR tszPushAddr[MAX_PATH]; int nFLVTag; @@ -84,6 +85,25 @@ extern "C" XLONG ModuleSession_GetLastError(int *pInt_SysError = NULL); *********************************************************************/ extern "C" bool ModuleSession_PullStream_Insert(LPCXSTR lpszClientAddr, LPCXSTR lpszSMSAddr, LPCXSTR lpszPushAddr, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE enStreamType); /******************************************************************** +函数名称:ModuleSession_PullStream_SetPushAddr +函数功能:设置客户端的推流地址 + 参数.一:lpszClientAddr + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:输入要操作的客户端 + 参数.二:lpszPushAddr + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:输入推流地址 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" bool ModuleSession_PullStream_SetPushAddr(LPCXSTR lpszClientAddr, LPCXSTR lpszPushAddr); +/******************************************************************** 函数名称:ModuleSession_PullStream_GetSMSAddr 函数功能:获取客户端绑定的流ID 参数.一:lpszClientAddr @@ -181,12 +201,17 @@ extern "C" bool ModuleSession_PullStream_PublishDelete(LPCXSTR lpszClientAddr); 类型:整数型指针 可空:N 意思:输出列表个数 + 参数.三:lpszSMSAddr + In/Out:Out + 类型:常量字符指针 + 可空:Y + 意思:可以查找指定流媒体ID的拉流地址 返回值 类型:逻辑型 意思:是否成功 备注: *********************************************************************/ -extern "C" bool ModuleSession_PullStream_GetList(STREAMMEDIA_PULLLISTINFO*** pppSt_PullList, int* pInt_ListCount); +extern "C" bool ModuleSession_PullStream_GetList(STREAMMEDIA_PULLLISTINFO*** pppSt_PullList, int* pInt_ListCount, LPCXSTR lpszSMSAddr = NULL); ////////////////////////////////////////////////////////////////////////// /******************************************************************** 函数名称:ModuleSession_PullStream_FLVTagSet diff --git a/XEngine_Source/XEngine_ModuleSession/ModuleSession_PullStream/ModuleSession_PullStream.cpp b/XEngine_Source/XEngine_ModuleSession/ModuleSession_PullStream/ModuleSession_PullStream.cpp index eaf495c..e64773b 100644 --- a/XEngine_Source/XEngine_ModuleSession/ModuleSession_PullStream/ModuleSession_PullStream.cpp +++ b/XEngine_Source/XEngine_ModuleSession/ModuleSession_PullStream/ModuleSession_PullStream.cpp @@ -62,15 +62,64 @@ bool CModuleSession_PullStream::ModuleSession_PullStream_Insert(LPCXSTR lpszClie memset(pSt_PullStream, '\0', sizeof(STREAMMEDIA_PULLLISTINFO)); pSt_PullStream->enStreamType = enStreamType; - _tcsxcpy(pSt_PullStream->tszSMSAddr, lpszSMSAddr); - _tcsxcpy(pSt_PullStream->tszPushAddr, lpszPushAddr); - + if (NULL != lpszSMSAddr) + { + _tcsxcpy(pSt_PullStream->tszSMSAddr, lpszSMSAddr); + } + if (NULL != lpszPushAddr) + { + _tcsxcpy(pSt_PullStream->tszPushAddr, lpszPushAddr); + } + _tcsxcpy(pSt_PullStream->tszClientAddr, lpszClientAddr); + st_Locker.lock(); stl_MapClient.insert(make_pair(lpszClientAddr, pSt_PullStream)); st_Locker.unlock(); return true; } /******************************************************************** +函数名称:ModuleSession_PullStream_SetPushAddr +函数功能:设置客户端的推流地址 + 参数.一:lpszClientAddr + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:输入要操作的客户端 + 参数.二:lpszPushAddr + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:输入推流地址 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +bool CModuleSession_PullStream::ModuleSession_PullStream_SetPushAddr(LPCXSTR lpszClientAddr, LPCXSTR lpszPushAddr) +{ + Session_IsErrorOccur = false; + + if (NULL == lpszClientAddr) + { + Session_IsErrorOccur = true; + Session_dwErrorCode = ERROR_STREAMMEDIA_MODULE_SESSION_PARAMENT; + return false; + } + st_Locker.lock_shared(); + //查找最小 + auto stl_MapIterator = stl_MapClient.find(lpszClientAddr); + if (stl_MapIterator == stl_MapClient.end()) + { + Session_IsErrorOccur = true; + Session_dwErrorCode = ERROR_STREAMMEDIA_MODULE_SESSION_NOTFOUND; + st_Locker.unlock_shared(); + return false; + } + _tcsxcpy(stl_MapIterator->second->tszPushAddr, lpszPushAddr); + st_Locker.unlock_shared(); + return true; +} +/******************************************************************** 函数名称:ModuleSession_PullStream_Delete 函数功能:删除一个拉流端 参数.一:lpszClientAddr @@ -279,26 +328,45 @@ bool CModuleSession_PullStream::ModuleSession_PullStream_GetStreamType(LPCXSTR l 类型:整数型指针 可空:N 意思:输出列表个数 + 参数.三:lpszSMSAddr + In/Out:Out + 类型:常量字符指针 + 可空:Y + 意思:可以查找指定流媒体ID的拉流地址 返回值 类型:逻辑型 意思:是否成功 备注: *********************************************************************/ -bool CModuleSession_PullStream::ModuleSession_PullStream_GetList(STREAMMEDIA_PULLLISTINFO*** pppSt_PullList, int* pInt_ListCount) +bool CModuleSession_PullStream::ModuleSession_PullStream_GetList(STREAMMEDIA_PULLLISTINFO*** pppSt_PullList, int* pInt_ListCount, LPCXSTR lpszSMSAddr) { Session_IsErrorOccur = false; - st_Locker.lock_shared(); - - *pInt_ListCount = stl_MapClient.size(); - BaseLib_Memory_Malloc((XPPPMEM)pppSt_PullList, stl_MapClient.size(), sizeof(STREAMMEDIA_PULLLISTINFO)); + list stl_ListPullInfo; + st_Locker.lock_shared(); auto stl_MapIterator = stl_MapClient.begin(); for (int i = 0; stl_MapIterator != stl_MapClient.end(); stl_MapIterator++, i++) { - (*pppSt_PullList)[i] = stl_MapIterator->second; + if (NULL != lpszSMSAddr) + { + if ((0 != _tcsxnicmp(lpszSMSAddr, stl_MapIterator->second->tszSMSAddr, _tcsxlen(lpszSMSAddr))) && (_tcsxlen(stl_MapIterator->second->tszPushAddr) == 0)) + { + continue; + } + } + stl_ListPullInfo.push_back(*stl_MapIterator->second); } st_Locker.unlock_shared(); + + *pInt_ListCount = stl_ListPullInfo.size(); + BaseLib_Memory_Malloc((XPPPMEM)pppSt_PullList, stl_ListPullInfo.size(), sizeof(STREAMMEDIA_PULLLISTINFO)); + auto stl_ListIterator = stl_ListPullInfo.begin(); + for (size_t i = 0; i < stl_ListPullInfo.size(); i++) + { + *(*pppSt_PullList)[i] = *stl_ListIterator; + } + stl_ListPullInfo.clear(); return true; } /******************************************************************** diff --git a/XEngine_Source/XEngine_ModuleSession/ModuleSession_PullStream/ModuleSession_PullStream.h b/XEngine_Source/XEngine_ModuleSession/ModuleSession_PullStream/ModuleSession_PullStream.h index 840f925..3dc3815 100644 --- a/XEngine_Source/XEngine_ModuleSession/ModuleSession_PullStream/ModuleSession_PullStream.h +++ b/XEngine_Source/XEngine_ModuleSession/ModuleSession_PullStream/ModuleSession_PullStream.h @@ -17,12 +17,13 @@ class CModuleSession_PullStream ~CModuleSession_PullStream(); public: bool ModuleSession_PullStream_Insert(LPCXSTR lpszClientAddr, LPCXSTR lpszSMSAddr, LPCXSTR lpszPushAddr, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE enStreamType); + bool ModuleSession_PullStream_SetPushAddr(LPCXSTR lpszClientAddr, LPCXSTR lpszPushAddr); bool ModuleSession_PullStream_GetSMSAddr(LPCXSTR lpszClientAddr, XCHAR* ptszSMSAddr); bool ModuleSession_PullStream_GetPushAddr(LPCXSTR lpszClientAddr, XCHAR* ptszPushAddr); bool ModuleSession_PullStream_GetStreamType(LPCXSTR lpszClientAddr, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE* penStreamType); bool ModuleSession_PullStream_Delete(LPCXSTR lpszClientAddr); bool ModuleSession_PullStream_PublishDelete(LPCXSTR lpszClientAddr); - bool ModuleSession_PullStream_GetList(STREAMMEDIA_PULLLISTINFO*** pppSt_PullList, int* pInt_ListCount); + bool ModuleSession_PullStream_GetList(STREAMMEDIA_PULLLISTINFO*** pppSt_PullList, int* pInt_ListCount, LPCXSTR lpszSMSAddr = NULL); public: bool ModuleSession_PullStream_FLVTagSet(LPCXSTR lpszClientAddr, int nTagSize); bool ModuleSession_PullStream_FLVTagGet(LPCXSTR lpszClientAddr, int* pInt_TagSize); diff --git a/XEngine_Source/XEngine_ModuleSession/XEngine_ModuleSession.def b/XEngine_Source/XEngine_ModuleSession/XEngine_ModuleSession.def index 0fb0cc9..bb12091 100644 --- a/XEngine_Source/XEngine_ModuleSession/XEngine_ModuleSession.def +++ b/XEngine_Source/XEngine_ModuleSession/XEngine_ModuleSession.def @@ -4,6 +4,7 @@ EXPORTS ModuleSession_GetLastError ModuleSession_PullStream_Insert + ModuleSession_PullStream_SetPushAddr ModuleSession_PullStream_GetSMSAddr ModuleSession_PullStream_GetPushAddr ModuleSession_PullStream_GetStreamType diff --git a/XEngine_Source/XEngine_ModuleSession/pch.cpp b/XEngine_Source/XEngine_ModuleSession/pch.cpp index 21512b1..0505e13 100644 --- a/XEngine_Source/XEngine_ModuleSession/pch.cpp +++ b/XEngine_Source/XEngine_ModuleSession/pch.cpp @@ -35,6 +35,10 @@ extern "C" bool ModuleSession_PullStream_Insert(LPCXSTR lpszClientAddr, LPCXSTR { return m_PullStream.ModuleSession_PullStream_Insert(lpszClientAddr, lpszSMSAddr, lpszPushAddr, enStreamType); } +extern "C" bool ModuleSession_PullStream_SetPushAddr(LPCXSTR lpszClientAddr, LPCXSTR lpszPushAddr) +{ + return m_PullStream.ModuleSession_PullStream_SetPushAddr(lpszClientAddr, lpszPushAddr); +} extern "C" bool ModuleSession_PullStream_GetSMSAddr(LPCXSTR lpszClientAddr, XCHAR * ptszSMSAddr) { return m_PullStream.ModuleSession_PullStream_GetSMSAddr(lpszClientAddr, ptszSMSAddr); @@ -51,9 +55,9 @@ extern "C" bool ModuleSession_PullStream_PublishDelete(LPCXSTR lpszClientAddr) { return m_PullStream.ModuleSession_PullStream_PublishDelete(lpszClientAddr); } -extern "C" bool ModuleSession_PullStream_GetList(STREAMMEDIA_PULLLISTINFO*** pppSt_PullList, int* pInt_ListCount) +extern "C" bool ModuleSession_PullStream_GetList(STREAMMEDIA_PULLLISTINFO*** pppSt_PullList, int* pInt_ListCount, LPCXSTR lpszSMSAddr) { - return m_PullStream.ModuleSession_PullStream_GetList(pppSt_PullList, pInt_ListCount); + return m_PullStream.ModuleSession_PullStream_GetList(pppSt_PullList, pInt_ListCount, lpszSMSAddr); } ////////////////////////////////////////////////////////////////////////// extern "C" bool ModuleSession_PullStream_FLVTagSet(LPCXSTR lpszClientAddr, int nTagSize) diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PushStream/PushStream_RTMPTask.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PushStream/PushStream_RTMPTask.cpp index 8696fa8..778e70b 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PushStream/PushStream_RTMPTask.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PushStream/PushStream_RTMPTask.cpp @@ -37,7 +37,6 @@ XHTHREAD CALLBACK PushStream_RTMPTask_Thread(XPVOID lParam) //得到一个指定客户端的完整数据包 if (RTMPProtocol_Parse_Recv(ppSst_ListAddr[i]->tszClientAddr, &ptszMsgBuffer, &nMsgLen, &st_RTMPHdr)) { - printf("%s = %d,%d\n", ppSst_ListAddr[i]->tszClientAddr, ppSst_ListAddr[i]->nPktCount, j); //在另外一个函数里面处理数据 PushStream_RTMPTask_Handle(&st_RTMPHdr, ppSst_ListAddr[i]->tszClientAddr, ptszMsgBuffer, nMsgLen); //释放内存 @@ -49,7 +48,30 @@ XHTHREAD CALLBACK PushStream_RTMPTask_Thread(XPVOID lParam) } return 0; } - +bool PushStream_RTMPTask_Play(LPCXSTR lpszClientAddr, LPCXSTR lpszPushAddr, XCHAR* ptszSDBuffer) +{ + int nHLen = 0; + int nPLen = 0; + XENGINE_PROTOCOL_AVINFO st_AVInfo = {}; + + ModuleSession_PushStream_GetAVInfo(lpszPushAddr, &st_AVInfo); + RTMPProtocol_Packet_FrameAVScript(ptszSDBuffer + nHLen, &nPLen, &st_AVInfo); + nHLen += nPLen; + if (st_AVInfo.st_VideoInfo.bEnable) + { + RTMPProtocol_Packet_FrameAVCConfigure(ptszSDBuffer + nHLen, &nPLen, &st_AVInfo); + nHLen += nPLen; + } + if (st_AVInfo.st_AudioInfo.bEnable) + { + RTMPProtocol_Packet_FrameAACConfigure(ptszSDBuffer + nHLen, &nPLen, &st_AVInfo); + nHLen += nPLen; + } + //返回数据, + XEngine_Network_Send(lpszClientAddr, ptszSDBuffer, nHLen, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_PUSH_RTMP); + ModuleSession_PushStream_ClientInsert(lpszPushAddr, lpszClientAddr, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_PULL_RTMP); + return true; +} bool PushStream_RTMPTask_Handle(XENGINE_RTMPHDR* pSt_RTMPHdr, LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen) { int nRVLen = 0; @@ -189,6 +211,22 @@ bool PushStream_RTMPTask_Handle(XENGINE_RTMPHDR* pSt_RTMPHdr, LPCXSTR lpszClient XEngine_AVPacket_AVSetTime(lpszClientAddr, st_AVInfo.st_VideoInfo.nFrameRate, st_AVInfo.st_AudioInfo.nSampleRate); ModuleSession_PushStream_SetAVInfo(lpszClientAddr, &st_AVInfo); BaseLib_Memory_Free((XPPPMEM)&st_RTMPData.ppSt_CMDProperty, st_RTMPData.nCount); + //如果启用了预拉流 + if (st_ServiceConfig.st_XPull.st_PullRtmp.bPrePull) + { + XCHAR tszSMSAddr[MAX_PATH] = {}; + ModuleSession_PushStream_GetAddrForAddr(lpszClientAddr, tszSMSAddr); + + int nListCount = 0; + STREAMMEDIA_PULLLISTINFO** ppSt_PullList; + ModuleSession_PullStream_GetList(&ppSt_PullList, &nListCount, tszSMSAddr); + for (int i = 0; i < nListCount; i++) + { + PushStream_RTMPTask_Play(ppSt_PullList[i]->tszClientAddr, lpszClientAddr, ptszSDBuffer); + } + BaseLib_Memory_Free((XPPPMEM)&ppSt_PullList, nListCount); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("RTMP推流端:%s,预发布流通知成功,个数:%d"), lpszClientAddr, nListCount); + } XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("RTMP推流端:%s,请求数据协议解析成功,数据列表个数:%d"), lpszClientAddr, st_RTMPData.nCount); } else if (XENGINE_STREAMMEDIA_RTMP_MSGTYPE_COMMAND == pSt_RTMPHdr->byTypeID) @@ -334,6 +372,7 @@ bool PushStream_RTMPTask_Handle(XENGINE_RTMPHDR* pSt_RTMPHdr, LPCXSTR lpszClient } else if (0 == _tcsxnicmp(XENGINE_STREAMMEDIA_RTMP_COMMAND_PLAY, st_RTMPCommand.tszCMDName, strlen(XENGINE_STREAMMEDIA_RTMP_COMMAND_PLAY))) { + bool bSMSFound = false; XCHAR tszSMSAddr[2048]; XCHAR tszLiveName[MAX_PATH]; XCHAR tszPushAddr[MAX_PATH]; @@ -350,101 +389,90 @@ bool PushStream_RTMPTask_Handle(XENGINE_RTMPHDR* pSt_RTMPHdr, LPCXSTR lpszClient memset(st_RTMPCommand.tszCMDName, '\0', sizeof(st_RTMPCommand.tszCMDName)); st_RTMPCommand.nProCount = 0; st_RTMPCommand.nObCount = 0; - //发送RTMP包头 + //查找流 if (ModuleSession_PushStream_FindStream(tszSMSAddr, tszPushAddr)) { - //RTMP拉流端 - XENGINE_RTMPUSERCONTROL st_RTMPControl; - memset(&st_RTMPControl, '\0', sizeof(XENGINE_RTMPUSERCONTROL)); - - st_RTMPControl.nControlID = XENGINE_STREAMMEDIA_RTMP_CONTROL_STREAMBEGIN; - st_RTMPControl.nValue32 = 1; - //流开始 - RTMPProtocol_Help_PKTUserControl(ptszSDBuffer, &nSDLen, &st_RTMPControl); - XEngine_Network_Send(lpszClientAddr, ptszSDBuffer, nSDLen, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_PUSH_RTMP); - //状态,有没有这个流 - st_RTMPCommand.nProCount = 3; - BaseLib_Memory_Malloc((XPPPMEM)&st_RTMPCommand.ppSt_CMDProperty, st_RTMPCommand.nProCount, sizeof(XENGINE_RTMPCMDPROPERTY)); - - strcpy(st_RTMPCommand.tszCMDName, XENGINE_STREAMMEDIA_RTMP_COMMAND_ONSTATUS); - - _tcsxcpy(st_RTMPCommand.ppSt_CMDProperty[0]->tszKeyBuffer, "level"); - st_RTMPCommand.ppSt_CMDProperty[0]->st_CMDOBJect.byType = XENGINE_STREAMMEDIA_RTMP_PLTYPE_AFM0_STRING; - st_RTMPCommand.ppSt_CMDProperty[0]->st_CMDOBJect.nMLen = 6; - _tcsxcpy(st_RTMPCommand.ppSt_CMDProperty[0]->st_CMDOBJect.tszMsgBuffer, "status"); - - _tcsxcpy(st_RTMPCommand.ppSt_CMDProperty[1]->tszKeyBuffer, "code"); - st_RTMPCommand.ppSt_CMDProperty[1]->st_CMDOBJect.byType = XENGINE_STREAMMEDIA_RTMP_PLTYPE_AFM0_STRING; - st_RTMPCommand.ppSt_CMDProperty[1]->st_CMDOBJect.nMLen = 23; - _tcsxcpy(st_RTMPCommand.ppSt_CMDProperty[1]->st_CMDOBJect.tszMsgBuffer, "NetStream.Publish.Start"); - - _tcsxcpy(st_RTMPCommand.ppSt_CMDProperty[2]->tszKeyBuffer, "description"); - st_RTMPCommand.ppSt_CMDProperty[2]->st_CMDOBJect.byType = XENGINE_STREAMMEDIA_RTMP_PLTYPE_AFM0_STRING; - st_RTMPCommand.ppSt_CMDProperty[2]->st_CMDOBJect.nMLen = 10; - _tcsxcpy(st_RTMPCommand.ppSt_CMDProperty[2]->st_CMDOBJect.tszMsgBuffer, "Start live"); - - RTMPProtocol_Help_PKTCommand(ptszSDBuffer, &nSDLen, 5, &st_RTMPCommand); - XEngine_Network_Send(lpszClientAddr, ptszSDBuffer, nSDLen, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_PUSH_RTMP); + bSMSFound = true; } else { - st_RTMPCommand.nProCount = 4; - BaseLib_Memory_Malloc((XPPPMEM)&st_RTMPCommand.ppSt_CMDProperty, st_RTMPCommand.nProCount, sizeof(XENGINE_RTMPCMDPROPERTY)); - - strcpy(st_RTMPCommand.tszCMDName, XENGINE_STREAMMEDIA_RTMP_COMMAND_ONSTATUS); - - _tcsxcpy(st_RTMPCommand.ppSt_CMDProperty[0]->tszKeyBuffer, "level"); - st_RTMPCommand.ppSt_CMDProperty[0]->st_CMDOBJect.byType = XENGINE_STREAMMEDIA_RTMP_PLTYPE_AFM0_STRING; - st_RTMPCommand.ppSt_CMDProperty[0]->st_CMDOBJect.nMLen = 5; - _tcsxcpy(st_RTMPCommand.ppSt_CMDProperty[0]->st_CMDOBJect.tszMsgBuffer, "error"); - - LPCXSTR lpszCMDString = _X("NetStream.Play.StreamNotFound"); - _tcsxcpy(st_RTMPCommand.ppSt_CMDProperty[1]->tszKeyBuffer, "code"); - st_RTMPCommand.ppSt_CMDProperty[1]->st_CMDOBJect.byType = XENGINE_STREAMMEDIA_RTMP_PLTYPE_AFM0_STRING; - st_RTMPCommand.ppSt_CMDProperty[1]->st_CMDOBJect.nMLen = _tcsxlen(lpszCMDString); - _tcsxcpy(st_RTMPCommand.ppSt_CMDProperty[1]->st_CMDOBJect.tszMsgBuffer, lpszCMDString); - - LPCXSTR lpszCMDDescription = _X("The stream does not exist"); - _tcsxcpy(st_RTMPCommand.ppSt_CMDProperty[2]->tszKeyBuffer, "description"); - st_RTMPCommand.ppSt_CMDProperty[2]->st_CMDOBJect.byType = XENGINE_STREAMMEDIA_RTMP_PLTYPE_AFM0_STRING; - st_RTMPCommand.ppSt_CMDProperty[2]->st_CMDOBJect.nMLen = _tcsxlen(lpszCMDDescription); - _tcsxcpy(st_RTMPCommand.ppSt_CMDProperty[2]->st_CMDOBJect.tszMsgBuffer, lpszCMDDescription); - - _tcsxcpy(st_RTMPCommand.ppSt_CMDProperty[3]->tszKeyBuffer, "details"); - st_RTMPCommand.ppSt_CMDProperty[3]->st_CMDOBJect.byType = XENGINE_STREAMMEDIA_RTMP_PLTYPE_AFM0_STRING; - st_RTMPCommand.ppSt_CMDProperty[3]->st_CMDOBJect.nMLen = _tcsxlen(tszSMSAddr); - _tcsxcpy(st_RTMPCommand.ppSt_CMDProperty[3]->st_CMDOBJect.tszMsgBuffer, tszSMSAddr); - - RTMPProtocol_Help_PKTCommand(ptszSDBuffer, &nSDLen, 3, &st_RTMPCommand); - XEngine_Network_Send(lpszClientAddr, ptszSDBuffer, nSDLen, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_PUSH_RTMP); + bSMSFound = false; + //不存在,看看是否支持预拉流 + if (!st_ServiceConfig.st_XPull.st_PullRtmp.bPrePull) + { + st_RTMPCommand.nProCount = 4; + BaseLib_Memory_Malloc((XPPPMEM)&st_RTMPCommand.ppSt_CMDProperty, st_RTMPCommand.nProCount, sizeof(XENGINE_RTMPCMDPROPERTY)); + + strcpy(st_RTMPCommand.tszCMDName, XENGINE_STREAMMEDIA_RTMP_COMMAND_ONSTATUS); + + _tcsxcpy(st_RTMPCommand.ppSt_CMDProperty[0]->tszKeyBuffer, "level"); + st_RTMPCommand.ppSt_CMDProperty[0]->st_CMDOBJect.byType = XENGINE_STREAMMEDIA_RTMP_PLTYPE_AFM0_STRING; + st_RTMPCommand.ppSt_CMDProperty[0]->st_CMDOBJect.nMLen = 5; + _tcsxcpy(st_RTMPCommand.ppSt_CMDProperty[0]->st_CMDOBJect.tszMsgBuffer, "error"); + + LPCXSTR lpszCMDString = _X("NetStream.Play.StreamNotFound"); + _tcsxcpy(st_RTMPCommand.ppSt_CMDProperty[1]->tszKeyBuffer, "code"); + st_RTMPCommand.ppSt_CMDProperty[1]->st_CMDOBJect.byType = XENGINE_STREAMMEDIA_RTMP_PLTYPE_AFM0_STRING; + st_RTMPCommand.ppSt_CMDProperty[1]->st_CMDOBJect.nMLen = (XSHOT)_tcsxlen(lpszCMDString); + _tcsxcpy(st_RTMPCommand.ppSt_CMDProperty[1]->st_CMDOBJect.tszMsgBuffer, lpszCMDString); + + LPCXSTR lpszCMDDescription = _X("The stream does not exist"); + _tcsxcpy(st_RTMPCommand.ppSt_CMDProperty[2]->tszKeyBuffer, "description"); + st_RTMPCommand.ppSt_CMDProperty[2]->st_CMDOBJect.byType = XENGINE_STREAMMEDIA_RTMP_PLTYPE_AFM0_STRING; + st_RTMPCommand.ppSt_CMDProperty[2]->st_CMDOBJect.nMLen = (XSHOT)_tcsxlen(lpszCMDDescription); + _tcsxcpy(st_RTMPCommand.ppSt_CMDProperty[2]->st_CMDOBJect.tszMsgBuffer, lpszCMDDescription); + + _tcsxcpy(st_RTMPCommand.ppSt_CMDProperty[3]->tszKeyBuffer, "details"); + st_RTMPCommand.ppSt_CMDProperty[3]->st_CMDOBJect.byType = XENGINE_STREAMMEDIA_RTMP_PLTYPE_AFM0_STRING; + st_RTMPCommand.ppSt_CMDProperty[3]->st_CMDOBJect.nMLen = (XSHOT)_tcsxlen(tszSMSAddr); + _tcsxcpy(st_RTMPCommand.ppSt_CMDProperty[3]->st_CMDOBJect.tszMsgBuffer, tszSMSAddr); + + RTMPProtocol_Help_PKTCommand(ptszSDBuffer, &nSDLen, 3, &st_RTMPCommand); + XEngine_Network_Send(lpszClientAddr, ptszSDBuffer, nSDLen, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_PUSH_RTMP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("拉流端:%s,请求拉流的参数不正确:%s,流没有找到,错误:%lX"), lpszClientAddr, tszSMSAddr, ModuleSession_GetLastError()); - return false; + return false; + } } - //配置头 - int nHLen = 0; - int nPLen = 0; - XENGINE_PROTOCOL_AVINFO st_AVInfo; - memset(&st_AVInfo, '\0', sizeof(XENGINE_PROTOCOL_AVINFO)); + //RTMP拉流端 + XENGINE_RTMPUSERCONTROL st_RTMPControl; + memset(&st_RTMPControl, '\0', sizeof(XENGINE_RTMPUSERCONTROL)); - ModuleSession_PushStream_GetAVInfo(tszPushAddr, &st_AVInfo); + st_RTMPControl.nControlID = XENGINE_STREAMMEDIA_RTMP_CONTROL_STREAMBEGIN; + st_RTMPControl.nValue32 = 1; + //流开始 + RTMPProtocol_Help_PKTUserControl(ptszSDBuffer, &nSDLen, &st_RTMPControl); + XEngine_Network_Send(lpszClientAddr, ptszSDBuffer, nSDLen, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_PUSH_RTMP); + //状态 + st_RTMPCommand.nProCount = 3; + BaseLib_Memory_Malloc((XPPPMEM)&st_RTMPCommand.ppSt_CMDProperty, st_RTMPCommand.nProCount, sizeof(XENGINE_RTMPCMDPROPERTY)); - RTMPProtocol_Packet_FrameAVScript(ptszSDBuffer + nHLen, &nPLen, &st_AVInfo); - nHLen += nPLen; - if (st_AVInfo.st_VideoInfo.bEnable) - { - RTMPProtocol_Packet_FrameAVCConfigure(ptszSDBuffer + nHLen, &nPLen, &st_AVInfo); - nHLen += nPLen; - } - if (st_AVInfo.st_AudioInfo.bEnable) + strcpy(st_RTMPCommand.tszCMDName, XENGINE_STREAMMEDIA_RTMP_COMMAND_ONSTATUS); + + _tcsxcpy(st_RTMPCommand.ppSt_CMDProperty[0]->tszKeyBuffer, "level"); + st_RTMPCommand.ppSt_CMDProperty[0]->st_CMDOBJect.byType = XENGINE_STREAMMEDIA_RTMP_PLTYPE_AFM0_STRING; + st_RTMPCommand.ppSt_CMDProperty[0]->st_CMDOBJect.nMLen = 6; + _tcsxcpy(st_RTMPCommand.ppSt_CMDProperty[0]->st_CMDOBJect.tszMsgBuffer, "status"); + + _tcsxcpy(st_RTMPCommand.ppSt_CMDProperty[1]->tszKeyBuffer, "code"); + st_RTMPCommand.ppSt_CMDProperty[1]->st_CMDOBJect.byType = XENGINE_STREAMMEDIA_RTMP_PLTYPE_AFM0_STRING; + st_RTMPCommand.ppSt_CMDProperty[1]->st_CMDOBJect.nMLen = 23; + _tcsxcpy(st_RTMPCommand.ppSt_CMDProperty[1]->st_CMDOBJect.tszMsgBuffer, "NetStream.Publish.Start"); + + _tcsxcpy(st_RTMPCommand.ppSt_CMDProperty[2]->tszKeyBuffer, "description"); + st_RTMPCommand.ppSt_CMDProperty[2]->st_CMDOBJect.byType = XENGINE_STREAMMEDIA_RTMP_PLTYPE_AFM0_STRING; + st_RTMPCommand.ppSt_CMDProperty[2]->st_CMDOBJect.nMLen = 10; + _tcsxcpy(st_RTMPCommand.ppSt_CMDProperty[2]->st_CMDOBJect.tszMsgBuffer, "Start live"); + + RTMPProtocol_Help_PKTCommand(ptszSDBuffer, &nSDLen, 5, &st_RTMPCommand); + XEngine_Network_Send(lpszClientAddr, ptszSDBuffer, nSDLen, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_PUSH_RTMP); + + //配置头 + if (bSMSFound) { - RTMPProtocol_Packet_FrameAACConfigure(ptszSDBuffer + nHLen, &nPLen, &st_AVInfo); - nHLen += nPLen; + PushStream_RTMPTask_Play(lpszClientAddr, tszPushAddr, ptszSDBuffer); } - //返回数据, - XEngine_Network_Send(lpszClientAddr, ptszSDBuffer, nHLen, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_PUSH_RTMP); - ModuleSession_PullStream_Insert(lpszClientAddr, tszSMSAddr, tszPushAddr, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_PULL_RTMP); - ModuleSession_PushStream_ClientInsert(tszPushAddr, lpszClientAddr, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_PULL_RTMP); + return true; } else { diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PushStream/PushStream_RTMPTask.h b/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PushStream/PushStream_RTMPTask.h index 519e855..0353ebb 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PushStream/PushStream_RTMPTask.h +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PushStream/PushStream_RTMPTask.h @@ -12,5 +12,7 @@ *********************************************************************/ //任务处理池,用来获取一个完整包 XHTHREAD CALLBACK PushStream_RTMPTask_Thread(XPVOID lParam); +//预处理封包 +bool PushStream_RTMPTask_Play(LPCXSTR lpszClientAddr, LPCXSTR lpszPushAddr, XCHAR* ptszSDBuffer); //任务处理相关函数,处理包的内容 bool PushStream_RTMPTask_Handle(XENGINE_RTMPHDR* pSt_RTMPHdr, LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen); \ No newline at end of file From e4dfd6a05202c46412339168abf5e9da9702459b Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Sat, 5 Apr 2025 15:32:29 +0800 Subject: [PATCH 17/27] fixed:incorrect not set push stream addr when pre-play client leave --- .../StreamMedia_PushStream/PushStream_RTMPTask.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PushStream/PushStream_RTMPTask.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PushStream/PushStream_RTMPTask.cpp index 778e70b..acb46d0 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PushStream/PushStream_RTMPTask.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PushStream/PushStream_RTMPTask.cpp @@ -223,6 +223,7 @@ bool PushStream_RTMPTask_Handle(XENGINE_RTMPHDR* pSt_RTMPHdr, LPCXSTR lpszClient for (int i = 0; i < nListCount; i++) { PushStream_RTMPTask_Play(ppSt_PullList[i]->tszClientAddr, lpszClientAddr, ptszSDBuffer); + ModuleSession_PullStream_SetPushAddr(ppSt_PullList[i]->tszClientAddr, lpszClientAddr); } BaseLib_Memory_Free((XPPPMEM)&ppSt_PullList, nListCount); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("RTMP推流端:%s,预发布流通知成功,个数:%d"), lpszClientAddr, nListCount); From b3d11ff8ddaa2d6fb3eb97ba7e62aab0fdb8c9a0 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Sat, 5 Apr 2025 16:00:49 +0800 Subject: [PATCH 18/27] modify:unified pre play code --- .../PushStream_RTMPTask.cpp | 17 +------------ .../XEngine_AVPacket.cpp | 25 +++++++++++++++++++ .../XEngine_StreamMediaApp/XEngine_AVPacket.h | 1 + 3 files changed, 27 insertions(+), 16 deletions(-) diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PushStream/PushStream_RTMPTask.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PushStream/PushStream_RTMPTask.cpp index acb46d0..9c8da1e 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PushStream/PushStream_RTMPTask.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PushStream/PushStream_RTMPTask.cpp @@ -212,22 +212,7 @@ bool PushStream_RTMPTask_Handle(XENGINE_RTMPHDR* pSt_RTMPHdr, LPCXSTR lpszClient ModuleSession_PushStream_SetAVInfo(lpszClientAddr, &st_AVInfo); BaseLib_Memory_Free((XPPPMEM)&st_RTMPData.ppSt_CMDProperty, st_RTMPData.nCount); //如果启用了预拉流 - if (st_ServiceConfig.st_XPull.st_PullRtmp.bPrePull) - { - XCHAR tszSMSAddr[MAX_PATH] = {}; - ModuleSession_PushStream_GetAddrForAddr(lpszClientAddr, tszSMSAddr); - - int nListCount = 0; - STREAMMEDIA_PULLLISTINFO** ppSt_PullList; - ModuleSession_PullStream_GetList(&ppSt_PullList, &nListCount, tszSMSAddr); - for (int i = 0; i < nListCount; i++) - { - PushStream_RTMPTask_Play(ppSt_PullList[i]->tszClientAddr, lpszClientAddr, ptszSDBuffer); - ModuleSession_PullStream_SetPushAddr(ppSt_PullList[i]->tszClientAddr, lpszClientAddr); - } - BaseLib_Memory_Free((XPPPMEM)&ppSt_PullList, nListCount); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("RTMP推流端:%s,预发布流通知成功,个数:%d"), lpszClientAddr, nListCount); - } + XEngine_AVPacket_AVPrePlay(lpszClientAddr, ptszSDBuffer, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_PUSH_RTMP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("RTMP推流端:%s,请求数据协议解析成功,数据列表个数:%d"), lpszClientAddr, st_RTMPData.nCount); } else if (XENGINE_STREAMMEDIA_RTMP_MSGTYPE_COMMAND == pSt_RTMPHdr->byTypeID) diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_AVPacket.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_AVPacket.cpp index b2c0cfa..ad1676a 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_AVPacket.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_AVPacket.cpp @@ -80,6 +80,31 @@ bool XEngine_AVPacket_AVSetTime(LPCXSTR lpszClientAddr, int nVideoParament, int } return true; } +bool XEngine_AVPacket_AVPrePlay(LPCXSTR lpszClientAddr, XCHAR* ptszSDBuffer, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE enPushType) +{ + XCHAR tszSMSAddr[MAX_PATH] = {}; + ModuleSession_PushStream_GetAddrForAddr(lpszClientAddr, tszSMSAddr); + //获得所有预拉流客户端 + int nListCount = 0; + STREAMMEDIA_PULLLISTINFO** ppSt_PullList; + ModuleSession_PullStream_GetList(&ppSt_PullList, &nListCount, tszSMSAddr); + for (int i = 0; i < nListCount; i++) + { + //rtmp预拉流 + if (st_ServiceConfig.st_XPull.st_PullRtmp.bPrePull && ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_PUSH_RTMP == enPushType) + { + //判断客户端 + if (ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_PULL_RTMP == ppSt_PullList[i]->enStreamType) + { + PushStream_RTMPTask_Play(ppSt_PullList[i]->tszClientAddr, lpszClientAddr, ptszSDBuffer); + ModuleSession_PullStream_SetPushAddr(ppSt_PullList[i]->tszClientAddr, lpszClientAddr); + } + } + } + BaseLib_Memory_Free((XPPPMEM)&ppSt_PullList, nListCount); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("RTMP推流端:%s,预发布流通知成功,个数:%d"), lpszClientAddr, nListCount); + return true; +} bool XEngine_AVPacket_AVHdr(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen, XBYTE byAVType, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE enClientType) { XENGINE_PROTOCOL_AVINFO st_AVInfo = {}; diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_AVPacket.h b/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_AVPacket.h index d42f2f1..876c895 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_AVPacket.h +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_AVPacket.h @@ -20,5 +20,6 @@ typedef struct bool XEngine_AVPacket_AVCreate(LPCXSTR lpszClientAddr); bool XEngine_AVPacket_AVDelete(LPCXSTR lpszClientAddr); bool XEngine_AVPacket_AVSetTime(LPCXSTR lpszClientAddr, int nVideoParament, int nAudioParament); +bool XEngine_AVPacket_AVPrePlay(LPCXSTR lpszClientAddr, XCHAR* ptszSDBuffer, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE enPushType); bool XEngine_AVPacket_AVHdr(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen, XBYTE byAVType, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE enClientType); bool XEngine_AVPacket_AVFrame(XCHAR* ptszSDBuffer, int* pInt_SDLen, XCHAR* ptszRVBuffer, int* pInt_RVLen, LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen, XBYTE byAVType); \ No newline at end of file From 6c5b500615e8cc66f697778e176e017cd76dbed6 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Tue, 8 Apr 2025 14:27:51 +0800 Subject: [PATCH 19/27] added:flv play with pre pull support --- .../PullStream_ClientGet.cpp | 139 ++++++++++-------- .../PullStream_ClientGet.h | 1 + .../PushStream_RTMPTask.cpp | 6 +- .../PushStream_RTMPTask.h | 2 +- .../XEngine_AVPacket.cpp | 13 +- .../XEngine_StreamMediaApp/XEngine_AVPacket.h | 2 +- 6 files changed, 91 insertions(+), 72 deletions(-) diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PullStream/PullStream_ClientGet.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PullStream/PullStream_ClientGet.cpp index a80337c..0a4dea3 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PullStream/PullStream_ClientGet.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PullStream/PullStream_ClientGet.cpp @@ -10,6 +10,55 @@ // Purpose: 拉流任务处理函数 // History: *********************************************************************/ +bool PullStream_ClientGet_FLVPlay(LPCXSTR lpszClientAddr, LPCXSTR lpszPushAddr, XCHAR* ptszSDBuffer, XCHAR* ptszRVBuffer) +{ + int nRVLen = 0; + int nSDLen = 0; + XENGINE_PROTOCOL_AVINFO st_AVInfo = {}; + //拷贝头 + FLVProtocol_Packet_FrameHdr(lpszPushAddr, ptszRVBuffer, &nRVLen); + nSDLen = _xstprintf(ptszSDBuffer, _X("%x\r\n"), nRVLen); + memcpy(ptszSDBuffer + nSDLen, ptszRVBuffer, nRVLen); + nSDLen += nRVLen; + memcpy(ptszSDBuffer + nSDLen, _X("\r\n"), 2); + nSDLen += 2; + XEngine_Network_Send(lpszClientAddr, ptszSDBuffer, nSDLen, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_HTTP); + //标签信息 + int nTagSize = 0; + ModuleSession_PushStream_GetAVInfo(lpszPushAddr, &st_AVInfo); + FLVProtocol_Packet_FrameScript(lpszPushAddr, ptszRVBuffer, &nRVLen, &st_AVInfo, &nTagSize); + nSDLen = _xstprintf(ptszSDBuffer, _X("%x\r\n"), nRVLen); + memcpy(ptszSDBuffer + nSDLen, ptszRVBuffer, nRVLen); + nSDLen += nRVLen; + memcpy(ptszSDBuffer + nSDLen, _X("\r\n"), 2); + nSDLen += 2; + XEngine_Network_Send(lpszClientAddr, ptszSDBuffer, nSDLen, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_HTTP); + //发送音视频信息 + if (st_AVInfo.st_VideoInfo.bEnable) + { + FLVProtocol_Packet_FrameAVCConfigure(lpszPushAddr, ptszRVBuffer, &nRVLen, &st_AVInfo, &nTagSize); + nSDLen = _xstprintf(ptszSDBuffer, _X("%x\r\n"), nRVLen); + memcpy(ptszSDBuffer + nSDLen, ptszRVBuffer, nRVLen); + nSDLen += nRVLen; + memcpy(ptszSDBuffer + nSDLen, _X("\r\n"), 2); + nSDLen += 2; + XEngine_Network_Send(lpszClientAddr, ptszSDBuffer, nSDLen, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_HTTP); + } + + if (st_AVInfo.st_AudioInfo.bEnable) + { + FLVProtocol_Packet_FrameAACConfigure(lpszPushAddr, ptszRVBuffer, &nRVLen, &st_AVInfo, &nTagSize); + nSDLen = _xstprintf(ptszSDBuffer, _X("%x\r\n"), nRVLen); + memcpy(ptszSDBuffer + nSDLen, ptszRVBuffer, nRVLen); + nSDLen += nRVLen; + memcpy(ptszSDBuffer + nSDLen, _X("\r\n"), 2); + nSDLen += 2; + XEngine_Network_Send(lpszClientAddr, ptszSDBuffer, nSDLen, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_HTTP); + } + ModuleSession_PullStream_FLVTagSet(lpszClientAddr, nTagSize); + ModuleSession_PushStream_ClientInsert(lpszPushAddr, lpszClientAddr, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_PULL_FLV); + return true; +} bool PullStream_ClientGet_Handle(LPCXSTR lpszClientAddr, XCHAR*** ppptszListHdr, int nListCount) { int nRVLen = 0; @@ -45,33 +94,31 @@ bool PullStream_ClientGet_Handle(LPCXSTR lpszClientAddr, XCHAR*** ppptszListHdr, memset(tszVluBuffer, '\0', sizeof(tszVluBuffer)); BaseLib_String_GetKeyValue((*ppptszListHdr)[1], "=", tszKeyBuffer, tszSMSAddr); - - if (!ModuleSession_PushStream_FindStream(tszSMSAddr, tszPushAddr)) - { - ModuleProtocol_Packet_Comm(tszRVBuffer, &nRVLen, NULL, 404, "not found"); - HttpProtocol_Server_SendMsgEx(xhHttpPacket, tszSDBuffer, &nSDLen, &st_HDRParam, tszRVBuffer, nRVLen); - XEngine_Network_Send(lpszClientAddr, tszSDBuffer, nSDLen, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_HTTP); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("拉流端:%s,请求拉流的URL参数不正确:%s,可能流不存在,错误:%lX"), lpszClientAddr, tszVluBuffer, ModuleSession_GetLastError()); - return false; - } memset(tszVluBuffer, '\0', sizeof(tszVluBuffer)); BaseLib_String_GetKeyValue((*ppptszListHdr)[2], "=", tszKeyBuffer, tszVluBuffer); ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE enStreamType; if (0 == _tcsxnicmp(tszVluBuffer, "flv", 3)) { - if (!ModuleSession_PushStream_FindStream(tszSMSAddr, tszPushAddr)) + bool bSMSFound = false; + if (ModuleSession_PushStream_FindStream(tszSMSAddr, tszPushAddr)) { - ModuleProtocol_Packet_Comm(tszRVBuffer, &nRVLen, NULL, 404, "not found"); - HttpProtocol_Server_SendMsgEx(xhHttpPacket, tszSDBuffer, &nSDLen, &st_HDRParam, tszRVBuffer, nRVLen); - XEngine_Network_Send(lpszClientAddr, tszSDBuffer, nSDLen, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_HTTP); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("拉流端:%s,请求拉流的URL参数不正确:%s,可能流不存在,错误:%lX"), lpszClientAddr, tszVluBuffer, ModuleSession_GetLastError()); - return false; + bSMSFound = true; + } + else + { + if (!st_ServiceConfig.st_XPull.st_PullFlv.bPrePull) + { + ModuleProtocol_Packet_Comm(tszRVBuffer, &nRVLen, NULL, 404, "not found"); + HttpProtocol_Server_SendMsgEx(xhHttpPacket, tszSDBuffer, &nSDLen, &st_HDRParam, tszRVBuffer, nRVLen); + XEngine_Network_Send(lpszClientAddr, tszSDBuffer, nSDLen, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_HTTP); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("拉流端:%s,请求拉流的URL参数不正确:%s,可能流不存在,错误:%lX"), lpszClientAddr, tszVluBuffer, ModuleSession_GetLastError()); + return false; + } + bSMSFound = false; } - int nTagSize = 0; enStreamType = ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_PULL_FLV; - //拷贝数据 - FLVProtocol_Packet_FrameHdr(tszPushAddr, tszRVBuffer, &nRVLen); + //返回数据,为HTTP CHUNKED nSDLen = _xstprintf(tszSDBuffer, _X("HTTP/1.1 200 OK\r\n" "Connection: Close\r\n" @@ -79,58 +126,23 @@ bool PullStream_ClientGet_Handle(LPCXSTR lpszClientAddr, XCHAR*** ppptszListHdr, "Server: XEngine/%s\r\n" "Access-Control-Allow-Origin: *\r\n" "Access-Control-Allow-Credentials: true\r\n" - "Transfer-Encoding: chunked\r\n\r\n" - "%x\r\n"), BaseLib_Version_XTypeStr(), nRVLen); - memcpy(tszSDBuffer + nSDLen, tszRVBuffer, nRVLen); - nSDLen += nRVLen; - memcpy(tszSDBuffer + nSDLen, _X("\r\n"), 2); - nSDLen += 2; + "Transfer-Encoding: chunked\r\n\r\n"), BaseLib_Version_XTypeStr()); XEngine_Network_Send(lpszClientAddr, tszSDBuffer, nSDLen, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_HTTP); - //发送脚本信息 - XENGINE_PROTOCOL_AVINFO st_AVInfo; - - memset(&st_AVInfo, '\0', sizeof(XENGINE_PROTOCOL_AVINFO)); - memset(tszRVBuffer, '\0', sizeof(tszRVBuffer)); - memset(tszSDBuffer, '\0', sizeof(tszSDBuffer)); - ModuleSession_PushStream_GetAVInfo(tszPushAddr, &st_AVInfo); - FLVProtocol_Packet_FrameScript(tszPushAddr, tszRVBuffer, &nRVLen, &st_AVInfo, &nTagSize); - nSDLen = _xstprintf(tszSDBuffer, _X("%x\r\n"), nRVLen); - memcpy(tszSDBuffer + nSDLen, tszRVBuffer, nRVLen); - nSDLen += nRVLen; - memcpy(tszSDBuffer + nSDLen, _X("\r\n"), 2); - nSDLen += 2; - XEngine_Network_Send(lpszClientAddr, tszSDBuffer, nSDLen, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_HTTP); - //发送音视频信息 - if (st_AVInfo.st_VideoInfo.bEnable) - { - FLVProtocol_Packet_FrameAVCConfigure(tszPushAddr, tszRVBuffer, &nRVLen, &st_AVInfo, &nTagSize); - nSDLen = _xstprintf(tszSDBuffer, _X("%x\r\n"), nRVLen); - memcpy(tszSDBuffer + nSDLen, tszRVBuffer, nRVLen); - nSDLen += nRVLen; - memcpy(tszSDBuffer + nSDLen, _X("\r\n"), 2); - nSDLen += 2; - XEngine_Network_Send(lpszClientAddr, tszSDBuffer, nSDLen, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_HTTP); - } - - if (st_AVInfo.st_AudioInfo.bEnable) + ModuleSession_PullStream_Insert(lpszClientAddr, tszSMSAddr, tszPushAddr, enStreamType); + if (bSMSFound) { - FLVProtocol_Packet_FrameAACConfigure(tszPushAddr, tszRVBuffer, &nRVLen, &st_AVInfo, &nTagSize); - nSDLen = _xstprintf(tszSDBuffer, _X("%x\r\n"), nRVLen); - memcpy(tszSDBuffer + nSDLen, tszRVBuffer, nRVLen); - nSDLen += nRVLen; - memcpy(tszSDBuffer + nSDLen, _X("\r\n"), 2); - nSDLen += 2; - XEngine_Network_Send(lpszClientAddr, tszSDBuffer, nSDLen, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_HTTP); + PullStream_ClientGet_FLVPlay(lpszClientAddr, tszPushAddr, tszSDBuffer, tszRVBuffer); } - - ModuleSession_PullStream_Insert(lpszClientAddr, tszSMSAddr, tszPushAddr, enStreamType); - ModuleSession_PushStream_ClientInsert(tszPushAddr, lpszClientAddr, enStreamType); - ModuleSession_PullStream_FLVTagSet(lpszClientAddr, nTagSize); } else if (0 == _tcsxnicmp(tszVluBuffer, "xstream", 7)) { - if (!st_ServiceConfig.st_XPull.st_PullXStream.bPrePull) + bool bSMSFound = false; + if (st_ServiceConfig.st_XPull.st_PullXStream.bPrePull) + { + bSMSFound = true; + } + else { if (!ModuleSession_PushStream_FindStream(tszSMSAddr, tszPushAddr)) { @@ -140,6 +152,7 @@ bool PullStream_ClientGet_Handle(LPCXSTR lpszClientAddr, XCHAR*** ppptszListHdr, XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("拉流端:%s,请求拉流的URL参数不正确:%s,可能流不存在,错误:%lX"), lpszClientAddr, tszVluBuffer, ModuleSession_GetLastError()); return false; } + bSMSFound = false; } enStreamType = ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_PULL_XSTREAM; XENGINE_PROTOCOL_AVINFO st_AVInfo; diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PullStream/PullStream_ClientGet.h b/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PullStream/PullStream_ClientGet.h index 55c6c99..b9273f2 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PullStream/PullStream_ClientGet.h +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PullStream/PullStream_ClientGet.h @@ -10,5 +10,6 @@ // Purpose: 拉流任务处理函数 // History: *********************************************************************/ +bool PullStream_ClientGet_FLVPlay(LPCXSTR lpszClientAddr, LPCXSTR lpszPushAddr, XCHAR* ptszSDBuffer, XCHAR* ptszRVBuffer); //任务处理相关函数,处理包的内容 bool PullStream_ClientGet_Handle(LPCXSTR lpszClientAddr, XCHAR*** ppptszListHdr, int nListCount); \ No newline at end of file diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PushStream/PushStream_RTMPTask.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PushStream/PushStream_RTMPTask.cpp index 9c8da1e..cda1a57 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PushStream/PushStream_RTMPTask.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PushStream/PushStream_RTMPTask.cpp @@ -48,7 +48,7 @@ XHTHREAD CALLBACK PushStream_RTMPTask_Thread(XPVOID lParam) } return 0; } -bool PushStream_RTMPTask_Play(LPCXSTR lpszClientAddr, LPCXSTR lpszPushAddr, XCHAR* ptszSDBuffer) +bool PushStream_RTMPTask_Play(LPCXSTR lpszClientAddr, LPCXSTR lpszPushAddr, XCHAR* ptszSDBuffer, XCHAR* ptszRVBuffer) { int nHLen = 0; int nPLen = 0; @@ -212,7 +212,7 @@ bool PushStream_RTMPTask_Handle(XENGINE_RTMPHDR* pSt_RTMPHdr, LPCXSTR lpszClient ModuleSession_PushStream_SetAVInfo(lpszClientAddr, &st_AVInfo); BaseLib_Memory_Free((XPPPMEM)&st_RTMPData.ppSt_CMDProperty, st_RTMPData.nCount); //如果启用了预拉流 - XEngine_AVPacket_AVPrePlay(lpszClientAddr, ptszSDBuffer, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_PUSH_RTMP); + XEngine_AVPacket_AVPrePlay(lpszClientAddr, ptszSDBuffer, ptszRVBuffer, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_PUSH_RTMP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("RTMP推流端:%s,请求数据协议解析成功,数据列表个数:%d"), lpszClientAddr, st_RTMPData.nCount); } else if (XENGINE_STREAMMEDIA_RTMP_MSGTYPE_COMMAND == pSt_RTMPHdr->byTypeID) @@ -455,7 +455,7 @@ bool PushStream_RTMPTask_Handle(XENGINE_RTMPHDR* pSt_RTMPHdr, LPCXSTR lpszClient //配置头 if (bSMSFound) { - PushStream_RTMPTask_Play(lpszClientAddr, tszPushAddr, ptszSDBuffer); + PushStream_RTMPTask_Play(lpszClientAddr, tszPushAddr, ptszSDBuffer, ptszRVBuffer); } ModuleSession_PullStream_Insert(lpszClientAddr, tszSMSAddr, tszPushAddr, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_PULL_RTMP); return true; diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PushStream/PushStream_RTMPTask.h b/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PushStream/PushStream_RTMPTask.h index 0353ebb..ae39a32 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PushStream/PushStream_RTMPTask.h +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PushStream/PushStream_RTMPTask.h @@ -13,6 +13,6 @@ //任务处理池,用来获取一个完整包 XHTHREAD CALLBACK PushStream_RTMPTask_Thread(XPVOID lParam); //预处理封包 -bool PushStream_RTMPTask_Play(LPCXSTR lpszClientAddr, LPCXSTR lpszPushAddr, XCHAR* ptszSDBuffer); +bool PushStream_RTMPTask_Play(LPCXSTR lpszClientAddr, LPCXSTR lpszPushAddr, XCHAR* ptszSDBuffer, XCHAR* ptszRVBuffer); //任务处理相关函数,处理包的内容 bool PushStream_RTMPTask_Handle(XENGINE_RTMPHDR* pSt_RTMPHdr, LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen); \ No newline at end of file diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_AVPacket.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_AVPacket.cpp index ad1676a..d8a217b 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_AVPacket.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_AVPacket.cpp @@ -80,7 +80,7 @@ bool XEngine_AVPacket_AVSetTime(LPCXSTR lpszClientAddr, int nVideoParament, int } return true; } -bool XEngine_AVPacket_AVPrePlay(LPCXSTR lpszClientAddr, XCHAR* ptszSDBuffer, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE enPushType) +bool XEngine_AVPacket_AVPrePlay(LPCXSTR lpszClientAddr, XCHAR* ptszSDBuffer, XCHAR* ptszRVBuffer, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE enPushType) { XCHAR tszSMSAddr[MAX_PATH] = {}; ModuleSession_PushStream_GetAddrForAddr(lpszClientAddr, tszSMSAddr); @@ -91,12 +91,17 @@ bool XEngine_AVPacket_AVPrePlay(LPCXSTR lpszClientAddr, XCHAR* ptszSDBuffer, ENU for (int i = 0; i < nListCount; i++) { //rtmp预拉流 - if (st_ServiceConfig.st_XPull.st_PullRtmp.bPrePull && ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_PUSH_RTMP == enPushType) + if (ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_PUSH_RTMP == enPushType) { //判断客户端 - if (ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_PULL_RTMP == ppSt_PullList[i]->enStreamType) + if (st_ServiceConfig.st_XPull.st_PullRtmp.bPrePull && ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_PULL_RTMP == ppSt_PullList[i]->enStreamType) { - PushStream_RTMPTask_Play(ppSt_PullList[i]->tszClientAddr, lpszClientAddr, ptszSDBuffer); + PushStream_RTMPTask_Play(ppSt_PullList[i]->tszClientAddr, lpszClientAddr, ptszSDBuffer, ptszRVBuffer); + ModuleSession_PullStream_SetPushAddr(ppSt_PullList[i]->tszClientAddr, lpszClientAddr); + } + if (st_ServiceConfig.st_XPull.st_PullFlv.bPrePull && ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_PULL_FLV == ppSt_PullList[i]->enStreamType) + { + PullStream_ClientGet_FLVPlay(ppSt_PullList[i]->tszClientAddr, lpszClientAddr, ptszSDBuffer, ptszRVBuffer); ModuleSession_PullStream_SetPushAddr(ppSt_PullList[i]->tszClientAddr, lpszClientAddr); } } diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_AVPacket.h b/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_AVPacket.h index 876c895..32bff5c 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_AVPacket.h +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_AVPacket.h @@ -20,6 +20,6 @@ typedef struct bool XEngine_AVPacket_AVCreate(LPCXSTR lpszClientAddr); bool XEngine_AVPacket_AVDelete(LPCXSTR lpszClientAddr); bool XEngine_AVPacket_AVSetTime(LPCXSTR lpszClientAddr, int nVideoParament, int nAudioParament); -bool XEngine_AVPacket_AVPrePlay(LPCXSTR lpszClientAddr, XCHAR* ptszSDBuffer, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE enPushType); +bool XEngine_AVPacket_AVPrePlay(LPCXSTR lpszClientAddr, XCHAR* ptszSDBuffer, XCHAR* ptszRVBuffer, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE enPushType); bool XEngine_AVPacket_AVHdr(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen, XBYTE byAVType, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE enClientType); bool XEngine_AVPacket_AVFrame(XCHAR* ptszSDBuffer, int* pInt_SDLen, XCHAR* ptszRVBuffer, int* pInt_RVLen, LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen, XBYTE byAVType); \ No newline at end of file From 4543a5d671561f0ee346b1226a5df266842e0ba0 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Tue, 8 Apr 2025 14:36:26 +0800 Subject: [PATCH 20/27] added:xstream play with pre pull support --- .../PullStream_ClientGet.cpp | 42 +++++++++++-------- .../PullStream_ClientGet.h | 1 + 2 files changed, 26 insertions(+), 17 deletions(-) diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PullStream/PullStream_ClientGet.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PullStream/PullStream_ClientGet.cpp index 0a4dea3..c792a67 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PullStream/PullStream_ClientGet.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PullStream/PullStream_ClientGet.cpp @@ -59,6 +59,23 @@ bool PullStream_ClientGet_FLVPlay(LPCXSTR lpszClientAddr, LPCXSTR lpszPushAddr, ModuleSession_PushStream_ClientInsert(lpszPushAddr, lpszClientAddr, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_PULL_FLV); return true; } +bool PullStream_ClientGet_XStreamPlay(LPCXSTR lpszClientAddr, LPCXSTR lpszPushAddr, XCHAR* ptszSDBuffer, XCHAR* ptszRVBuffer) +{ + int nRVLen = 0; + int nSDLen = 0; + XENGINE_PROTOCOL_AVINFO st_AVInfo = {}; + //拷贝头 + ModuleSession_PushStream_GetAVInfo(lpszPushAddr, &st_AVInfo); + nRVLen = sizeof(XENGINE_PROTOCOL_AVINFO); + nSDLen = _xstprintf(ptszSDBuffer, _X("%x\r\n"), nRVLen); + memcpy(ptszSDBuffer + nSDLen, ptszRVBuffer, nRVLen); + nSDLen += nRVLen; + memcpy(ptszSDBuffer + nSDLen, _X("\r\n"), 2); + nSDLen += 2; + XEngine_Network_Send(lpszClientAddr, ptszSDBuffer, nSDLen, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_HTTP); + ModuleSession_PushStream_ClientInsert(lpszPushAddr, lpszClientAddr, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_PULL_XSTREAM); + return true; +} bool PullStream_ClientGet_Handle(LPCXSTR lpszClientAddr, XCHAR*** ppptszListHdr, int nListCount) { int nRVLen = 0; @@ -155,14 +172,8 @@ bool PullStream_ClientGet_Handle(LPCXSTR lpszClientAddr, XCHAR*** ppptszListHdr, bSMSFound = false; } enStreamType = ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_PULL_XSTREAM; - XENGINE_PROTOCOL_AVINFO st_AVInfo; - - memset(&st_AVInfo, '\0', sizeof(XENGINE_PROTOCOL_AVINFO)); + memset(tszSDBuffer, '\0', sizeof(tszSDBuffer)); - - ModuleSession_PushStream_GetAVInfo(tszPushAddr, &st_AVInfo); - - nRVLen = sizeof(XENGINE_PROTOCOL_AVINFO); //返回数据,为HTTP CHUNKED nSDLen = _xstprintf(tszSDBuffer, _X("HTTP/1.1 200 OK\r\n" "Connection: Close\r\n" @@ -170,17 +181,14 @@ bool PullStream_ClientGet_Handle(LPCXSTR lpszClientAddr, XCHAR*** ppptszListHdr, "Server: XEngine/%s\r\n" "Access-Control-Allow-Origin: *\r\n" "Access-Control-Allow-Credentials: true\r\n" - "Transfer-Encoding: chunked\r\n\r\n" - "%x\r\n"), BaseLib_Version_XTypeStr(), nRVLen); - memcpy(tszSDBuffer + nSDLen, &st_AVInfo, nRVLen); - nSDLen += nRVLen; - memcpy(tszSDBuffer + nSDLen, _X("\r\n"), 2); - nSDLen += 2; - + "Transfer-Encoding: chunked\r\n\r\n"), BaseLib_Version_XTypeStr()); XEngine_Network_Send(lpszClientAddr, tszSDBuffer, nSDLen, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_HTTP); - + ModuleSession_PullStream_Insert(lpszClientAddr, tszSMSAddr, tszPushAddr, enStreamType); - ModuleSession_PushStream_ClientInsert(tszPushAddr, lpszClientAddr, enStreamType); + if (bSMSFound) + { + PullStream_ClientGet_XStreamPlay(lpszClientAddr, tszPushAddr, tszSDBuffer, tszRVBuffer); + } } else if (0 == _tcsxnicmp(tszVluBuffer, "ts", 2)) { @@ -219,7 +227,7 @@ bool PullStream_ClientGet_Handle(LPCXSTR lpszClientAddr, XCHAR*** ppptszListHdr, XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("拉流端:%s,请求拉流的数据类型不支持:%s,错误:%lX"), lpszClientAddr, tszVluBuffer, ModuleSession_GetLastError()); return false; } - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("拉流端:%s,请求拉流数据成功:%s"), lpszClientAddr, tszVluBuffer); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("拉流端:%s,请求拉流数据类型:%s,地址:%s 成功"), lpszClientAddr, tszVluBuffer, tszSMSAddr); } else if (0 == _tcsxnicmp(lpszStreamStop, tszVluBuffer, _tcsxlen(lpszStreamStop))) { diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PullStream/PullStream_ClientGet.h b/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PullStream/PullStream_ClientGet.h index b9273f2..3afb160 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PullStream/PullStream_ClientGet.h +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PullStream/PullStream_ClientGet.h @@ -11,5 +11,6 @@ // History: *********************************************************************/ bool PullStream_ClientGet_FLVPlay(LPCXSTR lpszClientAddr, LPCXSTR lpszPushAddr, XCHAR* ptszSDBuffer, XCHAR* ptszRVBuffer); +bool PullStream_ClientGet_XStreamPlay(LPCXSTR lpszClientAddr, LPCXSTR lpszPushAddr, XCHAR* ptszSDBuffer, XCHAR* ptszRVBuffer); //任务处理相关函数,处理包的内容 bool PullStream_ClientGet_Handle(LPCXSTR lpszClientAddr, XCHAR*** ppptszListHdr, int nListCount); \ No newline at end of file From 0e7f9638ffd4a33b795aa205b48a2cc794382081 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Tue, 8 Apr 2025 15:03:56 +0800 Subject: [PATCH 21/27] fixed:not process for xstream --- .../XEngine_StreamMediaApp/XEngine_AVPacket.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_AVPacket.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_AVPacket.cpp index d8a217b..ae1fead 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_AVPacket.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_AVPacket.cpp @@ -104,6 +104,11 @@ bool XEngine_AVPacket_AVPrePlay(LPCXSTR lpszClientAddr, XCHAR* ptszSDBuffer, XCH PullStream_ClientGet_FLVPlay(ppSt_PullList[i]->tszClientAddr, lpszClientAddr, ptszSDBuffer, ptszRVBuffer); ModuleSession_PullStream_SetPushAddr(ppSt_PullList[i]->tszClientAddr, lpszClientAddr); } + if (st_ServiceConfig.st_XPull.st_PullXStream.bPrePull && ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_PULL_XSTREAM == ppSt_PullList[i]->enStreamType) + { + PullStream_ClientGet_XStreamPlay(ppSt_PullList[i]->tszClientAddr, lpszClientAddr, ptszSDBuffer, ptszRVBuffer); + ModuleSession_PullStream_SetPushAddr(ppSt_PullList[i]->tszClientAddr, lpszClientAddr); + } } } BaseLib_Memory_Free((XPPPMEM)&ppSt_PullList, nListCount); From 6ce03ce0952e0cea914b455fea4bec6e713951a9 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Tue, 8 Apr 2025 17:23:00 +0800 Subject: [PATCH 22/27] added:ts and srt pre stream support --- .../PullStream_ClientGet.cpp | 17 +++++++++++++---- .../PushStream_SrtTask.cpp | 18 ++++++++++++++---- .../XEngine_AVPacket.cpp | 10 ++++++++++ 3 files changed, 37 insertions(+), 8 deletions(-) diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PullStream/PullStream_ClientGet.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PullStream/PullStream_ClientGet.cpp index c792a67..88b1313 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PullStream/PullStream_ClientGet.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PullStream/PullStream_ClientGet.cpp @@ -192,10 +192,15 @@ bool PullStream_ClientGet_Handle(LPCXSTR lpszClientAddr, XCHAR*** ppptszListHdr, } else if (0 == _tcsxnicmp(tszVluBuffer, "ts", 2)) { - if (!st_ServiceConfig.st_XPull.st_PullTs.bPrePull) + bool bSMSFound = false; + + if (ModuleSession_PushStream_FindStream(tszSMSAddr, tszPushAddr)) { - //TS流,需要预拉流 - if (!ModuleSession_PushStream_FindStream(tszSMSAddr, tszPushAddr)) + bSMSFound = true; + } + else + { + if (!st_ServiceConfig.st_XPull.st_PullTs.bPrePull) { ModuleProtocol_Packet_Comm(tszRVBuffer, &nRVLen, NULL, 404, "not found"); HttpProtocol_Server_SendMsgEx(xhHttpPacket, tszSDBuffer, &nSDLen, &st_HDRParam, tszRVBuffer, nRVLen); @@ -203,6 +208,7 @@ bool PullStream_ClientGet_Handle(LPCXSTR lpszClientAddr, XCHAR*** ppptszListHdr, XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("拉流端:%s,请求拉流的URL参数不正确:%s,可能流不存在,错误:%lX"), lpszClientAddr, tszVluBuffer, ModuleSession_GetLastError()); return false; } + bSMSFound = false; } enStreamType = ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_PULL_TS; @@ -217,7 +223,10 @@ bool PullStream_ClientGet_Handle(LPCXSTR lpszClientAddr, XCHAR*** ppptszListHdr, XEngine_Network_Send(lpszClientAddr, tszSDBuffer, nSDLen, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_HTTP); ModuleSession_PullStream_Insert(lpszClientAddr, tszSMSAddr, tszPushAddr, enStreamType); - ModuleSession_PushStream_ClientInsert(tszPushAddr, lpszClientAddr, enStreamType); + if (bSMSFound) + { + ModuleSession_PushStream_ClientInsert(tszPushAddr, lpszClientAddr, enStreamType); + } } else { diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PushStream/PushStream_SrtTask.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PushStream/PushStream_SrtTask.cpp index c17886b..33c7a2c 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PushStream/PushStream_SrtTask.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PushStream/PushStream_SrtTask.cpp @@ -35,17 +35,27 @@ bool PushStream_SrtTask_Connct(LPCXSTR lpszClientAddr, XSOCKET hSocket) { XCHAR tszPushAddr[128]; memset(tszPushAddr, '\0', sizeof(tszPushAddr)); - if (!st_ServiceConfig.st_XPull.st_PullSrt.bPrePull) + + bool bSMSFound = false; + //得到推流地址 + if (ModuleSession_PushStream_FindStream(tszSMSAddr, tszPushAddr)) + { + bSMSFound = true; + } + else { - //得到推流地址 - if (!ModuleSession_PushStream_FindStream(tszSMSAddr, tszPushAddr)) + if (!st_ServiceConfig.st_XPull.st_PullSrt.bPrePull) { XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("SRT客户端:%s,请求拉流的参数不正确:%s,错误:%lX"), lpszClientAddr, tszSMSAddr, ModuleSession_GetLastError()); return false; } + bSMSFound = false; } ModuleSession_PullStream_Insert(lpszClientAddr, tszSMSAddr, tszPushAddr, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_PULL_SRT); - ModuleSession_PushStream_ClientInsert(tszPushAddr, lpszClientAddr, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_PULL_SRT); + if (bSMSFound) + { + ModuleSession_PushStream_ClientInsert(tszPushAddr, lpszClientAddr, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_PULL_SRT); + } XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("SRT客户端:%s,拉取流成功,拉流地址:%s,类型:拉流端"), lpszClientAddr, tszSMSAddr); } return true; diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_AVPacket.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_AVPacket.cpp index ae1fead..c3b5e30 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_AVPacket.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_AVPacket.cpp @@ -109,6 +109,16 @@ bool XEngine_AVPacket_AVPrePlay(LPCXSTR lpszClientAddr, XCHAR* ptszSDBuffer, XCH PullStream_ClientGet_XStreamPlay(ppSt_PullList[i]->tszClientAddr, lpszClientAddr, ptszSDBuffer, ptszRVBuffer); ModuleSession_PullStream_SetPushAddr(ppSt_PullList[i]->tszClientAddr, lpszClientAddr); } + if (st_ServiceConfig.st_XPull.st_PullTs.bPrePull && ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_PULL_TS == ppSt_PullList[i]->enStreamType) + { + ModuleSession_PushStream_ClientInsert(ppSt_PullList[i]->tszClientAddr, lpszClientAddr, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_PULL_TS); + ModuleSession_PullStream_SetPushAddr(ppSt_PullList[i]->tszClientAddr, lpszClientAddr); + } + if (st_ServiceConfig.st_XPull.st_PullSrt.bPrePull && ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_PULL_SRT == ppSt_PullList[i]->enStreamType) + { + ModuleSession_PushStream_ClientInsert(ppSt_PullList[i]->tszClientAddr, lpszClientAddr, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_PULL_SRT); + ModuleSession_PullStream_SetPushAddr(ppSt_PullList[i]->tszClientAddr, lpszClientAddr); + } } } BaseLib_Memory_Free((XPPPMEM)&ppSt_PullList, nListCount); From 262b34bf3e21c60a0d523f9d7c14d014b768565c Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Wed, 9 Apr 2025 09:57:02 +0800 Subject: [PATCH 23/27] fixed:log print error and log type support --- XEngine_Source/XEngine_ModuleConfigure/ModuleConfig_Define.h | 1 + .../ModuleConfigure_Json/ModuleConfigure_Json.cpp | 3 ++- .../XEngine_StreamMediaApp/XEngine_StreamMediaApp.cpp | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/XEngine_Source/XEngine_ModuleConfigure/ModuleConfig_Define.h b/XEngine_Source/XEngine_ModuleConfigure/ModuleConfig_Define.h index 46d0299..8868fc4 100644 --- a/XEngine_Source/XEngine_ModuleConfigure/ModuleConfig_Define.h +++ b/XEngine_Source/XEngine_ModuleConfigure/ModuleConfig_Define.h @@ -51,6 +51,7 @@ typedef struct tag_XEngine_ServiceConfig int nMaxSize; //最大日志大小 int nMaxCount; //最大日志个数 int nLogLeave; //日志等级 + int nLogType; //输出类型 }st_XLog; //拉流服务配置,启动越多,服务器性能越差 struct diff --git a/XEngine_Source/XEngine_ModuleConfigure/ModuleConfigure_Json/ModuleConfigure_Json.cpp b/XEngine_Source/XEngine_ModuleConfigure/ModuleConfigure_Json/ModuleConfigure_Json.cpp index 24585ea..e3b4cee 100644 --- a/XEngine_Source/XEngine_ModuleConfigure/ModuleConfigure_Json/ModuleConfigure_Json.cpp +++ b/XEngine_Source/XEngine_ModuleConfigure/ModuleConfigure_Json/ModuleConfigure_Json.cpp @@ -175,7 +175,7 @@ bool CModuleConfigure_Json::ModuleConfigure_Json_File(LPCXSTR lpszConfigFile, XE _tcsxcpy(pSt_ServerConfig->st_XPull.st_PullWebRtc.tszKeyStr, st_PullWebRtc["tszKeyStr"].asCString()); _tcsxcpy(pSt_ServerConfig->st_XPull.st_PullWebRtc.tszDerStr, st_PullWebRtc["tszDerStr"].asCString()); //日志配置 - if (st_JsonRoot["XLog"].empty() || (4 != st_JsonRoot["XLog"].size())) + if (st_JsonRoot["XLog"].empty() || (5 != st_JsonRoot["XLog"].size())) { Config_IsErrorOccur = true; Config_dwErrorCode = ERROR_MODULE_CONFIGURE_JSON_XLOG; @@ -185,6 +185,7 @@ bool CModuleConfigure_Json::ModuleConfigure_Json_File(LPCXSTR lpszConfigFile, XE pSt_ServerConfig->st_XLog.nMaxSize = st_JsonXLog["MaxSize"].asInt(); pSt_ServerConfig->st_XLog.nMaxCount = st_JsonXLog["MaxCount"].asInt(); pSt_ServerConfig->st_XLog.nLogLeave = st_JsonXLog["LogLeave"].asInt(); + pSt_ServerConfig->st_XLog.nLogType = st_JsonXLog["LogType"].asInt(); _tcsxcpy(pSt_ServerConfig->st_XLog.tszLogFile, st_JsonXLog["LogFile"].asCString()); //信息报告 if (st_JsonRoot["XReport"].empty() || (3 != st_JsonRoot["XReport"].size())) diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_StreamMediaApp.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_StreamMediaApp.cpp index 608d095..401b212 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_StreamMediaApp.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_StreamMediaApp.cpp @@ -223,7 +223,7 @@ int main(int argc, char** argv) goto XENGINE_SERVICEAPP_EXIT; } //设置日志打印级别 - HelpComponents_XLog_SetLogPriority(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO); + HelpComponents_XLog_SetLogPriority(xhLog, st_ServiceConfig.st_XLog.nLogType); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,初始化日志系统成功")); signal(SIGINT, ServiceApp_Stop); From 5597ebc6ce53d67d8214ab397039fcdce790627a Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Wed, 9 Apr 2025 10:09:17 +0800 Subject: [PATCH 24/27] modify:does not report info when debug start --- XEngine_Release/XEngine_Config/XEngine_Config.json | 9 +++++---- XEngine_Release/XEngine_Config/XEngine_Version.json | 1 + .../XEngine_ServiceApp/XEngine_StreamMediaApp/Makefile | 4 ++-- .../XEngine_StreamMediaApp/XEngine_StreamMediaApp.cpp | 6 +++--- 4 files changed, 11 insertions(+), 9 deletions(-) diff --git a/XEngine_Release/XEngine_Config/XEngine_Config.json b/XEngine_Release/XEngine_Config/XEngine_Config.json index be8c6ff..d3e9688 100644 --- a/XEngine_Release/XEngine_Config/XEngine_Config.json +++ b/XEngine_Release/XEngine_Config/XEngine_Config.json @@ -33,11 +33,11 @@ }, "RTMP": { "bEnable": true, - "bPrePull": false + "bPrePull": true }, "FLV": { "bEnable": true, - "bPrePull": false + "bPrePull": true }, "RTSP": { "bEnable": true, @@ -76,10 +76,11 @@ "LogFile": "./XEngine_XLog/XEngine_StreamMediaApp.Log", "MaxSize": 1024000, "MaxCount": 10, - "LogLeave": 17 + "LogLeave": 17, + "LogType": 32 }, "XReport":{ - "bEnable":false, + "bEnable":true, "tszServiceName":"XEngine_StreamMedia", "tszAPIUrl":"http://app.xyry.org:5501/api?function=machine" } diff --git a/XEngine_Release/XEngine_Config/XEngine_Version.json b/XEngine_Release/XEngine_Config/XEngine_Version.json index ba0fcd2..1a0367c 100644 --- a/XEngine_Release/XEngine_Config/XEngine_Version.json +++ b/XEngine_Release/XEngine_Config/XEngine_Version.json @@ -1,5 +1,6 @@ { "XVer": [ + "V2.11.0.1001 Build20250409", "V2.10.0.1001 Build20250124", "V2.9.0.1001 Build20241011", "V2.8.0.1001 Build20240531", diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/Makefile b/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/Makefile index f8c9fe9..57e3cf2 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/Makefile +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/Makefile @@ -29,10 +29,10 @@ DEBUG = else ifeq ($(PLATFORM),mac) FLAGS = -c - DEBUG = -g + DEBUG = -g -D _DEBUG else FLAGS = -c -lc_p - DEBUG = -g -pg + DEBUG = -g -pg -D _DEBUG endif endif diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_StreamMediaApp.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_StreamMediaApp.cpp index 401b212..f4963f4 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_StreamMediaApp.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_StreamMediaApp.cpp @@ -467,7 +467,6 @@ int main(int argc, char** argv) XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,启动JT1078处理线程池成功,线程个数:%d"), st_ServiceConfig.st_XMax.nJT1078Thread); } #if 1 == _XENGINE_STREAMMEDIA_BUILDSWITCH_SRT - if (!ModuleHelp_SrtCore_Init()) { XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,初始化SRT服务失败,错误:%lX"), ModuleHelp_GetLastError()); @@ -534,7 +533,7 @@ int main(int argc, char** argv) #else XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _X("启动服务中,SRTP协议编译选项被禁用,无法使用SRTP协议")); #endif - + if (st_ServiceConfig.st_XPull.st_PullRtsp.bEnable) { xhVRTPSocket = NetCore_UDPXCore_StartEx(st_ServiceConfig.st_XPull.st_PullRtsp.nVRTPPort, 1); @@ -621,6 +620,7 @@ int main(int argc, char** argv) { XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _X("启动服务中,HLS(M3U8)文件流被设置为禁用")); } +#ifdef _DEBUG //发送信息报告 if (st_ServiceConfig.st_XReport.bEnable && !bIsTest) { @@ -638,7 +638,7 @@ int main(int argc, char** argv) { XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _X("启动服务中,信息报告给API服务器没有启用")); } - +#endif XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("所有服务成功启动,服务运行中,XEngine版本:%s,服务版本:%s,发行次数;%d。。。"), BaseLib_Version_XNumberStr(), st_ServiceConfig.st_XVer.pStl_ListVer->front().c_str(), st_ServiceConfig.st_XVer.pStl_ListVer->size()); From 3e9492688bffb50949153044fb5d192f966aef22 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Wed, 9 Apr 2025 10:28:40 +0800 Subject: [PATCH 25/27] update:read me and document --- .github/workflows/macbuild.yml | 1 + .github/workflows/msbuild.yml | 2 +- CHANGELOG | 20 ++++++++++++++++++++ README.en.md | 1 + README.md | 1 + XEngine_Docment/Docment_en.docx | Bin 131051 -> 124972 bytes XEngine_Docment/Docment_zh.docx | Bin 130604 -> 125819 bytes 7 files changed, 24 insertions(+), 1 deletion(-) diff --git a/.github/workflows/macbuild.yml b/.github/workflows/macbuild.yml index df00f1a..2e814f0 100644 --- a/.github/workflows/macbuild.yml +++ b/.github/workflows/macbuild.yml @@ -83,6 +83,7 @@ jobs: - name: test (srt bug on macos,not run) run: | cd XEngine_Release + ./XEngine_StreamMediaApp -t - name: Upload folder as artifact with mac x64 if: matrix.os == 'macos-13' diff --git a/.github/workflows/msbuild.yml b/.github/workflows/msbuild.yml index 7795dc7..f23d2f6 100644 --- a/.github/workflows/msbuild.yml +++ b/.github/workflows/msbuild.yml @@ -120,7 +120,7 @@ jobs: cp -r XEngine_Source/VSCopy_x86.bat XEngine_Release/ cd XEngine_Release .\VSCopy_x86.bat - # ./XEngine_StreamMediaApp -t + ./XEngine_StreamMediaApp -t shell: pwsh - name: Conditional Step for x64 Release if: matrix.configuration == 'Release' && matrix.platform == 'x64' diff --git a/CHANGELOG b/CHANGELOG index 14d18b2..93beff2 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,23 @@ +XEngine_StreamMedia V2.11.0.1001 + +增加:预拉流的协议支持 +增加:更多系统发布版本支持 +更新:xengine 最新版本匹配 +更新:三方库 +修改:推流的数据使用了内存池技术 +修改:当debug模式的时候不报告信息 +修复:日志输出错误增加日志类型支持 +修复:当拉流请求的时候现在可以正常响应成功失败了 + +added:pre pull stream support for xstream ts srt rtmp flv +added:more release system supported +update:xengine newer version supported +update:depend library +modify:use memory pool for memory of push stream +modify:does not report info when debug start +fixed:log print error and log type support +fixed:reply error when strema not found for rtmp and flv and xstream with play +======================================================= XEngine_StreamMedia V2.10.0.1001 增加:windows coredump支持 diff --git a/README.en.md b/README.en.md index 73c9294..06b75dc 100644 --- a/README.en.md +++ b/README.en.md @@ -27,6 +27,7 @@ feature: 11. Support text language transcription (planning) 12. Support recording (planning) 13. Support audio and video recoding (planning) +14. Support pre-pull stream Publish Stream: diff --git a/README.md b/README.md index d4f7c82..ffb1b12 100644 --- a/README.md +++ b/README.md @@ -30,6 +30,7 @@ c c++ streammedia server 11. 支持文本语言转录(planning) 12. 支持录像(planning) 13. 支持音视频重编解码(planning) +14. 支持预拉流 推流协议: diff --git a/XEngine_Docment/Docment_en.docx b/XEngine_Docment/Docment_en.docx index 39e43be205cf1dc6e44d658a173b36de5ad075fa..cf015ee9a718da20da9455ac9d05b98054e4d502 100644 GIT binary patch literal 124972 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

*YXmi%1Wx9v`Gu;ES2pye}HP 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 literal 131051 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 diff --git a/XEngine_Docment/Docment_zh.docx b/XEngine_Docment/Docment_zh.docx index 0d74d2023a7535a31609430fa3116f02716203b0..73a94f13ba2050f93ebe5e1db8ea2ea8df824db5 100644 GIT binary patch literal 125819 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

(A4espO_Fc2kdNzc%M&1E2>^!9v9 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 PZ!q}59k2pVlYsvLwfhn9 literal 130604 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�ztLn`Fnt$hD9Cp48$&>n@y$uaA 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 Date: Wed, 9 Apr 2025 10:36:09 +0800 Subject: [PATCH 26/27] fixed:report info handle is incorrect Signed-off-by: qyt <486179@qq.com> --- .../XEngine_StreamMediaApp/XEngine_StreamMediaApp.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_StreamMediaApp.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_StreamMediaApp.cpp index f4963f4..3ec29c0 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_StreamMediaApp.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_StreamMediaApp.cpp @@ -620,7 +620,7 @@ int main(int argc, char** argv) { XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _X("启动服务中,HLS(M3U8)文件流被设置为禁用")); } -#ifdef _DEBUG +#ifndef _DEBUG //发送信息报告 if (st_ServiceConfig.st_XReport.bEnable && !bIsTest) { From 2f8966f421cbe98434e35666b81c7066b8ef34ad Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Wed, 9 Apr 2025 11:20:07 +0800 Subject: [PATCH 27/27] ci:cancel test for windows --- .github/workflows/msbuild.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/msbuild.yml b/.github/workflows/msbuild.yml index f23d2f6..7795dc7 100644 --- a/.github/workflows/msbuild.yml +++ b/.github/workflows/msbuild.yml @@ -120,7 +120,7 @@ jobs: cp -r XEngine_Source/VSCopy_x86.bat XEngine_Release/ cd XEngine_Release .\VSCopy_x86.bat - ./XEngine_StreamMediaApp -t + # ./XEngine_StreamMediaApp -t shell: pwsh - name: Conditional Step for x64 Release if: matrix.configuration == 'Release' && matrix.platform == 'x64'