Sprache

MediaParser Klasse

Definition

Analysiert Mediencontainerformate und extrahiert enthaltene Medienbeispiele und Metadaten.

[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
Vererbung
MediaParser
Attribute

Hinweise

Analysiert Mediencontainerformate und extrahiert enthaltene Medienbeispiele und Metadaten.

Diese Klasse bietet Zugriff auf einen Akku von Mediencontainerparsern auf niedriger Ebene. Jede Instanz dieser Klasse ist einer bestimmten Medienparserimplementierung zugeordnet, die für die Extraktion aus einem bestimmten Mediencontainerformat geeignet ist. Die Implementierungszuweisung des Medienparsers hängt von der Factorymethode (siehe #create und #createByName) ab, die zum Erstellen der Instanz verwendet wird.

Benutzer müssen Folgendes implementieren, um diese Klasse zu verwenden.

<ul><li>InputReader: Stellt die Bytes des Mediencontainers bereit, die analysiert werden sollen. <li>OutputConsumer: Stellt eine Spüle für alle extrahierten Daten und Metadaten bereit. </ul>

Der folgende Codeausschnitt enthält ein Verwendungsbeispiel:

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

            while (mediaParser.advance(myInputReader)) {}

            mediaParser.release();
            mediaParser = null;

Der folgende Codeausschnitt enthält eine rudimentäre Beispielimplementierung OutputConsumer , die alle Videobeispiele extrahiert und veröffentlicht:

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);
                 }
               }

              }

Java Dokumentation für android.media.MediaParser.

Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die von der Android Open Source Project erstellt und gemeinsam verwendet und gemäß den in der 2.5 Attribution License beschriebenen Begriffen verwendet werden.

Felder

Name Beschreibung
ParameterAdtsEnableCbrSeeking

Legt fest, ob die Suche nach konstanter Bitrate für die ADTS-Analyse aktiviert werden soll.

ParameterAmrEnableCbrSeeking

Legt fest, ob die Suche nach konstanter Bitrate für AMR aktiviert werden soll.

ParameterFlacDisableId3

Legt fest, ob die ID3-Spur für FLAC deaktiviert werden soll.

ParameterMatroskaDisableCuesSeeking

Legt fest, ob die Matroska-Analyse das Suchen nach dem Cues-Element vermeiden soll.

ParameterMp3DisableId3

Legt fest, ob die ID3-Spur für MP3 deaktiviert werden soll.

ParameterMp3EnableCbrSeeking

Legt fest, ob die Suche nach konstanter Bitrate für MP3 aktiviert werden soll.

ParameterMp3EnableIndexSeeking

Legt fest, ob die MP3-Analyse eine Zeit-zu-Byte-Zuordnung generieren soll.

ParameterMp4IgnoreEditLists

Legt fest, ob die MP4-Analyse Bearbeitungslisten ignorieren soll.

ParameterMp4IgnoreTfdtBox

Legt fest, ob die MP4-Analyse das Tfdt-Feld ignorieren soll.

ParameterMp4TreatVideoFramesAsKeyframes

Legt fest, ob die MP4-Analyse alle Videoframes als Keyframes behandeln soll.

ParameterTsAllowNonIdrAvcKeyframes

Legt fest, ob TS Beispiele behandeln soll, die aus Nicht-IDR-I-Segmenten als Synchronisierungsbeispiele (Keyframes) bestehen.

ParameterTsDetectAccessUnits

Legt fest, ob die TS-Analyse den AVC-Datenstrom basierend auf Datenschnittkopfzeilen in Zugriffseinheiten aufteilen soll.

ParameterTsEnableHdmvDtsAudioStreams

Legt fest, ob die TS-Analyse HDMV DTS-Audiostreams verarbeiten soll.

ParameterTsIgnoreAacStream

Legt fest, ob die TS-Analyse elementare AAC-Datenströme ignorieren soll.

ParameterTsIgnoreAvcStream

Legt fest, ob die TS-Analyse AVC-Elementardatenströme ignorieren soll.

ParameterTsIgnoreSpliceInfoStream

Legt fest, ob DIE TS-Analyse Datenströme ignorieren soll.

ParameterTsMode

Legt den Vorgangsmodus für die TS-Analyse fest.

ParserNameAc3

Parser für das AC-3-Containerformat, wie in Digital Audio Compression Standard (AC-3) definiert.

ParserNameAc4

Parser für das AC-4-Containerformat, wie von Dolby AC-4 definiert: Audiobereitstellung für Entertainment Services der nächsten Generation.

ParserNameAdts

Parser für das ADTS-Containerformat, wie in ISO/IEC 13818-7 definiert.

ParserNameAmr

Parser für das AMR-Containerformat, wie in RFC 4867 definiert.

ParserNameFlac

Parser für das FLAC-Containerformat, wie in der Spezifikation definiert.

