0

こんにちは、難しい問題に対する簡単な質問です(とにかく私にとっては)

私は自分が初心者プログラマーだとは思っていませんが、神の愛のためにこれを理解できないようです....私は現在uiimageviewの更新に関連する問題を抱えています..スライダーが動いたときに更新されません左右..ドラッグすると、アプリケーションの速度が少し遅くなります。これにより、プロセスが発生していることがわかり、メソッドとitnerfaceが正しく接続されていることがわかります。時間で指定された特定のフレームの画像データを取得し、uisliderの位置に応じてサムネイルとして選択できるようにします。そのため、手動のサムネイルピッカーです。

私は、Interface Builderを介して接続することと、プログラムで実行することの両方によって、多くのことを試しました。

これは私が今のところ持っているものです:

.h file

ドットhファイル

.m file

ドットmファイル

the slider method for sliderValueChanged which gets called

スライダー方式

and finally my class method that i use to help retrieve a thumbnail image returning nsdata... passing in a video and a specified time position. 

サムネイルを取得するクラスメソッド

uiimageviewを更新すると、画像がキャッシュされるため、定期的に更新するとメモリリークが発生する可能性があることをスタックオーバーフローで読んだことがあります。リークなどを回避するために、代わりに[UIImage imageWithData:]を使用するため、コードにこれを実装しましたが、サムネイルビューそれでも、スライダーの位置に基づいて画像をロードできません。(スライダーは、最小値と最大値が0からビデオの長さまで設定されるように作成されているため、スライダーは、問題のビデオの時間枠を正しく選択できる値のみを持つことができます)

誰かが私がこの問題を解決する方法を教えてくれるなら..それは今何時間も私を超えています!私は助けに感謝します。ありがとうございました

4

1 に答える 1

0

ここで何が起こっているのかを理解しました...メソッドに渡したスライダーの値は、必要なものに適切ではありませんでした。

クラスメソッドでは、CMTimeMake(value 1、value 2)..と表示されます。いくつかの調査を行った後、それがどのように機能するかを理解しました。

基本的に、値2で指定する時間間隔があります。私の場合は60でした。コピーしたコードに基づいています。値1を置き換えると、時間間隔の一部になります。これらは分子と分母であるため、 1/60は160分の1秒に等しい2/60は260分の2秒の時間位置に等しい...3秒が必要な場合は、60 * 3=180を実行する必要があります。

180/60は18060分の1秒に相当し、合計3秒に相当します...したがって、スライダーの値はビデオの長さにマッピングされているため、最大は15秒でした...私が質問で書いたコード...私は1560秒しか取得できませんでした。どの時間枠で最初の60秒と実際には違いがないので、uimageviewが更新されているのを見ることができなかった理由...

これを修正するために、スライダーの値に60を掛けて、秒にマップされたために変更される各値を取得しました。60を掛けると、もちろん画像がチャームのように更新されました。ただし、現時点ではインターフェイスが大幅に遅れているため、同期しているように見えるため、このプロセスを高速化する方法を理解する必要があります。

于 2012-08-18T23:51:45.900 に答える