問題タブ [avassetwriterinput]

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.

0 投票する
1 に答える
1814 参照

avfoundation - outputSettings ディクショナリの作成方法AVAssetWriterInput インスタンスで使用するには?

MPMediaItem インスタンスを caf 形式のオーディオ ファイルに変換しようとしています。私は Chris Adamson の作品と彼の記事「iPod ライブラリから PCM サンプルへ、以前よりもはるかに少ないステップで」をフォローしてきました。

Swift でこれを行う方法を調べていたときに、Abel Domingues github FileConverter.swiftに出くわしました。Swiftでこれを行うためです。

次に、プロトコルの拡張として Swift 3 への変換に取り掛かりました。実行してみるまではすべてうまくいきました。assetWriterInputオブジェクトの作成時にクラッシュし、outputSettings変数に関連しているようです。

表示されるエラー メッセージは次のとおりです。

-[_SwiftValue unsignedIntValue]: unrecognized selector sent to instance 0x1704407b0 2016-10-13 18:34:52.032784 Testie[3098:1535938] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[_SwiftValue unsignedIntValue]: unrecognized selector sent to instance 0x1704407b0'

この例を検索しましたが、投稿は Objective-C であるか、ビデオの辞書の設定に関連している必要があります。

これは、オーディオに関連する AVAssetWriterInput ソースからのドキュメントです。

AVMediaTypeAudio の場合、次のキーは outputSettings ディクショナリで現在サポートされていません: AVEncoderAudioQualityKey および AVSampleRateConverterAudioQualityKey。このイニシャライザを使用する場合、オーディオ設定ディクショナリを完全に指定する必要があります。つまり、AVFormatIDKey、AVSampleRateKey、および AVNumberOfChannelsKey が含まれている必要があります。他のチャネル レイアウト情報が使用できない場合、AVNumberOfChannelsKey の値が 1 の場合はモノラル出力になり、値が 2 の場合はステレオ出力になります。AVNumberOfChannelsKey が 2 より大きいチャネル数を指定する場合、ディクショナリは AVChannelLayoutKey の値も指定する必要があります。kAudioFormatLinearPCM の場合、関連するすべての AVLinearPCM*Key キーを含める必要があり、kAudioFormatAppleLossless の場合、AVEncoderBitDepthHintKey キーを含める必要があります。-initWithMediaType を参照してください。

では、辞書の何がエラーを引き起こしているのでしょうか?

0 投票する
0 に答える
450 参照

ios - AVAssetWriterで複数のmp4ファイルを同時に作成する方法

iPhone の AVAssetWriter で 4 つのビデオ ストリームを .mp4 として保存しようとしています。3 つのストリームではすべて正常に動作しますが、4 番目の mp4 ファイルは常に空です。

これが私のコードの一部です:

このメソッドをループで呼び出し、各実行で画像を提供します。この画像は、4 つの mp4 ファイルのいずれかに書き込まれる必要があります。最後に呼び出された AVAssetWriterInput は画像を取得しますが、ファイルは空のままです。呼び出しの順序を変更すると、最後に呼び出された AVAssetWriterInput は常に空のファイルのままになります。

何かアイデアはありますか?

0 投票する
0 に答える
290 参照

avfoundation - AVAssetWriter 48 KHz オーディオによるライブ ビデオ録画

RosyWriter で示されているように、AVAssetWriter を使用して iOS でライブ ビデオを録画するために使用しています。私が抱えている問題は、AVAudioSession preferredSampleRate を 48000 Hz に設定すると、オーディオがビデオと同期しないなどの多くの問題が発生することです。AVAudioSession でデフォルトのサンプルレート (44100 Hz) を使用する方法はありますが、AVAssetWriter で録音する場合、同期の問題を引き起こすことなく 48000 Hz を使用しますか?

編集: RIO ユニットのレンダー コールバックで返されるフレーム数に 1/48000 を掛けた値が、AVAudioSession の ioduration と等しくないことが問題であることがわかりました。これは、44100 KHz の場合には当てはまりません。タイミングについては、このコードに依存しています。これが、オーディオとビデオの同期がずれている原因です。

