Cordova でビデオを撮影したり、フォト アルバムからビデオを選択したりする機能を実装するときに克服する必要がある落とし穴について説明します。

ここではコードや実装の詳細には触れず、途中で起こる落とし穴についてだけ説明します...

動画撮影

動画撮影にcordova-plugin-media-catureプラグインを使用していましたが、撮影後の復帰時にインターフェイスが固まってしまい、プログラムが強制終了してしまう問題が発生し、ずっと探していましたが、 「プラグインはモバイル バージョンと互換性がありません。結局のところ、プラグインは 3 年前に最後に更新されました。この説明は、後にcordova-plugin-camera プラグインのドキュメントで見つかりました。」とさえ思いました。

 戻り状況を確認するためにコールバック関数にアラートを追加したことがわかりました。このメソッドは少し低いです。一般に、コンソールに出力する場合にはこの問題は発生しませんが、iOS にはこの制限があるため、ここに示します。記録を作成します。

カメラを引き上げるとプログラムがクラッシュする

原因を調べてみると、マイクの認証を見逃していたことが分かりました。

 必要に応じてconfig.xmlに設定します

それでも動作しない場合は、** -info.plist ファイルに直接移動し、次のような設定を追加します。

iOS でビデオを使用してビデオを再生すると、自動的に全画面で再生されます 

調べてみると、インターネット上の多くの人は、video タグに 2 つの属性を追加すると言っています

しかし、それは役に立たず、後で config.xml で設定する必要があることがわかりました。

 それでも動作しない場合は、ここに来て設定してください。

 これによってこの問題が発生することはありません。

同じビデオリンクはiOSでは再生できません

まず最初に知っておく必要があるのは、iOS に埋め込まれた WebView と Safari では、video タグは分割されたリクエストでビデオを再生しますが、他のブラウザーや Android にはこの制限がないため、この問題を解決する必要があります。サーバーがリクエストに応答するときに、リクエスト ヘッダーに Range フィールドが存在するかどうかを確認します。存在する場合は、セグメント化されたリクエストであることを示します。この時点では、ビデオ データ全体を返すことはできませんが、対応するデータ セグメントが返されます。 Range フィールドがない場合は、ビデオ データ全体を返します。

以下は、nodejsを使用して実装した応答プログラムです。

その後、この問題は基本的になくなりました。

ビデオのリターン パスを選択した後、resolveLocalFileSystemURL に基づいてファイルを取得すると FileError が発生します。

ビデオ選択プラグインを実装するには、cordova-plugin-camera を使用しました。パスを返しますが、このパスは問題ないように見えますが、実際にはすぐに無効になり、ファイル マネージャーがファイルを見つけることができないため、エラーが発生します。この問題の解決策は、cordova-plugin-camera の問題にあります。

 その解決策は次のとおりです

赤で囲った 2 つのファイルを見つけて、緑で囲んだ位置に上記の 2 行のコードを追加します。

2 つのファイルの場所

現時点では、この 2 つの機能の実装は基本的に問題ありませんが、初めてのことなので、落とし穴を踏むことも多く、少しぎこちないかもしれませんが、良い勉強にもなりましたプロセスなので、頑張ってください。

おすすめ

転載: blog.csdn.net/HU_YEWEN/article/details/120204814