MediaMuxer クラス

定義

MediaMuxer は、基本ストリームの多重化を容易にします。

[Android.Runtime.Register("android/media/MediaMuxer", DoNotGenerateAcw=true)]
public sealed class MediaMuxer : Java.Lang.Object
[<Android.Runtime.Register("android/media/MediaMuxer", DoNotGenerateAcw=true)>]
type MediaMuxer = class
    inherit Object
継承
MediaMuxer
属性

注釈

MediaMuxer は、基本ストリームの多重化を容易にします。 現在、MediaMuxer は MP4、Webm、3GP ファイルを出力としてサポートしています。 また、Android Nougat以降のMP4でのBフレームの多重化もサポートしています。

一般に、次のように使用されます。

MediaMuxer muxer = new MediaMuxer("temp.mp4", OutputFormat.MUXER_OUTPUT_MPEG_4);
            // More often, the MediaFormat will be retrieved from MediaCodec.getOutputFormat()
            // or MediaExtractor.getTrackFormat().
            MediaFormat audioFormat = new MediaFormat(...);
            MediaFormat videoFormat = new MediaFormat(...);
            int audioTrackIndex = muxer.addTrack(audioFormat);
            int videoTrackIndex = muxer.addTrack(videoFormat);
            ByteBuffer inputBuffer = ByteBuffer.allocate(bufferSize);
            boolean finished = false;
            BufferInfo bufferInfo = new BufferInfo();

            muxer.start();
            while(!finished) {
              // getInputBuffer() will fill the inputBuffer with one frame of encoded
              // sample from either MediaCodec or MediaExtractor, set isAudioSample to
              // true when the sample is audio data, set up all the fields of bufferInfo,
              // and return true if there are no more samples.
              finished = getInputBuffer(inputBuffer, isAudioSample, bufferInfo);
              if (!finished) {
                int currentTrackIndex = isAudioSample ? audioTrackIndex : videoTrackIndex;
                muxer.writeSampleData(currentTrackIndex, inputBuffer, bufferInfo);
              }
            };
            muxer.stop();
            muxer.release();

<h4>メタデータ トラック</h4>

フレーム単位のメタデータには、オフライン処理を容易にするためにビデオまたはオーディオと関連付けられる情報が含まれます。 たとえば、センサーからのジャイロ信号は、オフライン処理を行うときのビデオ安定化に役立ちます。 メタデータ トラックは、MP4 コンテナー形式に多重化する場合にのみサポートされます。 新しいメタデータ トラックを追加する場合、MIME の種類の形式はプレフィックス "application/" ("application/gyro" など) で始まる必要があります。 メタデータの形式はアプリケーション定義です。 メタデータタイムスタンプは、ビデオおよびオーディオタイムスタンプと同じ時間ベースである必要があります。 生成された MP4 ファイルは TextMetaDataSampleEntry (ISOBMFF 仕様のセクション 12.3.3.2 で定義) を使用してメタデータの MIME の種類を通知します。

MediaMuxer muxer = new MediaMuxer("temp.mp4", OutputFormat.MUXER_OUTPUT_MPEG_4);
               // SetUp Video/Audio Tracks.
               MediaFormat audioFormat = new MediaFormat(...);
               MediaFormat videoFormat = new MediaFormat(...);
               int audioTrackIndex = muxer.addTrack(audioFormat);
               int videoTrackIndex = muxer.addTrack(videoFormat);

               // Setup Metadata Track
               MediaFormat metadataFormat = new MediaFormat(...);
               metadataFormat.setString(KEY_MIME, "application/gyro");
               int metadataTrackIndex = muxer.addTrack(metadataFormat);

               muxer.start();
               while(..) {
                   // Allocate bytebuffer and write gyro data(x,y,z) into it.
                   ByteBuffer metaData = ByteBuffer.allocate(bufferSize);
                   metaData.putFloat(x);
                   metaData.putFloat(y);
                   metaData.putFloat(z);
                   BufferInfo metaInfo = new BufferInfo();
                   // Associate this metadata with the video frame by setting
                   // the same timestamp as the video frame.
                   metaInfo.presentationTimeUs = currentVideoTrackTimeUs;
                   metaInfo.offset = 0;
                   metaInfo.flags = 0;
                   metaInfo.size = bufferSize;
                   muxer.writeSampleData(metadataTrackIndex, metaData, metaInfo);
               };
               muxer.stop();
               muxer.release();
             }

