問題タブ [fmp4]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
199 参照

mp4 - AAC オーディオ ファイルは、通常の速度よりも速く再生されます

デバイスから生の PCM データをサンプリングし、libfaac を介して ".aac" 形式 (ADTS 形式) のオーディオ ファイルにエンコードし、16KHZ または 41KHZ でサンプリングすると、エンコードされた ".aac" ファイルは通常よりも速く再生されました。どういう理由ですか?

パラメータの構成は次のとおりです。

0 投票する
1 に答える
385 参照

ffmpeg - ffmpeg は、Firefox でエラーになる mp4 ストリームを作成します

HTML5 ビデオ要素で fmp4 を再生しようとしています。

ffmpeg の出力を MSE に渡す Websocket の作成に成功しました。

ただし、Firefox (72.0.1、64 ビット、Ubuntu 18.04LTS の下) でページを開こうとすると、常にエラーが発生します。

これは私のFFMPEGの行です:

これは、サーバー側 Java (Tomcat エンジンを使用) がこのコマンドの出力を解析する方法です (これは非効率的かもしれませんが、今のところ問題ありません)。

次に、クライアント側は、このリポジトリのような websocket-MSEです。

結果:

  1. サーバー側をデバッグし、sendBinary呼び出しの前にブレークポイントがあり、サーバー側を実行する前に数秒待機すると、ブラウザに最初の画像が表示されますが、すぐに上記のエラーが発生します。

  2. サーバー側を (ブレークポイントなしで) 実行すると、ブラウザーに画像が表示されず、すぐにエラーが発生します。

Invalid Top-Level boxエラー メッセージの後には、常にランダムなガベージ キャラクタが続きます。

これが機能することの証明は、ポイント 1 にあります。データをクライアントに転送する前にしばらく待つと、そのエラーに到達する前に 1 (またはそれ以上のフレーム) をデコードできます。

これは、ffmpeg コマンドラインのエラーである可能性があります。

しかし、このトピックに関する適切なリソースを実際に見つけることができませんでした (古いリリースの Firefox に関連するものしか見つかりませんでした)。

アップデート1

これは、同じコマンドがパイプの代わりに mp4 ファイルを作成するときの FFMPEG ログです: https://pastebin.com/Gjq2vxeT

これは、間違ったボックスを含む詳細な Firefox ログです。

ポイント2でマークされたシナリオ(ブレークポイントなしで実行)を実行しているとき、トップレベルボックスは常に「f」であることに注意してください。

アップデート2:

ffmpeg の現在の出力は次のとおりです (最初の 128 項目を数値と英数字で表現): https://pastebin.com/DeJMfNYs

興味深いのは、最初の 4 バイトが無効に見えることです。しかし、byte4 (5 バイト目) からは問題ないようです ("ftyp")。

これを確認していただけますか?