2

ビデオディスプレイ (スパーク) とカメラがあります。

     public var camera:Camera;
     ...
     livePreview.source = getDynamicStreamingVideoSource();
     camera.setMode(camWidth, camHeight, 15);
     livePreview.videoObject.attachCamera(camera);
     ...
     <s:VideoDisplay id="livePreview" ... />

コードのどこかで、camera.setMode(newWidth, newHeight) を呼び出し、livePreview.width = newWidth、livePreview.height = newHeight を設定して、プログラムでサイズを変更しようとしました。これは私が見たものからうまくいきません。livePreview は新しい幅と高さにサイズ変更されますが、少なくとも部分的にはカメラには変更されません。たとえば、元のサイズが 250、250 で、新しいサイズとして 500 (W) と 250 (H) を設定すると、カメラのビデオは水平方向に押しつぶされて表示されますが、物理的な幅は 250 のままです。 livePreview.scaleMode を「stretch」に設定すると、カメラのビデオはビデオを希望どおりに正確に表示します (歪みなし、正しいサイズ、比率はそのまま)。

ここで、私の本当の問題について説明します。これは、パフォーマンス面でうまく機能しません。「ストレッチ」は、ビデオをストレッチしていることを実際に示しており、少なくとも 1 秒かかります。遅すぎる。何の影響もなく瞬時に動作するようにしたい。また、正しい幅を指定し、videoDisplay の幅と同じ場合に、なぜ引き伸ばす必要があるのか​​ わかりません。私はここに行方不明ですか?

4

1 に答える 1

0

「ActionScript3.0クックブック」(レシピ16.6、398〜399ページ)の中で何かに出くわしました。著作権を尊重するために直接引用することはあまりありませんが、ここに要約を示します。私はそれがあなたが探しているものであることを願っています:

実際にビデオオブジェクトを作成したかどうか(または作成できるかどうか)はわかりませんが、この本では、ビデオの再生サイズはビデオオブジェクトの幅と高さのプロパティによって異なると書かれています。

var video:Video = new Video(160, 120);
//Now we change the dimensions of the video to scale it up to twice the size.
video.width = 320;
video.height = 240;

私はカメラオブジェクトを直接操作した経験はありませんが、カメラオブジェクトからビデオオブジェクトを作成する場合は想像できます(その方法もわかりません。または、できるかどうか...別の方法もわかりません。質問、おそらく)、ビデオの寸法を直接調整することができます。

現在進行中のように聞こえるのは、ビデオディスプレイオブジェクトが利用可能な解像度よりも高い解像度を表示しようとしているため、ビデオがピクセル化されていることです。タブレットパソコンで切手サイズの動画を全画面表示しようとするようなものですが、実際のピクセルデータが足りないため、ピクセル自体が拡大されています。

videoDisplayコンテナだけでなく、ビデオ自体のサイズを直接変更する方法を見つける必要があります。

特に私はビデオの専門家ではないので、これが役立つかどうかはわかりませんが、おそらくこれはあなたにいくつかのアイデアを与えるでしょう...?

編集:私はカメラから(別のSO質問から!)ビデオを取得する方法を見つけたので、ビデオをスケールアップするための完全な推奨コードは次のとおりです:

var camera:Camera = Camera.getCamera();
//You'll want to set the camera's quality and mode.

//Get video from camera.
var video:Video = new Video(160,120);
video.attachCamera(camera);

//Size up video to 320x240.
video.width = 320;
video.height = 240;

//Now, connect the video to the LivePreview object, 
//instead of connecting the camera and the preview directly.

最後の推奨事項...カメラから必要な最高解像度で入力を取得し、スケールアップではなくスケールダウンしてみてください。それは品質を維持します。

コードはテストされていないため、おそらく微調整が必​​要になります。それでも、これで問題の解決に取り掛かることができれば幸いです。

于 2012-11-10T22:07:25.880 に答える