ParserNameFlv

Parser für das FLV-Containerformat, wie in adobe Flash Video File Format Specification definiert.

ParserNameFmp4

Parser für fragmentierte Dateien mit dem MP4-Containerformat, wie in ISO/IEC 14496-12 definiert.

ParserNameMatroska

Parser für das Matroska-Containerformat, wie in der Spezifikation definiert.

ParserNameMp3

Parser für das MP3-Containerformat, wie in ISO/IEC 11172-3 definiert.

ParserNameMp4

Parser für nicht fragmentierte Dateien mit dem MP4-Containerformat, wie in ISO/IEC 14496-12 definiert.

ParserNameOgg

Parser für das OGG-Containerformat, wie in RFC 3533 definiert.

ParserNamePs

Parser für das PS-Containerformat, wie in ISO/IEC 11172-1 definiert.

ParserNameTs

Parser für das TS-Containerformat, wie in ISO/IEC 13818-1 definiert.

ParserNameUnknown

Parsername, der zurückgegeben #getParserName() wird, wenn noch kein Parser ausgewählt wurde.

ParserNameWav

Parser für das WAV-Containerformat, wie in Multimedia Programming Interface and Data Specifications definiert.

SampleFlagDecodeOnly
Veraltet.

Gibt an, dass das Beispiel decodiert, aber nicht gerendert werden soll.

SampleFlagEncrypted
Veraltet.

Gibt an, dass das Beispiel (zumindest teilweise) verschlüsselt ist.

SampleFlagHasSupplementalData
Veraltet.

Gibt an, dass das Beispiel zusätzliche Daten enthält.

SampleFlagKeyFrame
Veraltet.

Gibt an, dass das Beispiel ein Synchronisierungsbeispiel enthält.

SampleFlagLastSample
Veraltet.

Gibt an, dass das Beispiel bekanntermaßen das letzte Medienbeispiel des Datenstroms enthält.

Eigenschaften

Name Beschreibung
Class

Gibt die Laufzeitklasse dieses Werts Objectzurück.

(Geerbt von Object)
Handle

Das Handle für die zugrunde liegende Android-Instanz.

(Geerbt von Object)
JniIdentityHashCode

Ruft den Identitätshashcode ab, der diesem Java Peer von der Interop-Laufzeit zugewiesen ist.

(Geerbt von Object)
JniManagedPeerState

Analysiert Mediencontainerformate und extrahiert enthaltene Medienbeispiele und Metadaten.

(Geerbt von JavaObject)
JniPeerMembers

Analysiert Mediencontainerformate und extrahiert enthaltene Medienbeispiele und Metadaten.

LogSessionId

Analysiert Mediencontainerformate und extrahiert enthaltene Medienbeispiele und Metadaten.

ParserName

Gibt den Namen der zugrunde stehenden Parserimplementierung zurück.

PeerReference

Ruft den JNI-Objektverweis für diesen Java Peer ab.

(Geerbt von Object)
ThresholdClass

Diese API unterstützt die Mono für Android-Infrastruktur und ist nicht für die direkte Verwendung aus Ihrem Code vorgesehen.

(Geerbt von Object)
ThresholdType

Diese API unterstützt die Mono für Android-Infrastruktur und ist nicht für die direkte Verwendung aus Ihrem Code vorgesehen.

(Geerbt von Object)

Methoden

Name Beschreibung
Advance(MediaParser+ISeekableInputReader)

Macht Fortschritte bei der Extraktion des Eingabemedienstroms, es sei denn, das Ende der Eingabe wurde erreicht.

Clone()

Erstellt und gibt eine Kopie dieses Objekts zurück.

(Geerbt von Object)
Construct(JniObjectReference, JniObjectReferenceOptions)

Analysiert Mediencontainerformate und extrahiert enthaltene Medienbeispiele und Metadaten.

(Geerbt von JavaObject)
Create(MediaParser+IOutputConsumer, String[])

Erstellt eine Instanz, deren Sicherungsparser ausgewählt wird, indem der Inhalt während des ersten #advance Aufrufs angeheftet wird.

CreateByName(String, MediaParser+IOutputConsumer)

Erstellt eine Instanz, die vom Parser mit dem angegebenen Element unterstützt wird name.

Dispose()

Veröffentlicht die Ressourcen, die von diesem Java Peer gehalten werden.

(Geerbt von Object)
Dispose(Boolean)

Veröffentlicht die Ressourcen, die von diesem Java Peer gehalten werden.

(Geerbt von Object)
DisposeUnlessReferenced()

Analysiert Mediencontainerformate und extrahiert enthaltene Medienbeispiele und Metadaten.

(Geerbt von JavaObject)
Equals(Object)

Analysiert Mediencontainerformate und extrahiert enthaltene Medienbeispiele und Metadaten.

