Voraussetzungen
Zu installierende MacPorts: Öffnen Sie das Terminal und geben Sie
ein
sudo port install pkgconfig
Starten Sie das Terminal und laden Sie die FFmpeg-Quelle herunter
Der Speicherort des Verzeichnisses hängt von Ihren persönlichen Vorlieben ab, und ich entschied mich, es in einem ffmpeg-Ordner unter meinem Home-Ordner zu speichern, damit Sie später darauf zugreifen können.
git Klon git: //source.ffmpeg.org/ffmpeg.git ~ / ffmpeg
Bevor wir weiter gehen, müssen wir voraus denken und erkennen, dass wir wahrscheinlich einige Simulationen auf dem Mac zusammen mit den eigentlichen Tests auf dem iPhone durchführen werden. Was wir tun müssen, ist, dass wir Bibliotheken für 3 Architekturen erstellen müssen: armv7 (iPhone 3Gs oder neuer), armv7s (iPhone 5) und i386 (iPhone Simulator).
Lassen Sie uns einige Ordner im Ordner ffmpeg erstellen, um drei verschiedene Builds zu speichern, damit wir diese zusammen in einem universellen Build zusammenfassen können.
cd ffmpeg
mkdir armv7
mkdir armv7s
mkdir i386
mkdir -p universal / lib
So installieren Sie den Gas-Preprozessor
- Klicken Sie auf das ZIP-Symbol, um den Gas-Preprozessor herunterzuladen.
- Kopieren Sie gas-preprocessor.pl in das Verzeichnis / usr / bin.
- Ändern Sie die Berechtigung von gas-preprocessor.pl, indem Sie die Berechtigung Read & amp; Schreiben Sie für alle.
Konfigurieren Sie FFmpeg für armv7 build
Vor der Konfiguration
Sie können sich auf die detaillierten Optionen beziehen, indem Sie in den Ordner ffmpeg gehen und folgendes eingeben:
./ configure --help
Liste der Optionen für Ihre Referenz: FFmpeg Konfigurationsoptionen . Die "Komponentenoptionen" hängen davon ab, was Sie mit FFmpeg machen wollen.
Führen Sie nun die folgenden Konfigurationsoptionen aus:
./ konfigurieren \
--prefix = armv7 \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-ffserver \
--enable-avresample \
--enable-cross-compile \
--sysroot="/ Anwendungen / Xcode.app / Inhalte / Entwickler / Plattformen / iPhoneOS.platform / Entwickler / SDKs / iPhoneOS6.0.sdk"
\
- Ziel-os = Darwin \
--cc="/ Anwendungen / Xcode.app / Inhalte / Entwickler / Plattformen / iPhoneOS.platform / Entwickler / usr / bin / gcc"
\
--extra-cflags="- arch armv7 -mfpu = neon -miphoneos-version-min = 6.0" \
--extra-ldflags="- arch armv7 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk
-miphoneos-version-min = 6.0 "\
--arch = Arm \
--cpu = Kortex-a9 \
--enable-pic \
Sie erhalten möglicherweise eine Warnung wie:
WARNUNG: Der Compiler zeigt keinen Gleitkomma-ABI an, rate rate.
Keine Sorge. Sie sollten mit den nächsten Schritten fortfahren.
Build FFmpeg für armv7
Führen Sie die Build-Befehle aus:
make clean & amp; & amp; machen & amp; & amp; make install
Nun sollten Sie sehen können, dass Dateien im Ordner ffmpeg / armv7 abgelegt sind. Wir gehen jetzt zum Bauen für armv7s für iPhone 5 über.
Konfigurieren und installieren Sie FFmpeg für die Architektur von armv7s (iPhone 5)
.
/ konfigurieren \
--prefix = armv7s \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-ffserver \
--enable-avresample \
--enable-cross-compile \
--sysroot="/ Anwendungen / Xcode.app / Inhalte / Entwickler / Plattformen / iPhoneOS.platform / Entwickler / SDKs / iPhoneOS6.0.sdk"
\
- Ziel-os = Darwin \
--cc="/ Anwendungen / Xcode.app / Inhalte / Entwickler / Plattformen / iPhoneOS.platform / Entwickler / usr / bin / gcc"
\
--extra-cflags="- arch armv7s -mfpu = neon -miphoneos-version-min = 6.0" \
--extra-ldflags="- arch armv7s -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk
-miphoneos-version-min = 6.0 "\
--arch = Arm \
--cpu = Kortex-a9 \
--enable-pic \
Dann build mit:
make clean & amp; & amp; machen & amp; & amp; make install
Konfigurieren Sie FFmpeg für i386 build
./ konfigurieren \
--prefix = i386 \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-ffserver \
--enable-avresample \
--enable-cross-compile \
--sysroot="/ Anwendungen / Xcode.app / Inhalte / Entwickler / Plattformen / iPhoneSimulator.platform / Entwickler / SDKs / iPhoneSimulator6.0.sdk"
\
- Ziel-os = Darwin \
--cc="/ Anwendungen / Xcode.app / Inhalte / Entwickler / Plattformen / iPhoneSimulator.platform / Entwickler / usr / bin / gcc"
\
--extra-cflags="- Bogen i386" \
--extra-ldflags="- arch i386 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator6.0.sdk "
\
--arch = i386 \
--cpu = i386 \
--able-pic \
--disable-asm \
Bitte beachten Sie das letzte --disable-asm-Tag. Wenn Sie dieses Tag vergessen haben, erhalten Sie wahrscheinlich diesen Fehler:
cc1: Fehler im Backend: Ran aus Registern während der Registrierung
Zuweisung! make: *** [libavcodec / h264_cabac.o] Fehler 1
Build FFmpeg für i386
make clean & amp; & amp; machen & amp; & amp; make install
Erstellen Sie eine universelle Bibliothek
Die Lipo-Befehle (vorausgesetzt, Sie befinden sich noch im Ordner ffmpeg):
(Bitte beachten Sie, dass der von Mountain Lion gelieferte Lipo noch nichts über armv7s weiß. Daher müssen wir xcrun verwenden, um den mit dem SDK mitgelieferten Lipo zu finden.)
cd armv7 / lib für die Datei in * .a tun cd ../ .. xcrun -sdk iphoneos lipo
-output universal / lib / $ datei -create \
-arch armv7 armv7 / lib / $ datei \
-arch armv7s armv7s / lib / $ file \
-arch i386 i386 / lib / $ file echo "Universelle $ Datei erstellt." cd - done cd ../..
Sieh unter universal / lib nach, dort findest du alle frisch gebackenen FAT-Bibliotheken. Wir konzentrieren uns nun darauf, diese statischen Bibliotheken mit dem Xcode-Projekt zu verknüpfen.
Wenn Sie einen Fehler wie diesen bekommen Fehler: Kein Entwicklerverzeichnis bei / Developer gefunden? und dann
eingeben
sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer
Linke statische Bibliotheken in Xcode
Zuerst ziehen wir die .a-Dateien ein.
Erstellen Sie eine neue leere Anwendung mit Xcode. Weisen Sie einen Produktnamen und eine Firmenkennung zu. Klicken Sie dann auf Weiter und speichern Sie das Projekt.
Suchen Sie die universellen Bibliotheken, die wir erstellt haben (die .a-Dateien), unter ffmpeg / universal / lib .
Ziehen Sie die .a-Dateien in den Frameworks-Ordner im Projektnavigator.
Markieren Sie "Objekte in den Ordner der Zielgruppe kopieren (falls erforderlich)". Und klicken Sie auf Fertigstellen.
Jetzt kümmern wir uns um die Include-Dateien.
Suchen Sie die Include-Dateien unter ffmpeg / armv7 / include .
Ziehen Sie den Inhalt dieses Ordners in den Projektnamensordner im Projektnavigatorbereich und legen Sie ihn dort ab.
Aktivieren Sie wieder "Objekte in den Ordner der Zielgruppe kopieren (falls erforderlich)". Klicken Sie dann auf Fertigstellen.
Schließlich müssen wir die Header-Suchpfade für das Projekt festlegen .
Klicken Sie im Projektnavigator auf das Projekt .
Klicken Sie im Standard-Editor in der Mitte des Bildschirms auf Einstellungen erstellen.
Suchen Sie nach "Header-Suchpfade" .
Fügen Sie Ihren Projektpfad hinzu, und legen Sie es auf Rekursiv fest. d. h. $ (SRCROOT)
Klicken Sie auf Phasen erstellen.
Fügen Sie unter Link Binary mit Bibliotheken libbz2.dylib und libz.dylib hinzu.
Testen und verifizieren Sie das Funktionieren der Bibliothek
Wir werden hier nicht ausführlich sein. Nur um zu überprüfen, dass die Bibliothek funktioniert.
Gehe zu deinem AppDelegate.m und füge hinzu:
& gt; #include "avformat.h"
Fügen Sie in der Funktion didFinishLaunchingWithOptions Folgendes hinzu:
av_register_all ();
Wenn Sie annehmen, dass Sie diese Fehler erhalten, bedeutet
Nicht definierte Symbole für Architektur i386:
"_iconv", referenziert von:
_mail_iconv in libmailcore.a (charconv.o)
"_iconv_open", referenziert von:
_charconv in libmailcore.a (charconv.o)
_charconv_buffer in libmailcore.a (charconv.o)
"_iconv_close", referenziert von:
_charconv in libmailcore.a (charconv.o)
_charconv_buffer in libmailcore.a (charconv.o)
ld: Symbol (e) nicht für Architektur i386 gefunden
collect2: ld gab 1 Exit-Status zurück
Fügen Sie dann libiconv.dylib framework
hinzu
Sie sind nun bereit, mit FFmpeg unter iOS zu entwickeln.