# iOS ffmpeg-kit 依赖放置说明 iOS 端转码复用 Android 同一套转码逻辑(libx264 重编码修复坏 PPS 裸流)。 与 Android 的 `.so` 不同,iOS 用 ffmpeg-kit 的 **`.xcframework`**(内含 `ffmpegkit.framework`), 放在本目录后 Unity 会在构建 Xcode 工程时**自动链接**。 ## 需要放入的文件 把 ffmpeg-kit iOS **full-gpl** 的 xcframework(含 libx264)解压后放进本目录,例如: ``` Assets/Plugins/iOS/FFmpegKit/ └── ffmpegkit.xcframework/ ├── Info.plist ├── ios-arm64_armv7/ (真机切片) │ └── ffmpegkit.framework/ └── ios-arm64_i386_x86_64-simulator/ (模拟器切片,可选) └── ffmpegkit.framework/ ``` (不同版本/项目解压出的骨架可能略有不同,只要有一个 `ffmpegkit.xcframework` 即可。) ## 版本要求 与 Android 端保持一致,避免转码行为差异: - 来源: `dev.ffmpegkit-maintained:ffmpeg-kit-full-gpl:6.0.3`(FFmpeg **n6.1.6**,含 libx264) - 必须是 **full-gpl**(含有)的 iOS 包;free/min 等版没有 libx264,转码会失败。 - 若拿不到完全同 6.0.3 的 iOS 包,取同源(dev.ffmpegkit-maintained)最新 full-gpl 的 iOS 包也可,但需确认 ffmpeg 仍能 `-c:v libx264`。 ## 获取方式(macOS 上操作) 1. 下载 ffmpeg-kit 维护版发布的 iOS full-gpl xcframework 压缩包 (对应 Android AAR 那个 `ffmpeg-kit-full-gpl-6.0.3.aar` 的同批次 iOS 产物)。 2. 解压得到 `ffmpegkit.xcframework`,拷入本目录。 3. Unity 重新 import(会自动生成 `.meta`)。 > 注:ffmpeg-kit 的 Apple 产物需在 macOS + Xcode 下构建/发布,Windows 无法直接获得, > 故本目录仅空占位 + 说明,实际 xcframework 需你在 Mac 上获取后放入。 ## 调用链 - C# 桥: `Assets/Scripts/Video/FFmpegKitBridge.cs` 的 `#elif UNITY_IOS && !UNITY_EDITOR` 分支 - `[DllImport("__Internal")]` 调本目录原生符号 `FFmpegKitExecuteWithArguments` - 真正实现是 `FFmpegKitIOS.mm`(在 `Assets/Plugins/iOS/`,同目录上级) - 下载/播放服务: `Assets/Scripts/Video/VideoDownloadPlayService.cs`(平台无关,已兼容) ## 验证 - 转码日志应出现 `[FFmpegKitBridge] args: ... -c:v libx264 ...` 与 `[FFmpegKitBridge] rc=0` - 生成的 mp4 可正常播放、不卡帧(与 Android 行为一致)