2009-11-05 17 views
10

Ho bisogno di codificare diverse immagini scattate dalla fotocamera iphone in un file video mp4 e so che FFMPEG può farlo (l'applicazione TimeLapser e ReelMoments lo fanno già). Ho intenzione di usarlo nella mia app iMotion (disponibile nell'appstore).Uso della libreria FFMPEG con iPhone SDK per codifica video

ho successo installare e compilare il ffmpeg per l'SDK iPhone con questo link: http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2009-October/076618.html

Ma ora sono bloccato qui nel mio progetto XCode. Cosa dovrei fare per utilizzare la libreria FFMPEG per la codifica video? La documentazione di Apple sull'utilizzo della libreria esterna è molto leggera e posso trovare qualsiasi tutorial sul web che spieghi come farlo.

Se qualcuno mi può aiutare, sarei molto grateful..`

Grazie

Aurelien Potier

+2

Assicurati di rispettare la LGPL se stai usando ffmpeg. –

+1

Inoltre, se si prevede di inviare la propria applicazione all'App Store, prestare attenzione alle implicazioni legali della vendita di software che utilizza ffmpeg. Potrebbe violare i brevetti nella tua giurisdizione (http://ffmpeg.org/legal.html). Ciò potrebbe anche influire sulla tua capacità di ottenere l'approvazione su App Store. –

+1

Sì, è necessario rilasciare il codice sorgente o il codice oggetto per la propria applicazione al fine di rispettare la LGPL quando si utilizza ffmpeg come libreria statica: http://huyzing.com/2009/08/24/compatibility- tra-the-iphone-app-store-and-the-lgpl/ –

risposta

8

Nel menu Progetto, selezionare Modifica destinazione attiva "[...]".

Poi, nel separatore Genera, assicurarsi di aver Tutto configurazione selezionata e procedere come segue:

  • ricerca di 'intestazione dei percorsi di ricerca' e indicare dove si trovano le intestazioni FFmpeg;
  • cerca "Percorsi di ricerca della libreria" e indica dove si trovano i binari della libreria statica compilata (file .a).

Questo dovrebbe farlo, ma c'è un altro trucco nel secondo. È possibile aggiungere una condizione di compilazione a "Percorsi di ricerca della libreria" in modo che il compilatore utilizzi binari diversi per diverse architetture, ad esempio si può compilare senza problemi sia per il simulatore che per il dispositivo. Istruzione di seguito

  • Con la riga Percorsi di ricerca della libreria selezionata, fare clic sul pulsante nell'angolo in basso a sinistra della stessa finestra e selezionare Aggiungi condizione di configurazione;
  • Dove viene visualizzato 'Any SDK', selezionare 'Any iPhone OS Simulator' e indicare il percorso dei file binari ffmpeg x86.
  • Ripetere i passaggi sopra riportati sostituendo "Qualsiasi iPhone OS Simulator" con "Qualsiasi dispositivo OS iPhone" e indicare i binari di ffmpeg ARM.

Di seguito è riportato un esempio di questo tipo di impostazioni di generazione.

alt text

11

Partenza il progetto iFrameExtractor su GitHub. Anche se questo non è esattamente quello che stai cercando, ha degli script per costruire le librerie ffmpeg e il progetto xcode collega le librerie.

Alcuni ulteriori info in questo post del blog:

http://www.codza.com/extracting-frames-from-movies-on-iphone

+1

Ho provato a farlo funzionare, ma quando faccio ./build_universal le "lipo" -istruzioni nel file sembra fallire e finisco senza i file * .a. Ottengo questo errore: 'lipo: tipo di architettura specificata (armv6) per file (armv6/libavcodec.a) non corrisponde al suo cputype (16777223) e cpusubtype (3) (dovrebbe essere cputype (12) e cpusubtype (6))' per ciascuno dei comandi lipo –

+0

Per risolvere il problema segui questa discussione http://stackoverflow.com/questions/6994151/problem-compiling-ffmpeg-for-iframeextractor – deimus

4

Un'altra opzione potrebbe essere quella di usare ffmpeg su un server. Invia le immagini al server e usa PHP w/ffmpeg per convertire il video. Con questo, non dovresti preoccuparti di compilare FFMPEG sul dispositivo. Solo un pensiero