(Geerbt von JavaObject)
Equals(Object)

Gibt an, ob ein anderes Objekt "gleich" diesem Objekt ist.

(Geerbt von Object)
GetHashCode()

Gibt einen Hashcodewert für das Objekt zurück.

(Geerbt von Object)
GetParserNames(MediaFormat)

Gibt eine unveränderliche Liste mit den Namen der Parser zurück, die für Containerformate mit dem angegebenen MediaFormatFormat geeignet sind.

JavaFinalize()
Veraltet.

Wird vom Garbage Collector für ein Objekt aufgerufen, wenn die Garbage Collection bestimmt, dass keine weiteren Verweise auf das Objekt vorhanden sind.

(Geerbt von Object)
Notify()

Aktiviert einen einzelnen Thread, der auf dem Monitor dieses Objekts wartet.

(Geerbt von Object)
NotifyAll()

Aktiviert alle Threads, die auf dem Monitor dieses Objekts warten.

(Geerbt von Object)
Release()

Gibt alle erworbenen Ressourcen frei.

Seek(MediaParser+SeekPoint)

Sucht innerhalb des zu extrahierenden Mediencontainers.

SetHandle(IntPtr, JniHandleOwnership)

Legt die Handle-Eigenschaft fest.

(Geerbt von Object)
SetParameter(String, Object)

Legt parserspezifische Parameter fest, die das Anpassen des Verhaltens ermöglichen.

SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

Analysiert Mediencontainerformate und extrahiert enthaltene Medienbeispiele und Metadaten.

(Geerbt von JavaObject)
SupportsParameter(String)

Gibt zurück, ob die angegebene Angabe parameterName von diesem Parser unterstützt wird.

ToArray<T>()

Erstellt ein verwaltetes Array aus diesem Java Arraywrapper.

(Geerbt von Object)
ToString()

Gibt eine Zeichenfolgendarstellung des Objekts zurück.

(Geerbt von Object)
UnregisterFromRuntime()

Hebt die Registrierung dieses Java Peers aus der Interop-Laufzeit auf.

(Geerbt von Object)
Wait()

Bewirkt, dass der aktuelle Thread wartet, bis er wach ist, in der Regel durch em benachrichtigt/em< oder >em<unterbrochen>/em<.><>

(Geerbt von Object)
Wait(Int64, Int32)

Bewirkt, dass der aktuelle Thread wartet, bis er wach ist, in der Regel durch <em>benachrichtigt</em> oder <em>unterbrochen</em> oder bis eine bestimmte Menge an Echtzeit verstrichen ist.

(Geerbt von Object)
Wait(Int64)

Bewirkt, dass der aktuelle Thread wartet, bis er wach ist, in der Regel durch <em>benachrichtigt</em> oder <em>unterbrochen</em> oder bis eine bestimmte Menge an Echtzeit verstrichen ist.

(Geerbt von Object)

Explizite Schnittstellenimplementierungen

Name Beschreibung
IJavaPeerable.Disposed()

Analysiert Mediencontainerformate und extrahiert enthaltene Medienbeispiele und Metadaten.

(Geerbt von JavaObject)
IJavaPeerable.Finalized()

Analysiert Mediencontainerformate und extrahiert enthaltene Medienbeispiele und Metadaten.

(Geerbt von JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

Analysiert Mediencontainerformate und extrahiert enthaltene Medienbeispiele und Metadaten.

(Geerbt von JavaObject)
IJavaPeerable.SetJniIdentityHashCode(Int32)

Analysiert Mediencontainerformate und extrahiert enthaltene Medienbeispiele und Metadaten.

(Geerbt von JavaObject)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

Analysiert Mediencontainerformate und extrahiert enthaltene Medienbeispiele und Metadaten.

(Geerbt von JavaObject)
IJavaPeerable.SetPeerReference(JniObjectReference)

Analysiert Mediencontainerformate und extrahiert enthaltene Medienbeispiele und Metadaten.

(Geerbt von JavaObject)

Erweiterungsmethoden

Name Beschreibung
GetJniTypeName(IJavaPeerable)

Ruft den JNI-Namen des Typs der Instanz selfab.

JavaAs<TResult>(IJavaPeerable)

Versuchen Sie, die Eingabe selfzu TResult erzwingen, und überprüfen Sie, ob die Koersion auf der Java Seite gültig ist.

JavaCast<TResult>(IJavaObject)

Führt eine android-laufzeitgecheckte Typkonvertierung aus.

JavaCast<TResult>(IJavaObject)

Analysiert Mediencontainerformate und extrahiert enthaltene Medienbeispiele und Metadaten.

TryJavaCast<TResult>(IJavaPeerable, TResult)

Versuchen Sie, die Eingabe selfzu TResult erzwingen, und überprüfen Sie, ob die Koersion auf der Java Seite gültig ist.

Gilt für: