52 lines
2.3 KiB
Markdown
Raw Normal View History

# 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 行为一致)