Lenguaje

MediaParser Clase

Definición

Analiza los formatos de contenedor multimedia y extrae los metadatos y ejemplos multimedia contenidos.

[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
Herencia
MediaParser
Atributos

Comentarios

Analiza los formatos de contenedor multimedia y extrae los metadatos y ejemplos multimedia contenidos.

Esta clase proporciona acceso a una batería de analizadores de contenedores multimedia de bajo nivel. Cada instancia de esta clase está asociada a una implementación específica del analizador de medios que es adecuada para la extracción de un formato de contenedor multimedia específico. La asignación de implementación del analizador multimedia depende del método de fábrica (vea #create y #createByName) usado para crear la instancia.

Los usuarios deben implementar lo siguiente para usar esta clase.

<ul><li>InputReader: proporciona los bytes del contenedor multimedia que se van a analizar. <li>OutputConsumer: proporciona un receptor para todos los datos y metadatos extraídos. </ul>

El siguiente fragmento de código incluye un ejemplo de uso:

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

            while (mediaParser.advance(myInputReader)) {}

            mediaParser.release();
            mediaParser = null;

El siguiente fragmento de código proporciona una implementación de ejemplo rudimentaria OutputConsumer que extrae y publica todos los ejemplos de vídeo:

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 documentación para android.media.MediaParser.

Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el Android y se usan según los términos descritos en creative Creative Commons 2.5 Attribution License.

Campos

Nombre Description
ParameterAdtsEnableCbrSeeking

Establece si la búsqueda de velocidad de bits constante debe estar habilitada para el análisis de ADTS.

ParameterAmrEnableCbrSeeking

Establece si la búsqueda de velocidad de bits constante debe estar habilitada para AMR.

ParameterFlacDisableId3

Establece si la pista ID3 debe deshabilitarse para FLAC.

ParameterMatroskaDisableCuesSeeking

Establece si el análisis de Matroska debe evitar buscar en el elemento cues.

ParameterMp3DisableId3

Establece si la pista ID3 debe deshabilitarse para MP3.

ParameterMp3EnableCbrSeeking

Establece si la búsqueda de velocidad de bits constante debe estar habilitada para MP3.

ParameterMp3EnableIndexSeeking

Establece si el análisis de MP3 debe generar una asignación de tiempo a byte.

ParameterMp4IgnoreEditLists

Establece si el análisis de MP4 debe omitir las listas de edición.

ParameterMp4IgnoreTfdtBox

Establece si el análisis de MP4 debe omitir el cuadro tfdt.

ParameterMp4TreatVideoFramesAsKeyframes

Establece si el análisis de MP4 debe tratar todos los fotogramas de vídeo como fotogramas clave.

ParameterTsAllowNonIdrAvcKeyframes

Establece si TS debe tratar muestras que constan de segmentos I que no son IDR como ejemplos de sincronización (fotogramas clave).

ParameterTsDetectAccessUnits

Establece si el análisis de TS debe dividir el flujo de AVC en unidades de acceso basadas en encabezados de segmento.

ParameterTsEnableHdmvDtsAudioStreams

Establece si el análisis de TS debe controlar las secuencias de audio DTS de HDMV.

ParameterTsIgnoreAacStream

Establece si el análisis de TS debe omitir las secuencias elementales de AAC.

ParameterTsIgnoreAvcStream

Establece si el análisis de TS debe omitir las secuencias elementales de AVC.

ParameterTsIgnoreSpliceInfoStream

Establece si el análisis de TS debe omitir los flujos de información de splice.

ParameterTsMode

Establece el modo de operación para el análisis de TS.

ParserNameAc3

Analizador para el formato de contenedor AC-3, tal como se define en Digital Audio Compression Standard (AC-3).

ParserNameAc4

Analizador para el formato de contenedor AC-4, tal como se define en Dolby AC-4: Entrega de audio para Next-Generation Entertainment Services.

ParserNameAdts

Analizador para el formato de contenedor de ADTS, tal como se define en ISO/IEC 13818-7.

ParserNameAmr

Analizador para el formato de contenedor AMR, tal como se define en RFC 4867.

ParserNameFlac

Analizador para el formato de contenedor FLAC, tal como se define en la especificación.

ParserNameFlv

Analizador para el formato de contenedor FLV, tal como se define en adobe Flash Video File Format Specification.

ParserNameFmp4

Analizador para archivos fragmentados mediante el formato de contenedor MP4, tal como se define en ISO/IEC 14496-12.

ParserNameMatroska

Analizador para el formato de contenedor Matroska, tal como se define en la especificación.

ParserNameMp3

Analizador para el formato de contenedor MP3, tal como se define en ISO/IEC 11172-3.

ParserNameMp4

Analizador para archivos no fragmentados mediante el formato de contenedor MP4, tal como se define en ISO/IEC 14496-12.

ParserNameOgg

Analizador para el formato de contenedor de OGG, tal como se define en RFC 3533.

ParserNamePs

Analizador para el formato de contenedor PS, tal como se define en ISO/IEC 11172-1.

ParserNameTs

Analizador para el formato de contenedor TS, tal como se define en ISO/IEC 13818-1.

ParserNameUnknown

Nombre del analizador devuelto por #getParserName() cuando aún no se ha seleccionado ningún analizador.

ParserNameWav

Analizador para el formato de contenedor WAV, tal como se define en Interfaz de programación multimedia y Especificaciones de datos.

SampleFlagDecodeOnly
Obsoletos.

Indica que el ejemplo debe descodificarse pero no representarse.

SampleFlagEncrypted
Obsoletos.

Indica que la muestra está cifrada (al menos parcialmente).

SampleFlagHasSupplementalData
Obsoletos.

Indica que el ejemplo tiene datos complementarios.

SampleFlagKeyFrame
Obsoletos.

Indica que el ejemplo contiene un ejemplo de sincronización.

SampleFlagLastSample
Obsoletos.

Indica que se sabe que el ejemplo contiene el último ejemplo multimedia de la secuencia.

Propiedades

Nombre Description
Class

Devuelve la clase en tiempo de ejecución de este Objectobjeto .

(Heredado de Object)
Handle

Identificador de la instancia de Android subyacente.

(Heredado de Object)
JniIdentityHashCode

Obtiene el código hash de identidad asignado a este Java del mismo nivel por el tiempo de ejecución de interoperabilidad.

(Heredado de Object)
JniManagedPeerState

Analiza los formatos de contenedor multimedia y extrae los metadatos y ejemplos multimedia contenidos.

(Heredado de JavaObject)
JniPeerMembers

Analiza los formatos de contenedor multimedia y extrae los metadatos y ejemplos multimedia contenidos.

LogSessionId

Analiza los formatos de contenedor multimedia y extrae los metadatos y ejemplos multimedia contenidos.

ParserName

Devuelve el nombre de la implementación del analizador de respaldo.

PeerReference

Obtiene la referencia de objeto JNI para este Java del mismo nivel.

(Heredado de Object)
ThresholdClass

Esta API admite la infraestructura mono para Android y no está pensada para usarse directamente desde el código.

(Heredado de Object)
ThresholdType

Esta API admite la infraestructura mono para Android y no está pensada para usarse directamente desde el código.

(Heredado de Object)

Métodos

Nombre Description
Advance(MediaParser+ISeekableInputReader)

Realiza el progreso en la extracción del flujo multimedia de entrada, a menos que se alcance el final de la entrada.

Clone()

Crea y devuelve una copia de este objeto.

(Heredado de Object)
Construct(JniObjectReference, JniObjectReferenceOptions)

Analiza los formatos de contenedor multimedia y extrae los metadatos y ejemplos multimedia contenidos.

(Heredado de JavaObject)
Create(MediaParser+IOutputConsumer, String[])

Crea una instancia cuyo analizador de respaldo se seleccionará mediante el examen del contenido durante la primera #advance llamada.

CreateByName(String, MediaParser+IOutputConsumer)

Crea una instancia respaldada por el analizador con el especificado name.

Dispose()

Libera los recursos mantenidos por este Java del mismo nivel.

(Heredado de Object)
Dispose(Boolean)

Libera los recursos mantenidos por este Java del mismo nivel.

(Heredado de Object)
DisposeUnlessReferenced()

Analiza los formatos de contenedor multimedia y extrae los metadatos y ejemplos multimedia contenidos.

(Heredado de JavaObject)
Equals(Object)

Analiza los formatos de contenedor multimedia y extrae los metadatos y ejemplos multimedia contenidos.

(Heredado de JavaObject)
Equals(Object)

Indica si algún otro objeto es "igual a" este.

(Heredado de Object)
GetHashCode()

Devuelve un valor de código hash para el objeto .

(Heredado de Object)
GetParserNames(MediaFormat)

Devuelve una lista inmutable con los nombres de los analizadores que son adecuados para los formatos de contenedor con el especificado MediaFormat.

JavaFinalize()
Obsoletos.

Lo llama el recolector de elementos no utilizados en un objeto cuando la recolección de elementos no utilizados determina que no hay más referencias al objeto .

(Heredado de Object)
Notify()

Activa un único subproceso que está esperando en el monitor de este objeto.

(Heredado de Object)
NotifyAll()

Activa todos los subprocesos que están esperando en el monitor de este objeto.

(Heredado de Object)
Release()

Libera los recursos adquiridos.

Seek(MediaParser+SeekPoint)

Busca dentro del contenedor multimedia que se va a extraer.

SetHandle(IntPtr, JniHandleOwnership)

Establece la propiedad Handle.

(Heredado de Object)
SetParameter(String, Object)

Establece parámetros específicos del analizador que permiten personalizar el comportamiento.

SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

Analiza los formatos de contenedor multimedia y extrae los metadatos y ejemplos multimedia contenidos.

(Heredado de JavaObject)
SupportsParameter(String)

Devuelve si este analizador admite el objeto especificado parameterName .

ToArray<T>()

Crea una matriz administrada a partir de este contenedor de matriz Java.

(Heredado de Object)
ToString()

Devuelve una representación de cadena del objeto .

(Heredado de Object)
UnregisterFromRuntime()

Anula el registro de este Java del mismo nivel del tiempo de ejecución de interoperabilidad.

(Heredado de Object)
Wait()

Hace que el subproceso actual espere hasta que se despierte, normalmente por ser em notificado/em< o >em<interrumpido>/em<.><>

(Heredado de Object)
Wait(Int64, Int32)

Hace que el subproceso actual espere hasta que se despierte, normalmente por ser <em>notificado</em> o <em>interrumpido</em>, o hasta que haya transcurrido una cierta cantidad de tiempo real.

(Heredado de Object)
Wait(Int64)

Hace que el subproceso actual espere hasta que se despierte, normalmente por ser <em>notificado</em> o <em>interrumpido</em>, o hasta que haya transcurrido una cierta cantidad de tiempo real.

(Heredado de Object)

Implementaciones de interfaz explícitas

Nombre Description
IJavaPeerable.Disposed()

Analiza los formatos de contenedor multimedia y extrae los metadatos y ejemplos multimedia contenidos.

(Heredado de JavaObject)
IJavaPeerable.Finalized()

Analiza los formatos de contenedor multimedia y extrae los metadatos y ejemplos multimedia contenidos.

(Heredado de JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

Analiza los formatos de contenedor multimedia y extrae los metadatos y ejemplos multimedia contenidos.

(Heredado de JavaObject)
IJavaPeerable.SetJniIdentityHashCode(Int32)

Analiza los formatos de contenedor multimedia y extrae los metadatos y ejemplos multimedia contenidos.

(Heredado de JavaObject)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

Analiza los formatos de contenedor multimedia y extrae los metadatos y ejemplos multimedia contenidos.

(Heredado de JavaObject)
IJavaPeerable.SetPeerReference(JniObjectReference)

Analiza los formatos de contenedor multimedia y extrae los metadatos y ejemplos multimedia contenidos.

(Heredado de JavaObject)

Métodos de extensión

Nombre Description
GetJniTypeName(IJavaPeerable)

Obtiene el nombre JNI del tipo de la instancia self.

JavaAs<TResult>(IJavaPeerable)

Intente coerción self para escribir TResult, comprobando que la coerción es válida en el lado de Java.

JavaCast<TResult>(IJavaObject)

Realiza una conversión de tipos comprobados en tiempo de ejecución de Android.

JavaCast<TResult>(IJavaObject)

Analiza los formatos de contenedor multimedia y extrae los metadatos y ejemplos multimedia contenidos.

TryJavaCast<TResult>(IJavaPeerable, TResult)

Intente coerción self para escribir TResult, comprobando que la coerción es válida en el lado de Java.

Se aplica a