ビデオファイルが有効かどうかを検出する必要があります(有効でない場合は削除します)。エアー塗布です。
大きなファイルの場合は、MediaPlayerState.PLAYBACK_ERROR
状態を処理することで実現できます。問題はありません。
ただし、 のように空のファイルempty.mp4
がある場合、PLAYBACK_ERROR は送出されません。次に、singleChar.mp4 ファイル (x
内部に文字を含む) を作成しましたが、動作はまったく同じでした。
READY
問題なく状態を 通過します。playing
はその時点で真です(ドキュメントには のtrue
場合であると記載されているplaying or attempting to play
ため、これも信頼できません)。
次に、それらのファイルを有効なものとして扱うことを提案しましたduration=0
...いいえ!期間が設定されdurationChange
ていない、発送されていません。
現時点での最善のアプローチは、このタイムアウトがいつ期限切れになるかを確認するplay()
ことです。少なくとも 50% のケースで機能します。ただし、これはまったく当てになりません。遅延を延長することで信頼性が向上する可能性がありますが、ユーザーが問題に気付く前に、迅速に検出して静かに処理することをお勧めします。setTimeout
50ms
duration
他の可能なアプローチは、ファイルが特定のサイズ (おそらく 100KB?) より小さいかどうかを確認することですが、これも愚かで信頼できないアプローチです。
では、ファイルが有効なビデオ ファイルかどうかを検出する信頼できる方法はありますか?