問題タブ [qtkit]
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.
objective-c - QTKit: サウンド用 VideoContext のアナログ
通常の「H.264 over RTP」アプローチとは少し異なる方法を使用して、ネットワーク経由でビデオをストリーミングするための単純なアプリケーションを作成しています (私は独自のコーデックを使用しています)。
これを実現するには、ムービーを再生するときに QTMovie が暗黙的に QTMovieView に送信する生のフレームと生のオーディオ サンプルが必要です。
生のビデオ フレームを取得する最も一般的な方法は、VisualContext を使用することです。次に、表示リンク コールバックを使用して、この VisualContext を使用して CVPixelBufferRef を「生成」します。したがって、現在のリフレッシュレートと同期された周波数でフレームを取得しています(この同期が必要なわけではありません-ネットワーク経由で送信できるフレームの「ストリーム」が必要なだけです-しかし、CoreVideoプログラミングガイドとほとんどのAppleビデオに関連するサンプルは、このアプローチを促進します)。
私が直面した最初の問題は、VisualContext を QTMovie にアタッチすると、画像を QTMovieView にレンダリングできなくなることです。なぜこれが起こるのかわかりません(VisualContextをアタッチすると、GWorldとレンダリングが「切り離される」という考えに関連していると思います)。わかりました、少なくとも私は単純な NSView にレンダリングできるフレームを持っています (ただし、これは間違っているように聞こえ、パフォーマンスに悪影響を及ぼします。私は正しくやっていますか?)
音については、どうすればいいのかわかりません。ムービーが再生されているときにサウンドの生のサンプルを取得する必要があります (理想的には、コールバックで QTCaptureDecompressedAudioOutput が返すものに似たもの)。他に方法がない場合は、非推奨の Carbon QuickTime API を詳しく調べる準備をしました。しかし、どこから始めればよいかさえわかりません。同じ CoreVideo Display リンクを使用して定期的にサウンドを取得する必要がありますか? QTDataReference を取得してサウンド フレームを手動で検索する必要がありますか?
私は実際にはビデオおよびオーディオサービスのプログラミングの初心者です。いくつかの経験を共有できれば、私と共有できるアイデアを本当に感謝します:)
ありがとう、ジェームズ
objective-c - 生成された一連の画像からQuicktimeムービーを作成するにはどうすればよいですか?
生成された一連の画像からムービーを作成する必要があります。(私は物理モデリングプログラムの出力に基づいて画像を作成しています。)
QtKitCreateMovieでAppleのサンプルを見つけ、それを出発点として使用しました。アプリケーションバンドルからjpgをロードする代わりに、NSImageに描画してから、そのNSImageをムービーオブジェクトに追加します。これが私がテストに使用した基本的なコードです。mMovie
のインスタンスですQTMovie
:
これはOSX10.5で機能しますが、OS X 10.6では、次の呼び出しで境界を超えた配列インデックスの例外が発生しますaddImage:forDuration:withAttributes
:(http://openradar.appspot.com/radar?id=1146401)
10.6未満の映画を作成する適切な方法は何ですか?
また、これは10.5で動作しますが、数千フレームのムービーを作成しようとするとメモリが不足します。それはまた、私が正しいアプローチを使用していないと私に思わせます。
objective-c - ビデオの現在の時刻を表示するにはどうすればよいですか?
ビデオの現在の時刻を表示するにはどうすればよいですか?私はObj-Cで開発しており、QTKitフレームワークを使用しています。そのQTMovieViewが私の関数"refreshCurrentTimeTextField"に継続的に通知する方法を知りたいです。Appleのサンプルを見つけましたが、本当に必要なものを抽出するのは非常に困難でした。(http://developer.apple.com/library/mac/#samplecode/QTKitMovieShuffler/Introduction/Intro.html)
cocoa - QTKit ベースの画像エンコード アプリケーションが非常に遅いのはなぜですか?
私が現在コーディングしているココア アプリケーションでは、Quartz Composer レンダラー (NSImage オブジェクト) からスナップショット イメージを取得しており、addImage を使用して 720*480 サイズ、25 fps、および H264 コーデックで QTMovie にエンコードしたいと考えています。 : 方法。対応するコードは次のとおりです。
それは機能しますが、私のアプリケーションは私の新しい MacBook Pro でそれをリアルタイムで行うことはできませんが、QuickTime Broadcaster は H264 でリアルタイムで画像をエンコードでき、同じコンピューターで私が使用するものよりもさらに高い品質であることがわかっています。 .
なぜ ?ここで何が問題なのですか?これはハードウェア管理の問題 (マルチコア スレッディング、GPU など) ですか、それとも何か不足していますか? 序文として、私は Apple 開発の世界で、Objective-C、cocoa、X コード、Quicktime、Quartz Composer ライブラリなどの新人 (2 週間の練習) であることを前置きさせてください。
助けてくれてありがとう
objective-c - QTKit からビデオをクロップ
ここから OSX QTKit サンプル コードを使用しています: http://bit.ly/mAaHGI
さまざまなアスペクト比をシミュレートするために、画面と保存されたファイルの両方でビデオをトリミングしたいと思います。これを行う最善の方法は何ですか?
objective-c - 廃止されたコードの解決策を見つけるにはどうすればよいですか?
Macプログラミング初心者です。サンプル プロジェクトを開くと、ビルド中に「非推奨」コードの警告が表示されることがよくあります。これらを修正し、XCode 4 を使用してクリーンなビルドを取得したいと考えています。
Apple が何かを非推奨にした場合、それが非推奨になった理由を知るにはどうすればよいですか?
さらに重要なことは、非推奨のタスクを実装するための「新しい」正しい方法を見つけるにはどうすればよいですか?
たとえば、QTMovieSizeDidChangeNotification、writeWithBackupToFile、documentForFileName、shouldCreateUI、setShowPanels、QTMovieCurrentSizeAttribute、およびその他多数の非推奨警告が表示されます。
objective-c - CIImage/NSImageのミラーリング
現在、私は以下を持っています
これは完全に機能します。NSImageを使用できます。ファイルに書き込むと、画像はまさに必要な状態になります。
ただし、QTKitを使用してユーザーのiSightからこの画像を取得しているため、この画像をy軸で反転できるようにする必要があります。
私の最初の考えは、このようなものを使用してCIImageを変換することでしたが、最終的な画像は常に完全に空白になります。ファイルに書き込まれるとき、寸法は正しいですが、一見空のようです。
私はこれに間違った方法でアプローチしていますか?または、コードを間違えましたか?
quicktime - 全体のメモリ バイトが制限されていますか?
QTKitで動画編集ソフトを作っています。
Apple が提供するサンプル プログラムがここにあり ます。
私のテストプログラムはこのプログラムに基づいていますが、
QTMovie *movie = [[[QTMovie alloc] initToWritableFile:@"foo.mov" error:nil] autorelease];
と
[映画 updateMovieFile];
思い出の保存に。
フレームがそれほど多くない場合、プログラムはうまく動作します。しかし、非常に多くのフレームがあると、プログラムが表示され始めます
QTKitServer(5618,0xa0924540) malloc: *** mmap(size=33554432) failed (error code=12)
*** error: can't allocate region
*** set a breakpoint in malloc_error_break to debug
Instrumentsでメモリリークをチェックしたところ、
しかし、Live Bytes はそれほど大きくなく、メモリ リークも見つかりませんでした。全体的なバイト数は非常に大きいですが、これがこの問題の原因ですか?
どんなアイデアでも大歓迎です。
ありがとう、
quicktime - QTMovieCurrentSizeAttribute と QTMovieSizeDidChangeNotification の置き換え
QTMovieCurrentSizeAttribute
oldと QTMovieSizeDidChangeNotification
tasksを置き換える正しい方法を知っている人はいますか? 古い廃止されたコードを一掃しようとしています。
QTMovieNaturalSizeDidChangeNotification
の代わりにならないことがわかりましたQTMovieSizeDidChangeNotification
。同様にQTMovieNaturalSizeAttribute
の代わりにはなりませんQTMovieCurrentSizeAttribute
。Natural Size
はQTMovie
のネイティブ解像度をCurrent Size
指し、QTMovie
が表示されている解像度を指します (これは、ネイティブからサイズ変更できるムービーがデコードされている解像度である場合もあります)。たとえば、ソースがアナモルフィックであるか、正方形でないピクセルを持っている場合、と は同じではNatural
ありCurrent Size
ません。この違いは、QuickTime 7 Player の Movie Inspector ウィンドウで簡単に確認できます。
私が知る限り、QuickTime X では同じQTMovie
に複数のビューを表示できるため、 の概念をCurrent Size
新しいものに置き換える必要がありました。(おそらく、Current Size
機能はQTMovieView
? またはデコーダー クエリに移動されましたか?) 新しい方法のドキュメントまたはサンプル コードを参照してもらえますか?
Natural
非推奨のコードを使用せずに、およびを表示するように更新された Movie Inspector ウィンドウのサンプル コードCurrent ('Actual') Sizes
が理想的です。これまでのところ、これに取り組むのは非常に紛らわしいものでした。
objective-c - QTKitファイルまたはディレクトリが見つかりませんでした
qtkitを使用して、アプリで映画を録画および再生しようとしています。ビデオを1つのビューで録画し、別のビューに表示します。これが私のやり方です
次に、View Controllerで、ムービーをムービープレーヤーに割り当てます。
さて、このコードは初めて動作しますが、登録して複数回表示する必要があります。
ここにはすでに1つの問題があります。ビデオを複数回録画したい場合は、最初のビデオを削除する必要があります。そうしないと、最初のビデオを削除しても何も録画されません(ファイルがすでに存在するという文句が表示されます)。
問題は、初回以降、ビデオもまったく表示されないことです。[QTMovie movieWithURL:path error:&error];を実行すると 実際には存在するのに、ファイルまたはディレクトリが存在しないと文句を言います([QTMovie canInitWithUrl:]でも確認しました)。
ここで何が起こっているのかわかりません。Appleのサンプルコードは複数回記録することができますが、いくつかの理由で、最初に既存のファイルを削除せずに記録することはできません(ただし、最初は機能します)。
必要に応じて、詳細をお知らせさせていただきます。
編集:ビデオに毎回異なる名前を使用すると、すべてが機能します。ですから、これは本当に毎回同じ名前で録音することに関する問題です。