C'è un modo per accedere allo libstagefright.so
direttamente per decodificare lo streaming H.264
dal livello JNI
su Android 2.3 o versioni successive?Accedi direttamente a StageFright.so per decodificare il flusso H.264 da JNIlayer in Android
risposta
Se l'obiettivo è quello di decodificare un H.264
stream elementare, allora il codice dovrà garantire che il flusso viene estratto, il codec-specific-data
viene fornito al codec che è principalmente SPS
e PPS
dati e frame di dati insieme con timestamp è fornito al codec. In tutte le versioni Android
, l'interfaccia più comune sarebbe OMXCodec
che è un'astrazione su un componente OMX
sottostante.
In Gingerbread (Android 2.3) e ICS (Android 4.0.0), se si desidera creare un decodificatore, il metodo migliore sarebbe quello di creare un componente OMXCodec
e di astrarre il codice tramite un'interfaccia MediaSource
ovvero il proprio codice wrapper è modellato come MediaSource
e OMXCodec
legge da questa origine ed esegue la decodifica.
Link Android creazione decoder 2.3 Video: http://androidxref.com/2.3.6/xref/frameworks/base/media/libstagefright/AwesomePlayer.cpp#1094
link ad Android 4.0.0 creazione decoder video: http://androidxref.com/4.0.4/xref/frameworks/base/media/libstagefright/AwesomePlayer.cpp#1474
Le sfide principali sarebbe la seguente:
modello l'ingresso come
MediaSource
.Leggere un codice wrapper per leggere il buffer dal codec e gestirlo e rilasciarlo nuovamente sul codec.
Per semplificare, si potrebbe cercare stagefright
riga di comando codice eseguibile come in http://androidxref.com/4.0.4/xref/frameworks/base/cmds/stagefright/stagefright.cpp#233
Tuttavia, se il programma si basa su Jellybean (4.1.x Android, 4.2.x) in poi, allora questi sono un po ' più semplificato. Dal tuo codice JNI, potresti creare un componente MediaCodec
e impiegare lo stesso per la decodifica. Per integrare lo stesso nel tuo programma, puoi fare riferimento all'implementazione SimplePlayer
come in http://androidxref.com/4.2.2_r1/xref/frameworks/av/cmds/stagefright/SimplePlayer.cpp#316
- 1. H.264 AVC supportato per telefoni Android?
- 2. H.264 codec spiegato
- 3. Come utilizzare la classe MediaCodec per decodificare i flussi H.264
- 4. Supporto livello H.264 BaseProfile Android
- 5. Registro errori di decodifica H.264 dal flusso RTSP
- 6. Esiste un modo semplice per estrarre il flusso raw h.264 in formato annexb?
- 7. In che modo AVSampleBufferDisplayLayer visualizza H.264
- 8. Codificatore video H.264 in javascript
- 9. Divisione NAL/slice codificata H.264
- 10. H.264 muxed a MP4 utilizzando libavformat non riproducibile
- 11. Come possiamo ottenere il flusso video codificato H.264 dalla videocamera di iPhone?
- 12. Dimensioni file H.264 per 1 ora di video HD
- 13. h 264 Codifica/decodifica hardware per IOS (IPhone/Ipad)?
- 14. Vettori di movimento di estrazione dal flusso di bit H.264
- 15. Come convertire i pacchetti UDP H.264 in file multimediale o file riproducibili (deframmentazione)
- 16. Streamming un video codificato H.264 su UDP
- 17. Streaming video H.264 su rtp utilizzando gstreamer
- 18. convert h.264 avi container in mp4 con ffmpeg
- 19. Decodifica h.264 hardware accelerata per texture, sovrapposizione o simile in iOS
- 20. Come posso eseguire la codifica H.264 con accelerazione hardware e la decodifica per lo streaming?
- 21. Accedi a Google Cloud Print in Android
- 22. Modifica dei vettori di movimento nel decodificatore ffmpeg H.264
- 23. Accedi/Registrati direttamente sulla home page
- 24. Catturare stream h.264 dalla fotocamera con Gstreamer
- 25. Librerie di decodifica video h.264 libere/aperte? (Non GPL)
- 26. comando di conversione ffmpeg per l'output in h.264 per iPad
- 27. Come posso creare un film con codifica H.264 da un insieme di immagini in C#?
- 28. Android Google Accedi Accedi handleSignInResult: false
- 29. Come posso riprodurre video H.264 RTSP nell'app XAML Metro C# di Windows 8?
- 30. Come eseguire lo streaming di un video h.264 raw in jPlayer?
Ho usato il video di decodifica dell'hardware libstagefright su Android, imitatore principale AwesomePlayer.cpp, invoco OMXCodec, è ok su Android 4.0, ma su Android 4.1, è schermo nero, hai qualche suguest? – crossle
@CrossleSong In 'Android 4.1', ad esempio' JellyBean', la pipeline del display ha subito alcuni miglioramenti significativi. Potete per favore condividere alcuni registri per ulteriori analisi? Consiglierei di accedere dai moduli 'SurfaceTexture',' HwComposer' e 'Layer'. Una nota a margine: il tuo 'layer' è contrassegnato come sicuro per qualche motivo? – Ganesh
Grazie della risposta. Ho risolto questo problema, perché il problema di ANativeWindow. mancanza di native_window_set_scaling_mode (mNativeWindow.get(), mVideoScalingMode); – crossle