<h2 id=History>"History">Features and API History</h2>

次の表は、さまざまな API バージョンとコンテナーでの機能のサポートをまとめたものです。 API のバージョン番号については、「」を参照してください android.os.Build.VERSION_CODES

<style> .api > tr > th, .api > tr > td { text-align: center; padding: 4px 4px; } .api > tr > th { vertical-align: bottom; } .api > tr > td { vertical-align: middle; } .sml > tr > th, .sml > tr > td { text-align: center; padding: 2px 4px; } .fn { text-align: center; }</スタイル>

<table align="right" style="width: 0%">thead><tbody class=api><tr><th>Symbol</th><Meaning></th></tr></tbody/thead<>tbody<> class=sml<>tr><td>●</td><td>Supported</td></tr tr<>td>><○</td td><td>Not supported</td></tr td<><>>▧</td td>><サポートされています<MP4/WebM/3GP/td/tr tr><><td>⁕</td td>><MP4</td></tr></tbody></table><table align="center" style="width: 100%;">< でのみサポートされます。><<thead class=api><tr><th rowspan=2>Feature</th><th colspan="24">SDK Version</th<>/tr tr<>><th>18</th<>>19</>><th 20</>><th 21</th>><22</>><th 23</th<>>24/th 25</><>th>><26<+</th></tr></thead><tbody class=api><tr><td align="center">MP4 container</td td>><●/td><td>●</td<>td>●</td><>●<</td<>td <>●/td<>td td>●</td><td><●/td><td>●</td t><><●/td<>/tr<>td align="center">WebM container</td td○/td><>>< td>○</td td○</td<>td>●</><>td<>>●<</td td●/td<>t●<d>●/td><td <>●●</td><td <>●/<>>td td/tr><><td align="center">3GP container</td td>><○/td td><>○</td><td>○</td<>td>○</td<>td>○<</td<>td○/td td td>○</td<>td>○</td><td>○</td<>td>●</td<>>< td align="center">多重化 B-Frames(双方向予測フレーム)</td<>td>○/td td>><○</td><td>○</td<>td>○</td<>> td○○</td><td>○<</td td○/td><td>⁕</td><td><⁕/td><td>⁕</td<>/tr<>/trtd><align="center">Muxing Single Video/Audio Track</td td>><▧</td><td>▧/td td▧</td><td>▧</td><td>▧</>><td<>td▧</td td td>▧</td<>td>▧</td<>td>▧</td<>td>▧</td<>/tr/trd<>>< align="center">複数のビデオ/オーディオ トラック</td td>><○</td td>○/td><td>○</td><><td○</td<>> td>○</td<>td>○○</td<>td○</td td>○</td<>td>○/td td>⁕<</td<>></tr/trd<>>< align="center">Muxing Metadata Tracks</td><td td>○</td<>td>○/td<>td>○</td<>td>○</td><td>○<</td><td>○/td<>td>○<</td><td○/td><td>>⁕<</td<>/tbody><></table>

の Java ドキュメント android.media.MediaMuxer

このページの一部は、によって作成および共有され、に記載されている条件に従って使用される作業に基づく変更です。

コンストラクター

MediaMuxer(FileDescriptor, MuxerOutputType)

指定した FileDescriptor に書き込むメディア マルチプレクサーを作成します。

MediaMuxer(String, MuxerOutputType)

指定したパスに書き込むメディア マルチプレクサーを作成します。

プロパティ

Class

この Objectのランタイム クラスを返します。

(継承元 Object)
Handle

基になる Android インスタンスへのハンドル。

(継承元 Object)
JniIdentityHashCode

MediaMuxer は、基本ストリームの多重化を容易にします。

(継承元 Object)
JniPeerMembers

MediaMuxer は、基本ストリームの多重化を容易にします。

PeerReference

