MediaParser Classe

Definição

Analisa formatos de contêiner de mídia e extrai exemplos de mídia e metadados contidos.

[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
Herança
MediaParser
Atributos

Comentários

Analisa formatos de contêiner de mídia e extrai exemplos de mídia e metadados contidos.

Essa classe fornece acesso a uma bateria de analisadores de contêiner de mídia de baixo nível. Cada instância dessa classe está associada a uma implementação específica do analisador de mídia que é adequada para extração de um formato de contêiner de mídia específico. A atribuição de implementação do analisador de mídia depende do método de fábrica (ver #create e #createByName) usado para criar a instância.

Os usuários devem implementar o seguinte para usar essa classe.

<ul><li>InputReader: fornece os bytes do contêiner de mídia para analisar. <li>OutputConsumer: Fornece um coletor para todos os dados e metadados extraídos. </ul>

O snippet de código a seguir inclui um exemplo 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;

O snippet de código a seguir fornece uma implementação de exemplo rudimentar OutputConsumer que extrai e publica todos os exemplos 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 documentação para android.media.MediaParser.

Partes desta página são modificações baseadas no trabalho criado e compartilhado pelo Project Open Source do Open Source e usadas de acordo com os termos descritos na Creative Commons 2.5.

Campos

Nome Description
ParameterAdtsEnableCbrSeeking

Define se a busca de taxa de bits constante deve ser habilitada para análise do ADTS.

ParameterAmrEnableCbrSeeking

Define se a busca de taxa de bits constante deve ser habilitada para AMR.

ParameterFlacDisableId3

Define se a faixa ID3 deve ser desabilitada para FLAC.

ParameterMatroskaDisableCuesSeeking

Define se a análise de Matroska deve evitar procurar o elemento de indicações.

ParameterMp3DisableId3

Define se a faixa ID3 deve ser desabilitada para MP3.

ParameterMp3EnableCbrSeeking

Define se a busca de taxa de bits constante deve ser habilitada para MP3.

ParameterMp3EnableIndexSeeking

Define se a análise MP3 deve gerar um mapeamento de tempo para byte.

ParameterMp4IgnoreEditLists

Define se a análise mp4 deve ignorar listas de edição.

ParameterMp4IgnoreTfdtBox

Define se a análise MP4 deve ignorar a caixa tfdt.

ParameterMp4TreatVideoFramesAsKeyframes

Define se a análise MP4 deve tratar todos os quadros de vídeo como quadros-chave.

ParameterTsAllowNonIdrAvcKeyframes

Define se o TS deve tratar exemplos que consistem em fatias de IDR que não sejam de IDR como exemplos de sincronização (quadros-chave).

ParameterTsDetectAccessUnits

Define se a análise de TS deve dividir o fluxo do AVC em unidades de acesso com base em cabeçalhos de fatia.

ParameterTsEnableHdmvDtsAudioStreams

Define se a análise de TS deve lidar com fluxos de áudio DTS do HDMV.

ParameterTsIgnoreAacStream

Define se a análise de TS deve ignorar fluxos elementares do AAC.

ParameterTsIgnoreAvcStream

Define se a análise de TS deve ignorar fluxos elementares do AVC.

ParameterTsIgnoreSpliceInfoStream

Define se a análise de TS deve ignorar fluxos de informações de junção.

ParameterTsMode

Define o modo de operação para análise de TS.

ParserNameAc3

Analisador para o formato de contêiner AC-3, conforme definido no Padrão de Compactação de Áudio Digital (AC-3).

ParserNameAc4

Analisador para o formato de contêiner AC-4, conforme definido pelo Dolby AC-4: Entrega de áudio para serviços de entretenimento de última geração.

ParserNameAdts

Analisador para o formato de contêiner do ADTS, conforme definido em ISO/IEC 13818-7.

ParserNameAmr

Analisador para o formato de contêiner AMR, conforme definido no RFC 4867.

ParserNameFlac

Analisador para o formato de contêiner FLAC, conforme definido na especificação.

ParserNameFlv

Analisador para o formato de contêiner FLV, conforme definido na Especificação de Formato de Arquivo de Vídeo Do Adobe Flash.

ParserNameFmp4

Analisador de arquivos fragmentados usando o formato de contêiner MP4, conforme definido em ISO/IEC 14496-12.

ParserNameMatroska

Analisador para o formato de contêiner Matroska, conforme definido na especificação.

ParserNameMp3

Analisador para o formato de contêiner MP3, conforme definido em ISO/IEC 11172-3.

ParserNameMp4

Analisador para arquivos não fragmentados usando o formato de contêiner MP4, conforme definido em ISO/IEC 14496-12.

ParserNameOgg

Analisador para o formato de contêiner OGG, conforme definido no RFC 3533.

ParserNamePs

Analisador para o formato de contêiner PS, conforme definido em ISO/IEC 11172-1.

ParserNameTs

Analisador para o formato de contêiner TS, conforme definido em ISO/IEC 13818-1.

ParserNameUnknown

Nome do analisador retornado #getParserName() quando nenhum analisador foi selecionado ainda.

ParserNameWav

Analisador para o formato de contêiner WAV, conforme definido em Interface de Programação Multimídia e Especificações de Dados.

SampleFlagDecodeOnly
Obsoleto.

Indica que o exemplo deve ser decodificado, mas não renderizado.

SampleFlagEncrypted
Obsoleto.

Indica que o exemplo é (pelo menos parcialmente) criptografado.

SampleFlagHasSupplementalData
Obsoleto.

Indica que o exemplo tem dados complementares.

SampleFlagKeyFrame
Obsoleto.

Indica que o exemplo contém um exemplo de sincronização.

SampleFlagLastSample
Obsoleto.

Indica que o exemplo é conhecido por conter o último exemplo de mídia do fluxo.

Propriedades

Nome Description
Class

Retorna a classe de runtime deste Object.

(Herdado de Object)
Handle

O identificador para a instância subjacente do Android.

(Herdado de Object)
JniIdentityHashCode

Obtém o código de hash de identidade atribuído a esse par Java pelo runtime de interoperabilidade.

(Herdado de Object)
JniManagedPeerState

Analisa formatos de contêiner de mídia e extrai exemplos de mídia e metadados contidos.

(Herdado de JavaObject)
JniPeerMembers

Analisa formatos de contêiner de mídia e extrai exemplos de mídia e metadados contidos.

LogSessionId

Analisa formatos de contêiner de mídia e extrai exemplos de mídia e metadados contidos.

ParserName

Retorna o nome da implementação do analisador de backup.

PeerReference

Obtém a referência de objeto JNI para este par Java.

(Herdado de Object)
ThresholdClass

Essa API dá suporte à infraestrutura do Mono para Android e não se destina a ser usada diretamente do seu código.

(Herdado de Object)
ThresholdType

Essa API dá suporte à infraestrutura do Mono para Android e não se destina a ser usada diretamente do seu código.

(Herdado de Object)

Métodos

Nome Description
Advance(MediaParser+ISeekableInputReader)

Faz progressos na extração do fluxo de mídia de entrada, a menos que o final da entrada tenha sido atingido.

Clone()

Cria e retorna uma cópia desse objeto.

(Herdado de Object)
Construct(JniObjectReference, JniObjectReferenceOptions)

Analisa formatos de contêiner de mídia e extrai exemplos de mídia e metadados contidos.

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

Cria uma instância cujo analisador de backup será selecionado detectando o conteúdo durante a primeira #advance chamada.

CreateByName(String, MediaParser+IOutputConsumer)

Cria uma instância apoiada pelo analisador com o determinado name.

Dispose()

Libera os recursos mantidos por esse par Java.

(Herdado de Object)
Dispose(Boolean)

Libera os recursos mantidos por esse par Java.

(Herdado de Object)
DisposeUnlessReferenced()

Analisa formatos de contêiner de mídia e extrai exemplos de mídia e metadados contidos.

(Herdado de JavaObject)
Equals(Object)

Analisa formatos de contêiner de mídia e extrai exemplos de mídia e metadados contidos.

(Herdado de JavaObject)
Equals(Object)

Indica se algum outro objeto é "igual a" este.

(Herdado de Object)
GetHashCode()

Retorna um valor de código hash para o objeto.

(Herdado de Object)
GetParserNames(MediaFormat)

Retorna uma lista imutável com os nomes dos analisadores adequados para formatos de contêiner com o determinado MediaFormat.

JavaFinalize()

Chamado pelo coletor de lixo em um objeto quando a coleta de lixo determina que não há mais referências ao objeto.

(Herdado de Object)
Notify()

Ativa um único thread que está aguardando no monitor deste objeto.

(Herdado de Object)
NotifyAll()

Ativa todos os threads que estão aguardando no monitor deste objeto.

(Herdado de Object)
Release()

Libera todos os recursos adquiridos.

Seek(MediaParser+SeekPoint)

Procura dentro do contêiner de mídia que está sendo extraído.

SetHandle(IntPtr, JniHandleOwnership)

Define a propriedade Handle

(Herdado de Object)
SetParameter(String, Object)

Define parâmetros específicos do analisador que permitem personalizar o comportamento.

SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

Analisa formatos de contêiner de mídia e extrai exemplos de mídia e metadados contidos.

(Herdado de JavaObject)
SupportsParameter(String)

Retorna se o determinado parameterName é compatível com esse analisador.

ToArray<T>()

Cria uma matriz gerenciada com base nesse wrapper de matriz Java.

(Herdado de Object)
ToString()

Retorna uma representação de cadeia de caracteres do objeto.

(Herdado de Object)
UnregisterFromRuntime()

Cancela o registro desse par Java do runtime de interoperabilidade.

(Herdado de Object)
Wait()

Faz com que o thread atual aguarde até ser despertado, normalmente por ser <notificado/em> ou <em>interrompido</em>.<>

(Herdado de Object)
Wait(Int64, Int32)

Faz com que o thread atual aguarde até que ele seja despertado, normalmente por ser <>notificado</em> ou <em>interrompido</em>, ou até que uma determinada quantidade de tempo real tenha decorrido.

(Herdado de Object)
Wait(Int64)

Faz com que o thread atual aguarde até que ele seja despertado, normalmente por ser <>notificado</em> ou <em>interrompido</em>, ou até que uma determinada quantidade de tempo real tenha decorrido.

(Herdado de Object)

Implantações explícitas de interface

Nome Description
IJavaPeerable.Disposed()

Analisa formatos de contêiner de mídia e extrai exemplos de mídia e metadados contidos.

(Herdado de JavaObject)
IJavaPeerable.Finalized()

Analisa formatos de contêiner de mídia e extrai exemplos de mídia e metadados contidos.

(Herdado de JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

Analisa formatos de contêiner de mídia e extrai exemplos de mídia e metadados contidos.

(Herdado de JavaObject)
IJavaPeerable.SetJniIdentityHashCode(Int32)

Analisa formatos de contêiner de mídia e extrai exemplos de mídia e metadados contidos.

(Herdado de JavaObject)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

Analisa formatos de contêiner de mídia e extrai exemplos de mídia e metadados contidos.

(Herdado de JavaObject)
IJavaPeerable.SetPeerReference(JniObjectReference)

Analisa formatos de contêiner de mídia e extrai exemplos de mídia e metadados contidos.

(Herdado de JavaObject)

Métodos de Extensão

Nome Description
GetJniTypeName(IJavaPeerable)

Obtém o nome JNI do tipo da instância self.

JavaAs<TResult>(IJavaPeerable)

Tente coagir a digitar selfTResult, verificando se a coerção é válida no lado Java.

JavaCast<TResult>(IJavaObject)

Executa uma conversão de tipo marcada por runtime do Android.

JavaCast<TResult>(IJavaObject)

Analisa formatos de contêiner de mídia e extrai exemplos de mídia e metadados contidos.

TryJavaCast<TResult>(IJavaPeerable, TResult)

Tente coagir a digitar selfTResult, verificando se a coerção é válida no lado Java.

Aplica-se a