2

MediaRecorder API を使用して、ページ上のメディアを記録しています。MediaRecorder の初期化では、特に何も必要としないため、コンテンツ タイプを指定していません。ブラウザは必要なものを選択できます。

var mediaRecorder = new MediaRecorder(stream);

ただし、その記録を保存するときは、blob の mimeType を知る必要があるため、適切なファイル名拡張子を決定できます。

MediaRecorder.mimeTypeプロパティは私が望むものですが、空の文字列です。mimeTypeMediaRecorderのデフォルトに設定されていないため、デフォルトが何であるかを知る方法がないようmimeTypeです。

  mediaRecorder.onstop = function (e) {
    var mediaFileUrl = window.URL.createObjectURL(
      new Blob(chunks, {type: /* TODO: mime type here */})
    );

    $('<a>').attr({
      href: mediaFileUrl,
      download: 'Recording.?????' // TODO: Use mime type to figure out file name extension
    })[0].click();

    window.URL.revokeObjectURL(mediaFileUrl);
    chunks = [];
  }
4

2 に答える 2

2

現時点では、すぐに必要な情報を取得する方法はありません。

現在の W3C 仕様では、mimetype が (ユーザーによって) 指定されていない場合:

UA はプラットフォーム固有のデフォルト形式を使用します。

それがあなたの場合に起こっていることです.MIMEタイプとUAを指定していません.ブラウザはあなたに最適なタイプを選択しており、選択したフォーマットを取り戻す方法に関する仕様はありません.

現在のところ、これに近づくことができる唯一の方法は、isTypeSupportedいくつかのメディア サポート検出を提供するものを使用することです。残念ながら、MIME タイプ、ブラウザ、プラットフォーム、レートなどの量が多いため、返される関数を作成するのにはあまり適していません。利用可能な組み合わせの数で選択された MIME タイプ: video/webm; codecs="vp"video/mp4; codecs="avc1.4d4015"など。

元のアイデアは、これらすべての詳細をユーザーから隠すことだったかもしれませんが、実際には、たとえば生成されたファイルを保存するためにユーザーが MIME タイプを知る必要があるという特定のケースは、非常に頻繁に発生するものです。

現在、サポートされているすべてのメディア タイプを弱い優先順位で並べ替える方法を提供するという命題で問題が開かれています。これは、返された最初のメディア タイプが、提供されていない場合に UA によって選択されたデフォルトのメディア タイプになることを意味します。

この問題は 5 月に作成されましたが、現時点では実際のフォローアップはありません。

于 2016-07-15T09:10:37.257 に答える
-1

オーディオの場合、デフォルトは 、audio/oggビデオの場合は のようですvideo/ogg。VLC を使用して Chrome と Firefox の両方でテスト済み。

デモ: https://codecanister.com/Project/d547eed9/9/result

于 2016-07-14T22:46:07.140 に答える