web-dev-qa-db-ja.com

VLCは未完成のMP4ファイルを再生できますか?

this スレッドで、VLC開発者は、情報がファイルの末尾に保存されているため、VLCは部分的にダウンロードされたmp4ファイルを再生できないと述べています。しかし最近、同じものをテストして、Chromeにmp4タスクを追加し、部分的な.crdownloadをVLCに渡すと、機能しました。VLCはグリッチなしでmp4を再生しました。ダウンロードを許可しませんでした。帯域幅を節約するためにプレーヤーを終了して途中で停止しましたが、Chromeがまだダウンロードしている間に、メディア全体を再生したと思います。ビデオを検索することもできました。未完成のビデオフォーマットでは許可されません。これをどうすればよいですか?私はペットプロジェクトとしてメディアストリーマーを実行していますが、ダウンロードを開始して、特定の帯域幅の後にコマンドラインを介してメディアをvlcに渡すことができるかどうかを本当に知りたいですダウンロードしました。

3
Viplav Kumar

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はトラックタイトルです)。

5
user1686