FFMPEG-Integration auf dem iPhone / iPad-Projekt

8

Kann mir jemand sagen Wie integriere ich FFMPEG in mein iphone / ipad project.i m mit Xcode 4. Ich habe viel gesucht, aber keinen nützlichen Link gefunden. Bitte sagen Sie mir Schritt für Schritt, wie ich FFMpeg in mein Projekt integrieren kann.

Danke,

    
cmp 28.07.2011, 04:44
quelle

2 Antworten

39

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

  1. Klicken Sie auf das ZIP-Symbol, um den Gas-Preprozessor herunterzuladen.
  2. Kopieren Sie gas-preprocessor.pl in das Verzeichnis / usr / bin.
  3. Ä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.

    
Pushpa Raja 15.03.2013 10:00
quelle
0

./ configure script:

./ configure --Extra-ldflags = -L / Developer / Platforms / iPhoneOS.platform / Developer / SDKs / iPhoneOS4.3.sdk / usr / lib / system --disable-bzlib disable-doc - disable-ffmpeg disable-ffplay disable-ffserver --enable- Quer kompilieren --arch = Arm --target-os = Darwin --cc = / Developer / Plattformen / iPhoneOS.platform / Developer / usr / bin / gcc --as = 'Gas-Präprozessor / gas-preprocessor.pl /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc' --sysroot = / Developer / Platforms / iPhoneOS.platform / Developer / SDKs / iPhoneOS4.3.sdk --cpu = Cortex-A8---Extra-cflags = '- Bogen ARMv7' --Extra-ldflags = '- Bogen ARMv7' --enable-pic

das funktioniert gut. da der Standard ffmpeg Konfigurationsskript den Standardbibliothekspfad auf „/ usr / lib / system“ hat, damit es nicht Bibliothek libcache.dylib finden, so hier habe ich es auf letzter sdk Pfad.

    
Satyavrat 28.07.2011 10:44
quelle

Tags und Links