[✔️] mac/ios openal

931 阅读2分钟

INSTALL TARGETS given no BUNDLE DESTINATION for MACOSX_BUNDLE executable

IF(ALSOFT_INSTALL)
    INSTALL(TARGETS openal-info makehrtf
            RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
            LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
            ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
    )       

网上大部分解决办法都是将install关闭: -DALSOFT_INSTALL=OFF,但是这样的话,我们就无法install,想要拿到头文件和lib文件就比较麻烦,需要自己手动筛选。

openal-info这类的target其实我们并不需要关心,我们只关心openal,所以不能把install全部关闭,我们直接阻止其他target的生成即可

-DALSOFT_UTILS=OFF \
-DALSOFT_TESTS=OFF \
-DALSOFT_EXAMPLES=OFF \

openal-soft/Alc/backends/coreaudio.c:459:5: error: use of undeclared identifier 'AudioObjectPropertyAddress'

我使用的是v1.19版本,这是一个已知的bug,这个PR就是在修复这个问题,很明显代码没有合并到v1.19分支,自己手动加下就能正常通过编译了,其实看下报错位置的上下文代码,很明显是作者遗漏了添加宏,属于比较低级的问题,所以遇到问题,真的还得看看代码,不能迷信认为开源库的代码尽量不修改

Undefined symbols for architecture arm64:

"_kVTEncodeFrameOptionKey_ForceKeyFrame", referenced from: _vtenc_send_frame in libcocos2d iOS.a(videotoolboxenc.o)

VideoToolbox 是苹果公司提供的一个框架,主要用于在 iOS 和 macOS 平台上实现视频编码和解码功能。它可以利用硬件加速技术,处理高效、低延迟的视频编码,并且能够在移动设备上编解码高清视频,提高设备的性能和功耗效率。

VideoToolbox 提供了丰富的 API,支持流媒体数据的处理、视频数据的解码和编码、视频帧的压缩等功能。开发者可以通过 VideoToolbox 提供的 API 来实现自己的视频应用。以下是 VideoToolbox 的主要特点:

  1. 高效硬件加速:利用硬件加速技术进行视频编解码,大幅提高了编解码速度和流畅度。

  2. 支持多种编解码格式:支持 H.264/H.265/MPEG-4 等常见的视频编解码格式。

  3. 支持多种分辨率:支持包括 1080P/720P/480P 在内的多种分辨率,满足不同场景下的视频需求。

  4. 适配不同平台:适配 iOS 和 macOS 平台,方便开发者选择目标设备。

  5. 易于使用:提供简单易用的 API 接口,开发者可快速上手。

使用 VideoToolbox 进行视频编解码可以使开发者在 iOS 和 macOS 平台上实现高效、低延迟的视频编解码,最大程度地满足不同用户场景对于视频应用的需求。

xcode中添加VideoToolbox

image.png

编译armv7

使用cmake编译openal,设置ARCHS="armv7"后报错clang: error: invalid iOS deployment version '-target armv7-apple-ios11.0', iOS 10 is the maximum deployment target for 32-bit targets [-Winvalid-ios-deployment-target]

增加编译选项

            -DARCHS="armv7" \
            -DDEPLOYMENT_TARGET="8.0" \

1679647266183_B2B942D2-5FA5-454c-BFB6-30DA39BE44D5.png

1679649618101_60A87E4D-1919-40db-B148-BC107ECE7E13.png