52 lines
2.3 KiB
Markdown
52 lines
2.3 KiB
Markdown
|
|
# 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 行为一致)
|