Lingua

MediaParser Classe

Definizione

Analizza i formati dei contenitori multimediali ed estrae esempi e metadati multimediali contenuti.

[Android.Runtime.Register("android/media/MediaParser", ApiSince=30, DoNotGenerateAcw=true)]
public sealed class MediaParser : Java.Lang.Object
[<Android.Runtime.Register("android/media/MediaParser", ApiSince=30, DoNotGenerateAcw=true)>]
type MediaParser = class
    inherit Object
Ereditarietà
MediaParser
Attributi

Commenti

Analizza i formati dei contenitori multimediali ed estrae esempi e metadati multimediali contenuti.

Questa classe fornisce l'accesso a una batteria di parser di contenitori multimediali di basso livello. Ogni istanza di questa classe è associata a un'implementazione specifica del parser multimediale adatta per l'estrazione da un formato contenitore multimediale specifico. L'assegnazione di implementazione del parser multimediale dipende dal metodo factory (vedere #create e #createByName) usato per creare l'istanza.

Per usare questa classe, gli utenti devono implementare quanto segue.

<ul><li>InputReader: fornisce i byte del contenitore multimediale da analizzare. <li>OutputConsumer: fornisce un sink per tutti i dati e i metadati estratti. </ul>

Il frammento di codice seguente include un esempio di utilizzo:

MyOutputConsumer myOutputConsumer = new MyOutputConsumer();
            MyInputReader myInputReader = new MyInputReader("www.example.com");
            MediaParser mediaParser = MediaParser.create(myOutputConsumer);

            while (mediaParser.advance(myInputReader)) {}

            mediaParser.release();
            mediaParser = null;

Il frammento di codice seguente fornisce un'implementazione di esempio rudimentale OutputConsumer che estrae e pubblica tutti gli esempi video:

class VideoOutputConsumer implements MediaParser.OutputConsumer {

                private byte[] sampleDataBuffer = new byte[4096];
                private byte[] discardedDataBuffer = new byte[4096];
                private int videoTrackIndex = -1;
                private int bytesWrittenCount = 0;

                &#64;Override
                public void onSeekMapFound(int i, &#64;NonNull MediaFormat mediaFormat) {
                  // Do nothing.
                }

                &#64;Override
                public void onTrackDataFound(int i, &#64;NonNull TrackData trackData) {
                  MediaFormat mediaFormat = trackData.mediaFormat;
                  if (videoTrackIndex == -1 &amp;&amp;
                      mediaFormat
                          .getString(MediaFormat.KEY_MIME, &#47;* defaultValue= *&#47; "")
                          .startsWith("video/")) {
                    videoTrackIndex = i;
                  }
                }

                &#64;Override
                public void onSampleDataFound(int trackIndex, &#64;NonNull InputReader inputReader)
                    throws IOException {
                  int numberOfBytesToRead = (int) inputReader.getLength();
                  if (videoTrackIndex != trackIndex) {
                    // Discard contents.
                    inputReader.read(
                        discardedDataBuffer,
                        &#47;* offset= *&#47; 0,
                        Math.min(discardDataBuffer.length, numberOfBytesToRead));
                  } else {
                    ensureSpaceInBuffer(numberOfBytesToRead);
                    int bytesRead = inputReader.read(
                        sampleDataBuffer, bytesWrittenCount, numberOfBytesToRead);
                    bytesWrittenCount += bytesRead;
                  }
                }

                &#64;Override
                public void onSampleCompleted(
                    int trackIndex,
                    long timeMicros,
                    int flags,
                    int size,
                    int offset,
                    &#64;Nullable CryptoInfo cryptoData) {
                  if (videoTrackIndex != trackIndex) {
                    return; // It's not the video track. Ignore.
                  }
                  byte[] sampleData = new byte[size];
                  int sampleStartOffset = bytesWrittenCount - size - offset;
                  System.arraycopy(
                      sampleDataBuffer,
                      sampleStartOffset,
                      sampleData,
                      &#47;* destPos= *&#47; 0,
                      size);
                  // Place trailing bytes at the start of the buffer.
                  System.arraycopy(
                      sampleDataBuffer,
                      bytesWrittenCount - offset,
                      sampleDataBuffer,
                      &#47;* destPos= *&#47; 0,
                      &#47;* size= *&#47; offset);
                  bytesWrittenCount = bytesWrittenCount - offset;
                  publishSample(sampleData, timeMicros, flags);
                }

               private void ensureSpaceInBuffer(int numberOfBytesToRead) {
                 int requiredLength = bytesWrittenCount + numberOfBytesToRead;
                 if (requiredLength &gt; sampleDataBuffer.length) {
                   sampleDataBuffer = Arrays.copyOf(sampleDataBuffer, requiredLength);
                 }
               }

              }

per android.media.MediaParser.

Le parti di questa pagina sono modifiche basate sul lavoro creato e condiviso dalla e usati in base ai termini descritti in Creative License 2.5 Attribution License.

Campi

Nome Descrizione
ParameterAdtsEnableCbrSeeking

Imposta un valore che indica se la ricerca della velocità in bit costante deve essere abilitata per l'analisi di ADTS.

ParameterAmrEnableCbrSeeking

Imposta se la ricerca della velocità in bit costante deve essere abilitata per AMR.

ParameterFlacDisableId3

Imposta se la traccia ID3 deve essere disabilitata per FLAC.

ParameterMatroskaDisableCuesSeeking

Imposta se l'analisi di Matroska deve evitare di cercare l'elemento dei segnali.

ParameterMp3DisableId3

Imposta un valore che indica se la traccia ID3 deve essere disabilitata per MP3.

ParameterMp3EnableCbrSeeking

Imposta se la ricerca della velocità in bit costante deve essere abilitata per MP3.

ParameterMp3EnableIndexSeeking

Imposta un valore che indica se l'analisi MP3 deve generare un mapping time-to-byte.

ParameterMp4IgnoreEditLists

Imposta un valore che indica se l'analisi MP4 deve ignorare gli elenchi di modifica.

ParameterMp4IgnoreTfdtBox

Imposta se l'analisi MP4 deve ignorare la casella tfdt.

ParameterMp4TreatVideoFramesAsKeyframes

Imposta se l'analisi MP4 deve considerare tutti i fotogrammi video come fotogrammi chiave.

ParameterTsAllowNonIdrAvcKeyframes

Imposta se il TS deve considerare campioni costituiti da sezioni IDR non come campioni di sincronizzazione (fotogrammi chiave).

ParameterTsDetectAccessUnits

Imposta un valore che indica se l'analisi TS deve suddividere il flusso AVC in unità di accesso in base alle intestazioni di sezione.

ParameterTsEnableHdmvDtsAudioStreams

Imposta se l'analisi TS deve gestire flussi audio DTS HDMV.

ParameterTsIgnoreAacStream

Imposta un valore che indica se l'analisi TS deve ignorare i flussi elementari di AAC.

ParameterTsIgnoreAvcStream

Imposta se l'analisi TS deve ignorare i flussi elementari AVC.

ParameterTsIgnoreSpliceInfoStream

Imposta un valore che indica se l'analisi TS deve ignorare i flussi di informazioni di splice.

ParameterTsMode

Imposta la modalità operativa per l'analisi TS.

ParserNameAc3

Parser per il formato contenitore AC-3, come definito in Digital Audio Compression Standard (AC-3).

ParserNameAc4

Parser per il formato contenitore AC-4, come definito da Dolby AC-4: recapito audio per i servizi di intrattenimento di nuova generazione.

ParserNameAdts

Parser per il formato del contenitore ADTS, come definito in ISO/IEC 13818-7.

ParserNameAmr

Parser per il formato del contenitore AMR, come definito in RFC 4867.

ParserNameFlac

Parser per il formato del contenitore FLAC, come definito nella specifica.

ParserNameFlv

Parser per il formato del contenitore JSON, come definito in Adobe Flash Video File Format Specification.Parser for the JSON container format format, as defined in Adobe Flash Video File Format Specification.

ParserNameFmp4

Parser per i file frammentati usando il formato del contenitore MP4, come definito in ISO/IEC 14496-12.

ParserNameMatroska

Parser per il formato del contenitore Matroska, come definito nella specifica.

ParserNameMp3

Parser per il formato del contenitore MP3, come definito in ISO/IEC 11172-3.

ParserNameMp4

Parser per i file non frammentati usando il formato del contenitore MP4, come definito in ISO/IEC 14496-12.

ParserNameOgg

Parser per il formato del contenitore OGG, come definito in RFC 3533.

ParserNamePs

Parser per il formato del contenitore PS, come definito in ISO/IEC 11172-1.

ParserNameTs

Parser per il formato del contenitore TS, come definito in ISO/IEC 13818-1.

ParserNameUnknown

Nome del parser restituito da #getParserName() quando non è ancora stato selezionato alcun parser.

ParserNameWav

Parser per il formato del contenitore WAV, come definito nelle specifiche di interfaccia di programmazione multimediale e dati.

SampleFlagDecodeOnly
Obsoleti.

Indica che l'esempio deve essere decodificato ma non sottoposto a rendering.

SampleFlagEncrypted
Obsoleti.

Indica che l'esempio è (almeno parzialmente) crittografato.

SampleFlagHasSupplementalData
Obsoleti.

Indica che l'esempio contiene dati supplementari.

SampleFlagKeyFrame
Obsoleti.

Indica che l'esempio contiene un esempio di sincronizzazione.

SampleFlagLastSample
Obsoleti.

Indica che l'esempio è noto per contenere l'ultimo campione multimediale del flusso.

Proprietà

Nome Descrizione
Class

Restituisce la classe di runtime di questo Objectoggetto .

(Ereditato da Object)
Handle

Handle per l'istanza di Android sottostante.

(Ereditato da Object)
JniIdentityHashCode

Ottiene il codice hash di identità assegnato a questo Java peer dal runtime di interoperabilità.

(Ereditato da Object)
JniManagedPeerState

Analizza i formati dei contenitori multimediali ed estrae esempi e metadati multimediali contenuti.

(Ereditato da JavaObject)
JniPeerMembers

Analizza i formati dei contenitori multimediali ed estrae esempi e metadati multimediali contenuti.

LogSessionId

Analizza i formati dei contenitori multimediali ed estrae esempi e metadati multimediali contenuti.

ParserName

Restituisce il nome dell'implementazione del parser di supporto.

PeerReference

Ottiene il riferimento all'oggetto JNI per questo peer Java.

(Ereditato da Object)
ThresholdClass

Questa API supporta l'infrastruttura Mono per Android e non deve essere usata direttamente dal codice.

(Ereditato da Object)
ThresholdType

Questa API supporta l'infrastruttura Mono per Android e non deve essere usata direttamente dal codice.

(Ereditato da Object)

Metodi

Nome Descrizione
Advance(MediaParser+ISeekableInputReader)

Avanza nell'estrazione del flusso multimediale di input, a meno che non sia stata raggiunta la fine dell'input.

Clone()

Crea e restituisce una copia di questo oggetto.

(Ereditato da Object)
Construct(JniObjectReference, JniObjectReferenceOptions)

Analizza i formati dei contenitori multimediali ed estrae esempi e metadati multimediali contenuti.

(Ereditato da JavaObject)
Create(MediaParser+IOutputConsumer, String[])

Crea un'istanza il cui parser di backup verrà selezionato eseguendo l'analisi del contenuto durante la prima #advance chiamata.

CreateByName(String, MediaParser+IOutputConsumer)

Crea un'istanza supportata dal parser con l'oggetto specificato name.

Dispose()

Rilascia le risorse contenute in questo peer Java.

(Ereditato da Object)
Dispose(Boolean)

Rilascia le risorse contenute in questo peer Java.

(Ereditato da Object)
DisposeUnlessReferenced()

Analizza i formati dei contenitori multimediali ed estrae esempi e metadati multimediali contenuti.

(Ereditato da JavaObject)
Equals(Object)

Analizza i formati dei contenitori multimediali ed estrae esempi e metadati multimediali contenuti.

(Ereditato da JavaObject)
Equals(Object)

Indica se un altro oggetto è "uguale a" questo.

(Ereditato da Object)
GetHashCode()

Restituisce un valore di codice hash per l'oggetto .

(Ereditato da Object)
GetParserNames(MediaFormat)

Restituisce un elenco non modificabile con i nomi dei parser adatti ai formati di contenitore con l'oggetto specificato MediaFormat.

JavaFinalize()
Obsoleti.

Chiamato dal Garbage Collector su un oggetto quando Garbage Collection determina che non sono presenti altri riferimenti all'oggetto .

(Ereditato da Object)
Notify()

Riattiva un singolo thread in attesa del monitor dell'oggetto.

(Ereditato da Object)
NotifyAll()

Riattiva tutti i thread in attesa del monitor dell'oggetto.

(Ereditato da Object)
Release()

Rilascia tutte le risorse acquisite.

Seek(MediaParser+SeekPoint)

Cerca all'interno del contenitore multimediale da estrarre.

SetHandle(IntPtr, JniHandleOwnership)

Imposta la proprietà Handle.

(Ereditato da Object)
SetParameter(String, Object)

Imposta i parametri specifici del parser che consentono la personalizzazione del comportamento.

SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

Analizza i formati dei contenitori multimediali ed estrae esempi e metadati multimediali contenuti.

(Ereditato da JavaObject)
SupportsParameter(String)

Restituisce un valore che indica se l'oggetto specificato parameterName è supportato da questo parser.

ToArray<T>()

Crea una matrice gestita da questo wrapper di matrice Java.

(Ereditato da Object)
ToString()

Restituisce una rappresentazione di stringa dell'oggetto .

(Ereditato da Object)
UnregisterFromRuntime()

Annulla la registrazione di questo Java peer dal runtime di interoperabilità.

(Ereditato da Object)
Wait()

Fa sì che il thread corrente attenda finché non viene risvegliato, in genere ricevendo <>una notifica</em> o <em>interrotto</em>.

(Ereditato da Object)
Wait(Int64, Int32)

Fa sì che il thread corrente attenda finché non viene risvegliato, in genere ricevendo<> una notifica</em> o <em>interrotto</em> o fino a quando non è trascorsa una determinata quantità di tempo reale.

(Ereditato da Object)
Wait(Int64)

Fa sì che il thread corrente attenda finché non viene risvegliato, in genere ricevendo<> una notifica</em> o <em>interrotto</em> o fino a quando non è trascorsa una determinata quantità di tempo reale.

(Ereditato da Object)

Implementazioni dell'interfaccia esplicita

Nome Descrizione
IJavaPeerable.Disposed()

Analizza i formati dei contenitori multimediali ed estrae esempi e metadati multimediali contenuti.

(Ereditato da JavaObject)
IJavaPeerable.Finalized()

Analizza i formati dei contenitori multimediali ed estrae esempi e metadati multimediali contenuti.

(Ereditato da JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

Analizza i formati dei contenitori multimediali ed estrae esempi e metadati multimediali contenuti.

(Ereditato da JavaObject)
IJavaPeerable.SetJniIdentityHashCode(Int32)

Analizza i formati dei contenitori multimediali ed estrae esempi e metadati multimediali contenuti.

(Ereditato da JavaObject)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

Analizza i formati dei contenitori multimediali ed estrae esempi e metadati multimediali contenuti.

(Ereditato da JavaObject)
IJavaPeerable.SetPeerReference(JniObjectReference)

Analizza i formati dei contenitori multimediali ed estrae esempi e metadati multimediali contenuti.

(Ereditato da JavaObject)

Metodi di estensione

Nome Descrizione
GetJniTypeName(IJavaPeerable)

Ottiene il nome JNI del tipo dell'istanza selfdi .

JavaAs<TResult>(IJavaPeerable)

Provare a digitare selfTResult, verificando che la coercizione sia valida sul lato Java.

JavaCast<TResult>(IJavaObject)

Esegue una conversione del tipo di tipo controllato dal runtime Android.

JavaCast<TResult>(IJavaObject)

Analizza i formati dei contenitori multimediali ed estrae esempi e metadati multimediali contenuti.

TryJavaCast<TResult>(IJavaPeerable, TResult)

Provare a digitare selfTResult, verificando che la coercizione sia valida sul lato Java.

Si applica a