我有一个应用程序,当一个视图加载,开始捕获视频和音频,并在完成后,将它记录到应用程序的文档文件夹,以及它运行的iPad的相机胶卷.我已经确定并在会话的输入中添加了音频和视频,但是当我去查看保存的视频时,没有音频.任何人都可以在我的代码中发现任何可以指出问题出在哪里的东西吗?
更新:没有显示任何错误消息.但是,我发现了一个共同点.音频将录制,但仅限于录制时间为10秒或更短.如果它达到11秒,则音频不会录制.
NSLog显示
完成错误:(null)
-(void)viewWillAppear:(BOOL)animated {
NSDate *today = [NSDate date];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"MMM d hh:mm:ss a"];
// display in 12HR/24HR (i.e. 11:25PM or 23:25) format according to User Settings
NSString *currentTime = [dateFormatter stringFromDate:today];
NSError* error4 = nil;
AVAudioSession* audioSession = [AVAudioSession sharedInstance];
[audioSession setCategory:AVAudioSessionCategoryAmbient error:&error4];
OSStatus propertySetError = 0;
UInt32 allowMixing = true;
propertySetError |= AudioSessionSetProperty(kAudioSessionProperty_OtherMixableAudioShouldDuck, sizeof(allowMixing), &allowMixing);
// Activate the audio session
error4 = nil;
if (![audioSession setActive:YES error:&error4]) {
NSLog(@"AVAudioSession setActive:YES …Run Code Online (Sandbox Code Playgroud) 我使用以下代码来设置AVCaptureSession,录制视频文件并播放它:有时这很好用,有时我在播放时会出现黑屏.据我所知,这是完全随机的.
当错误发生时,如果我尝试在quicktime中打开文件,我会收到"无法打开文件,格式无法识别"的消息.这让我相信它是一个录音问题而不是播放问题.
另外,如果注释掉添加麦克风输入的代码部分,则不会发生错误(但我的视频文件当然没有音频轨道)...所以也许音频源会随机破坏文件原因?
- (void)viewDidLoad {
[super viewDidLoad];
....
captureSession = [[AVCaptureSession alloc] init];
[captureSession setSessionPreset:AVCaptureSessionPresetHigh];
NSArray *devices = [AVCaptureDevice devices];
AVCaptureDevice *frontCamera;
AVCaptureDevice *mic = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeAudio];
for (AVCaptureDevice *device in devices) {
NSLog(@"Device name: %@", [device localizedName]);
if ([device hasMediaType:AVMediaTypeVideo])
{
if ([device position] == AVCaptureDevicePositionFront) {
NSLog(@"Device position : front");
frontCamera = device;
}
}
}
NSError *error = nil;
AVCaptureDeviceInput * microphone_input = [AVCaptureDeviceInput deviceInputWithDevice:mic error:&error];
AVCaptureDeviceInput *frontFacingCameraDeviceInput = [AVCaptureDeviceInput deviceInputWithDevice:frontCamera error:&error];
if (!error)
{
if …Run Code Online (Sandbox Code Playgroud) 我使用 AVFoundation 创建一个自定义视频录制应用程序。问题是当录制达到 13 秒长度时,声音从结果视频中完全消失。我用代码设置相机:
private func configure(_ mode: CameraMode) {
guard let devices = AVCaptureDevice.devices(withMediaType: AVMediaTypeVideo) as? [AVCaptureDevice] else {return}
for device in devices {
if device.position == .back {
do {
let input = try AVCaptureDeviceInput(device: device)
if session.canAddInput(input) {
session.addInput(input)
}
configureVideoOutput(for: device)
session.startRunning()
} catch (let error) {
print(error)
}
}
}
}
private func configureVideoOutput(for device: AVCaptureDevice) {
if device.hasMediaType(AVMediaTypeVideo) && session.canAddOutput(sessionVideoOutput) {
session.beginConfiguration()
session.sessionPreset = AVCaptureSessionPresetHigh
guard let devices = AVCaptureDevice.devices(withMediaType: AVMediaTypeAudio) as? [AVCaptureDevice] …Run Code Online (Sandbox Code Playgroud)