MediaParser Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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
- 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;
@Override
public void onSeekMapFound(int i, @NonNull MediaFormat mediaFormat) {
// Do nothing.
}
@Override
public void onTrackDataFound(int i, @NonNull TrackData trackData) {
MediaFormat mediaFormat = trackData.mediaFormat;
if (videoTrackIndex == -1 &&
mediaFormat
.getString(MediaFormat.KEY_MIME, /* defaultValue= */ "")
.startsWith("video/")) {
videoTrackIndex = i;
}
}
@Override
public void onSampleDataFound(int trackIndex, @NonNull InputReader inputReader)
throws IOException {
int numberOfBytesToRead = (int) inputReader.getLength();
if (videoTrackIndex != trackIndex) {
// Discard contents.
inputReader.read(
discardedDataBuffer,
/* offset= */ 0,
Math.min(discardDataBuffer.length, numberOfBytesToRead));
} else {
ensureSpaceInBuffer(numberOfBytesToRead);
int bytesRead = inputReader.read(
sampleDataBuffer, bytesWrittenCount, numberOfBytesToRead);
bytesWrittenCount += bytesRead;
}
}
@Override
public void onSampleCompleted(
int trackIndex,
long timeMicros,
int flags,
int size,
int offset,
@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,
/* destPos= */ 0,
size);
// Place trailing bytes at the start of the buffer.
System.arraycopy(
sampleDataBuffer,
bytesWrittenCount - offset,
sampleDataBuffer,
/* destPos= */ 0,
/* size= */ offset);
bytesWrittenCount = bytesWrittenCount - offset;
publishSample(sampleData, timeMicros, flags);
}
private void ensureSpaceInBuffer(int numberOfBytesToRead) {
int requiredLength = bytesWrittenCount + numberOfBytesToRead;
if (requiredLength > 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 |
| 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 |
| 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 |
| CreateByName(String, MediaParser+IOutputConsumer) |
Erstellt eine Instanz, die vom Parser mit dem angegebenen Element unterstützt wird |
| 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 |
| 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 |
| 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 |
| JavaAs<TResult>(IJavaPeerable) |
Versuchen Sie, die Eingabe |
| 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 |