this スレッドで、VLC開発者は、情報がファイルの末尾に保存されているため、VLCは部分的にダウンロードされたmp4ファイルを再生できないと述べています。しかし最近、同じものをテストして、Chromeにmp4タスクを追加し、部分的な.crdownloadをVLCに渡すと、機能しました。VLCはグリッチなしでmp4を再生しました。ダウンロードを許可しませんでした。帯域幅を節約するためにプレーヤーを終了して途中で停止しましたが、Chromeがまだダウンロードしている間に、メディア全体を再生したと思います。ビデオを検索することもできました。未完成のビデオフォーマットでは許可されません。これをどうすればよいですか?私はペットプロジェクトとしてメディアストリーマーを実行していますが、ダウンロードを開始して、特定の帯域幅の後にコマンドラインを介してメディアをvlcに渡すことができるかどうかを本当に知りたいですダウンロードしました。
MP4ファイルは、メタデータチャンクを最初またはに持つことができます。ビデオ全体(特にシークに必要な部分)のエンコードが完了するまで、エンコーダーはどの値を書き込むかわからない可能性があるため、通常は新しくエンコードされたファイルの最後にあります。
ただし、オンラインストリーミング用にMP4ファイルを準備する場合、メタデータを最初に移動するのが一般的です。説明されているように このブログ投稿で 。 (言い換えれば、これを最初にやりたいのはあなたではありません。これはWebブラウザーの日常業務です。)
注:投稿には完全な再エンコードが行われていることが示されていますが、それが実際に必要かどうかはわかりません。-codec copy -movflags faststart
を使用して再エンコードし、品質の低下を回避するだけで十分です。
特定のMP4ファイルの実際の構造を確認するために使用できるツールがあります。例:
$ AtomicParsley test.m4a -T Atom ftyp @ 0 of size:24、ends @ 24 Atom free @ 24 of size:8 [ends @ 32 Atom mdat @ 32のサイズ:4038152、終了@ 4038184 Atom moov @ 4038184のサイズ:58035、終了@ 4096219 Atom mvhd @ 4038192 of size:108、ends @ 4038300 Atom trak @ 4038300 of size:57386、ends @ 4095686 Atom tkhd @ 4038308サイズ:92、@ 4038400で終了 ... Atom = udta @ 4095686 @サイズ:533、@ 4096219で終了 Atom meta @ 4095694サイズ:525、@ 4096219で終了 Atom hdlr @ 4095706のサイズ:33、終了@ 4095739 Atom ilst @ 4095739のサイズ:279、終了@ 4096018 Atom©nam @ 4095747、サイズ:31、終了@ 4095778 ... セグメンテーション違反(コアダンプ)
ここで、mdat
には実際のオーディオ/ビデオデータ(この場合は単一のオーディオストリームのみ)が含まれ、moov
にはメタデータが含まれます(例:moov.udta.meta.ilst.©nam
はトラックタイトルです)。