Я создаю проект фреймворка Swift с использованием внутреннего модуля FFmpeg.
Шаги:
- Загрузка исходного кода FFmpeg с официального сайта.
- Сборка с помощью Сценарий сборки здесь: https://github.com/kewlbear/FFmpeg-iOS-build-script
- Скопировать собранный файл в проект
- Создать файл module.modulemap, его содержимое:
module FFmpeg [system][extern_c] {
header "include/libavcodec/avcodec.h"
header "include/libavdevice/avdevice.h"
header "include/libavfilter/avfilter.h"
header "include/libavformat/avformat.h"
header "include/libavutil/avutil.h"
header "include/libswresample/swresample.h"
header "include/libswscale/swscale.h"
export *
}
Дерево проекта:

Установите пути импорта для параметров проекта и целевых параметров на
$(SRCROOT)/MediaToolkit/Libraries/FFmpeg/**
Мой исходный код:
import Foundation
import FFmpeg
public class MediaToolkit {
public init(){}
public func hello() {
print("AVFMT_NOFILE: \(AVFMT_NOFILE)")
avformat_network_init()
}
}
При сборке я получил ошибку
Undefined symbols for architecture arm64:
"_avformat_network_init", referenced from:
MediaToolkit.MediaToolkit.hello(Swift.String) -> () in MediaToolkit.o
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Если удалить строку avformat_network_init()
, будет напечатано AVFMT_NOFILE: 1