2013-08-05 27 views
5

Sto lavorando a un progetto per hobby l'obiettivo per cui è lo sviluppo di un'applicazione Android in grado di trasmettere feed live catturati tramite web cam in un'impostazione LAN utilizzando FFMpeg come motore sottostante. Finora, ho fatto le seguenti -RTSP streaming su client Android utilizzando FFMpeg

A. Compilazione e generando FFMpeg librerie legate per le seguenti versioni -

versione

FFMpeg: 2.0
versione NDK: r8e & R9
versione della piattaforma Android: Android-16 & android-18thisthisthisthis
versione Toolchain: 4.6 & 4.8
piattaforma costruita su: Fedora 18 (x86_64)

B. Cre ai file Android.mk & Application.mk nel percorso appropriato.

Tuttavia, quando si trattava di scrivere il codice nativo per l'accesso corretto funzionamento del FFMpeg dal livello di applicazione utilizzando Java, mi sono bloccato con seguenti domande -

a) Quale tutte le funzionalità di FFmpeg ho bisogno di fare disponibile dal livello nativo per l'app per lo streaming di feed in tempo reale?
b) Per compilare FFMpeg per Android, ho seguito il collegamento this. Se le opzioni di compilazione sono sufficienti per gestire i flussi * .sdp o devo modificarlo?
c) Devo utilizzare live555?

Sono totalmente nuovo per FFMpeg e lo sviluppo di applicazioni Android e questo sarà il mio primo progetto serio per piattaforma Android. Ho cercato per un po 'di tempo tutorial pertinenti relativi allo streaming RTSP usando FFMpeg senza molto successo. Inoltre, ho provato l'ultima build di sviluppo del lettore VLC e l'ho trovato ottimo per lo streaming di feed in tempo reale. Tuttavia, è una bestia complessa e l'obiettivo per il mio progetto è di natura abbastanza limitata, per lo più di apprendimento - in un breve lasso di tempo.

Puoi suggerire alcuni suggerimenti (ad esempio collegamenti, documenti o codice di esempio) su come posso scrivere il codice nativo per l'utilizzo della libreria FFMpeg e successivamente utilizzare tali funzionalità dal livello dell'app per lo streaming di feed in tempo reale? Inoltre, apprezzerà davvero se tu potessi farmi conoscere il tipo di conoscenze di base necessarie per questo progetto da un punto di vista funzionale (in un senso agnostico della lingua).

+0

Sto cercando di creare un lettore rtsp in grado di riprodurre in streaming con meno di 1 secondo di ritardo. sembra che tu abbia fatto un po 'di lavoro puoi per favore guidarmi qui – user2934930

+0

Voglio giocare e registrare lo streaming rtsp usando ffmpeg in Android. non ho una buona conoscenza di ffmpeg –

risposta

0

Ero in una situazione simile qualche tempo fa (volevo riprodurre un mp3 da un server RTMP) ed era estremamente frustrante. Tuttavia, sono riuscito a racchiudere un po 'di codice che in realtà ha fatto ciò che avrebbe dovuto. Alcuni puntatori:

  • Non si desidera esporre l'API di ffmpeg al codice Java. Invece, prendi in considerazione la creazione di funzioni di supporto come openRTSPStream(String url) e mantieni il contenuto di ffmpeg nel tuo codice C/C++. Dico questo perché ffmpeg rende pesante l'uso di puntatori e allocazione dinamica della memoria che farebbe fatica a provare e usarlo da Java.

  • Lo script utilizzato per compilare la libreria utilizza il flag --disable-everything che significa anche che probabilmente disabilita il supporto RTSP.Ti consigliamo di rimuovere questo flag o di eseguire lo script configure con --list-protocol, --list-demuxer, --list-muxer, --list-encoder e --list-decoder (o qualcosa del genere) per avere un'idea di cosa è necessario abilitare. È necessario tenere a mente il formato e la codifica del video e dell'audio e ciò a cui verrà decodificato.

  • Mentre si leggono i pacchetti dallo stream, il codice nativo potrebbe inviare i buffer al codice Java tramite una funzione di callback che a sua volta visualizzerà i buffer come video/audio.

Ecco un altro post in modo che potrebbe interessarti: Record RTSP stream with FFmpeg libavformat

Fammi sapere se hai bisogno di alcuni esempi di codice o di ulteriori chiarimenti.

+0

Scusate per la risposta tardiva, ragazzi. Finora, sono stato in grado di leggere i file video memorizzati localmente e salvarli fotogramma per fotogramma seguendo [il tutorial di Stephen Dranger] (http://dranger.com/ffmpeg/ffmpeg.html) e il repository di Arash Shafiei per la sua [versione aggiornata ] (https://github.com/arashafiei/dranger-ffmpeg-tuto). Per il rendering degli stream audio e video su Android, sto utilizzando SDL 2.0. Quindi, attualmente impegnato ad integrare FFMpeg e SDL per il mio scopo. È arrivato attraverso il repo GitHub di Oliver Xorange per [video player Android] (https://github.com/xorange) che potrebbe essere di un certo interesse per le persone in cerca di soluzioni. – rurtle

+0

Grazie per l'aggiornamento! Fammi sapere se rimani bloccato su qualcosa e potremmo lavorarci insieme. –