web-dev-qa-db-ja.com

MKVファイルをffmpeg(またはavconv)でのストリーミングに適したものにする-すべてのメタデータをファイルの先頭に移動する方法は?

私の質問は、かなり単純だと思います...

時々私は私のウェブサーバーから大きなMKVファイルをダウンロードし、ダウンロード中にそれらを再生するのが好きです。ただし、トランスコードしたMKVファイルでこれを行うと、ファイルに実際よりもはるかに短いことが表示されることが多く、最後に到達した後も再生を続け、誤った時間を表示します...例: 2:50/2:50と表示されますが、再生を続けますが、矢印キーを使用して後方にシークしようとすると、プレーヤーがクラッシュするか、ファイルの先頭にスキップして戻ります。

では、エンコード中にすべてのメタデータをファイルの先頭に移動して、プレーヤーがファイルの長さをすべて把握しなくてもわかるようにするにはどうすればよいですか? mp4 を使用して-movflags faststart形式でこれを行うことができますが、mkvに対して行う方法?

すでに他の場所で質問と回答があった場合は申し訳ありませんが、使用したキーワードよりも優れたキーワードは考えられず、使用したキーワードでは結果が得られませんでした。

3

Matroska Foundationは、qt-faststartがMOV/MP4に対して実行するのと同様のタスクを実行するツール mkclean を提供します。

構文:

mkclean in.mkv out.mkv

これにより、キューインデックスが再生成されます。元の手がかりを維持するには、

mkclean --keep-cues in.mkv out.mkv

FFmpegは、ユーザー側で this を推測することもできます。

ffmpeg -i in.mkv -c copy -reserve_index_space 50k out.mkv 

どこ reserve_index_spaceバイト単位の値は、インデックスに必要なサイズです。 50kbytesは、1時間のメディアの推奨サイズです。

5
Gyan