MediaMuxer は、基本ストリームの多重化を容易にします。

(継承元 Object)
ThresholdClass

この API は Android 用 Mono インフラストラクチャをサポートしており、コードから直接使用することを意図したものではありません。

(継承元 Object)
ThresholdType

この API は Android 用 Mono インフラストラクチャをサポートしており、コードから直接使用することを意図したものではありません。

(継承元 Object)

メソッド

AddTrack(MediaFormat)

指定した形式のトラックを追加します。

Clone()

このオブジェクトのコピーを作成して返します。

(継承元 Object)
Dispose()

MediaMuxer は、基本ストリームの多重化を容易にします。

(継承元 Object)
Dispose(Boolean)

MediaMuxer は、基本ストリームの多重化を容易にします。

(継承元 Object)
Equals(Object)

他のオブジェクトがこのオブジェクトと "等しい" かどうかを示します。

(継承元 Object)
GetHashCode()

オブジェクトのハッシュ コード値を返します。

(継承元 Object)
JavaFinalize()

ガベージ コレクションがオブジェクトへの参照がなくなったと判断したときに、オブジェクトのガベージ コレクターによって呼び出されます。

(継承元 Object)
Notify()

このオブジェクトのモニターで待機している 1 つのスレッドをウェイクアップします。

(継承元 Object)
NotifyAll()

このオブジェクトのモニターで待機しているすべてのスレッドをウェイクアップします。

(継承元 Object)
Release()

ガベージ コレクターに頼って将来のどこかの時点でこれを行う代わりに、リソースを解放する場合は、必ずこれを呼び出してください。

SetHandle(IntPtr, JniHandleOwnership)

Handle プロパティを設定します。

(継承元 Object)
SetLocation(Single, Single)

出力ファイルに geodata (緯度と経度) を設定して格納します。

SetOrientationHint(Int32)

出力ビデオ再生の向きヒントを設定します。

Start()

muxer を起動します。

Stop()

muxer を停止します。

ToArray<T>()

MediaMuxer は、基本ストリームの多重化を容易にします。

(継承元 Object)
ToString()

オブジェクトの文字列形式を返します。

(継承元 Object)
UnregisterFromRuntime()

MediaMuxer は、基本ストリームの多重化を容易にします。

(継承元 Object)
Wait()

現在のスレッドが起動するまで待機します。通常<>は、通知</em> または <em>割り込み</em によって待機します>。

(継承元 Object)
Wait(Int64)

現在のスレッドが起動するまで待機します。通常<>は、通知</em> または>< em 割り込み</em>、または一定のリアルタイムが経過するまで待機します。

(継承元 Object)
Wait(Int64, Int32)

現在のスレッドが起動するまで待機します。通常<>は、通知</em> または>< em 割り込み</em>、または一定のリアルタイムが経過するまで待機します。

(継承元 Object)
WriteSampleData(Int32, ByteBuffer, MediaCodec+BufferInfo)

エンコードされたサンプルを muxer に書き込みます。

明示的なインターフェイスの実装

IJavaPeerable.Disposed()

MediaMuxer は、基本ストリームの多重化を容易にします。

(継承元 Object)
IJavaPeerable.DisposeUnlessReferenced()

MediaMuxer は、基本ストリームの多重化を容易にします。

(継承元 Object)
IJavaPeerable.Finalized()

MediaMuxer は、基本ストリームの多重化を容易にします。

(継承元 Object)
IJavaPeerable.JniManagedPeerState

MediaMuxer は、基本ストリームの多重化を容易にします。

(継承元 Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

MediaMuxer は、基本ストリームの多重化を容易にします。

(継承元 Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

MediaMuxer は、基本ストリームの多重化を容易にします。

(継承元 Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

MediaMuxer は、基本ストリームの多重化を容易にします。

(継承元 Object)

拡張メソッド

JavaCast<TResult>(IJavaObject)

Android ランタイムチェック型変換を実行します。

JavaCast<TResult>(IJavaObject)

MediaMuxer は、基本ストリームの多重化を容易にします。

GetJniTypeName(IJavaPeerable)

MediaMuxer は、基本ストリームの多重化を容易にします。

適用対象