2017-08-25 2 views
3

私はビデオクリップを記録するアプリ(エンタープライズ、分散OTA)を持っています。突然、オーディオが欠落しているビデオのアップロードが始まりました。この問題は現在完全に再現可能です。私は素晴らしいと思われていたPBJVisionライブラリを使用してきましたが、同じ結果を持つSwiftyCam(別のAVFoundationベースのライブラリ)でこれをテストしました。これは、これが導入された正確際は不明だが、私は次のことをチェックしました:ビデオは録音されなくなりました(PBJVision/AVFoundation)

  • NSMicrophoneUsageDescriptionは、システム設定で許可されているカメラとマイクの許可が表示されていることを確認の.plist
  • ターゲットに設定されていることを確認
  • が異なるビデオキャプチャライブラリを試してみてください回帰の場合には、ビデオキャプチャライブラリの以前のリリースを試してみてください(アプリが正しく許可を再度有効にするプロンプトが表示されます)の設定でマイクの権限を無効にしてみてください
  • PBJVision/SwiftyCameraのオーディオを有効にしてビットレートを明示的に設定し、セッションで少なくともログにオーディオがあることを報告していることを確認します(ライブラリとAVFoundationでは入力ストリームがあり、 )
  • システムカメラでビデオを撮って、アプリケーションをアップロードする - この場合、オーディオは機能する(ハードウェアに問題はない)
  • デバイスのすべてのコンテンツとアクセス許可をリセットして、確か
  • を干すキャッシュされた権限のいくつかの種類は、ボリュームがミュート
ていないことを確認しますがありません

カメラロールに保存されたコピーも無音なので、ビデオがアップロードされたときには起こりません。私はAVFoundationだけで録画を始めましたが、同じ結果が出るのであれば時間を無駄にしたくありません。ビデオでオーディオを録音しないように特定のアプリを引き起こす原因は何ですか?私は関連する質問を見てきましたが、提供された解決策のどれも私がここにいる問題に対処しません。

EDIT:

ここ

は、記録開始、およびPBJVisionセッションを停止したときに表示されるログです:

[5411:1305718] VISION: camera setup 
[5411:1305718] VISION: switchDevice 1 switchMode 1 
[5411:1305718] VISION: capture session setup 
[5411:1305291] VISION: session was started 
[5411:1305718] VISION: capture session running 
[5411:1305291] VISION: starting video capture 
[5411:1305718] VISION: ready for video (1) 
[5411:1305718] VISION: audio stream setup, channels (1) sampleRate (44100.000000) 
[5411:1305718] VISION: ready for audio (1) 
[5411:1305291] VISION: ending video capture 
[5411:1305963] VISION: capture session stopped 
[5411:1305963] VISION: session was stopped 
[5411:1305291] CMTimeMakeWithSeconds(8.396 seconds, timescale 24): warning: error of -0.021 introduced due to very low timescale 

答えて

1

それは、これが原因サウンドを再生するために別のライブラリを使用して、実際にあったことが判明ビデオ録画を開始した後。これは明らかに録音のためにオーディオチャンネルをプリエンプトします。そのオーディオチャンネルは空になります(Record Audio/Video with AVCaptureSession and Playback Audio simultaneously?参照)。他のサウンド再生がビデオ録画の開始前または開始後に開始されているかどうかは重要ではありません。これは、同じシステムAPIにすべて触れている複数のライブラリを使用することを念頭に置いた警告です。このような場合は、望ましくないやり方で対話します。

この場合、解決策は、2つのソースが同じAVAudioSessionCategoryを使用していないことを確認して、競合しないようにすることです。

関連する問題