0 投票する
1 に答える
201 参照

audio - AVFramework で繰り返されるオーディオ フレームは、AVAsset を介して *.mov ファイルを作成しました

AVFramework フレームワークと AVAsset を使用して ProRes でエンコードされた mov ファイルを作成しようとすると、いくつかの問題が発生します。

OSX 10.10.5 では、XCode 7 を使用して、10.9 ライブラリにリンクします。これまでのところ、ビデオと複数のオーディオ チャンネルの両方を含む有効な ProRes ファイルを作成できました。

(非圧縮 48K、16 ビット PCM オーディオの複数のトラックを作成しています)

ビデオ フレームの追加はうまく機能し、オーディオ フレームの追加もうまく機能するか、少なくともコード内で成功します。

しかし、ファイルを再生すると、オーディオ フレームが 12、13、14、または 15 フレーム シーケンスで繰り返されているように見えます。

波形を見ると、*.mov から繰り返しのオーディオが簡単にわかります...

つまり、最初の 13 または X ビデオ フレームにはすべてまったく同じオーディオが含まれており、これが次の X に対して再び繰り返され、その後何度も何度も繰り返されます。

ビデオは問題ありません。ループ/繰り返しているように見えるのはオーディオだけです。

この問題は、ソースとして使用するオーディオ チャンネル/トラックの数に関係なく発生します。1 つのトラックだけを使用してテストし、さらに 4 トラックと 8 トラックを使用してテストしました。

システムにフィードするサンプルのフォーマットと量には関係ありません。つまり、720p60、1080p23、および 1080i59 を使用すると、すべて同じ不正な動作が発生します。

  • 実際には、720p キャプチャはオーディオ フレームを 30 回または 31 回繰り返すように見えますが、1080 形式はオーディオ フレームを 12 回または 13 回しか繰り返しません。

しかし、私はこれを非常に詳細に記録しているので、オーディオ エンコード/SampleBuffer 作成プロセスに異なるオーディオ データを送信していることは間違いありません (以下のコードには示されていません)。

コードを変更して問題を公開するためにさまざまなことを試しましたが、成功しませんでした。そのため、ここで質問しています。誰かが私のコードの問題を確認するか、この問題に関する情報を提供してくれることを願っています。

私が使用しているコードは次のとおりです。

これは、いくつかの特別なハードウェアに接続する非常に基本的なサンプルです (そのためのコードは省略されています)。

ビデオとオーディオのフレームを取得し、インターリーブされた PCM から各トラックの PCM データの個々の配列にオーディオを処理します。

そして、ビデオであれオーディオであれ、各バッファが適切なトラックに追加されます...

最後に、AvAsset が終了して閉じられ、終了してクリーンアップします。

どんな助けでも大歓迎です、

乾杯、

ジェームズ

0 投票する
1 に答える
1066 参照

ios - AVAssetWriterVideoInput を使用してビデオ ファイルにフレームを追加できませんでした。最後に文書化されていないエラー -12738 で失敗する

ファイルにバッファを追加するために AVAssetWriterVideoInput を使用しています。私はこのコードを持っています:

この行

すべてのAppleドキュメントで予想されるように、明らかにどのドキュメントにも見つからないunknown errorコードで失敗します。-12738

また、AVFoundation 内に未知のエラーのコードがたくさんあり、システムがコードを選択している場合、-12738それが未知であると言う以上のことを明らかに知っているという単純な理由から、これが未知のエラーであるとは思えません。

保存されているファイルを見ると、バッファ/フレームが保存されていないため、0 メガバイトのままです。

これAVAssetWriterVideoInputは次のように作成されました。

また、バッファが追加されると、次の特性があります。

問題を確認したい場合は、ここにサンプルコードがあります。そのコードは、4K でビデオを撮影する準備ができています。デバイスでそれができない場合は、行AVCaptureSessionPreset3840x2160を AVCaptureSessionPresetHigh ProcessadorVideo.m` に変更します。insideサンプル コードは、ビデオ ストリームから四角形をトリミングし、それにコミック効果を適用します。ありがとう