使用 AVFoundation 进行视频录制

2023-11-27

我正在尝试使用 AVFoundation 录制视频。当我仅向会话添加视频输入时,一切正常,但是当我向其中添加音频输入时,它会停止录制视频。(录制开始后立即调用委托方法)。这是我的代码:

-(void) recordVideo
{    
self.session = [[AVCaptureSession alloc] init];

if([session canSetSessionPreset:AVCaptureSessionPresetMedium])
    session.sessionPreset =  AVCaptureSessionPresetMedium;


CALayer *viewLayer = [self.cameraView layer];

AVCaptureVideoPreviewLayer *captureVideoPreviewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:session];

captureVideoPreviewLayer.frame = viewLayer.bounds;

[viewLayer addSublayer:captureVideoPreviewLayer];



self.videoInput = [AVCaptureDeviceInput deviceInputWithDevice:[self frontFacingCameraIfAvailable] error:nil];

self.audioInput = [AVCaptureDeviceInput deviceInputWithDevice:[self audioDevice] error:nil];


if(!videoInput)
    NSLog(@"Couldn't create input!");

else
{
    self.output= [[AVCaptureMovieFileOutput alloc] init];

    NSString *pathString = [[self outputPath]stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

    NSURL *fileURL = [NSURL fileURLWithPath:pathString];


    [session beginConfiguration];

    [session removeInput:[self videoInput]];
    if([session canAddInput:videoInput])
        [session addInput:videoInput];

    [videoInput release];

    [session removeInput:[self audioInput]];
     if([session canAddInput:audioInput])
        [session addInput:audioInput];

    [audioInput release];

    if([session canAddOutput:output])
        [session addOutput:output];

    [output release];

    [session commitConfiguration];


    [session startRunning];   

    [output startRecordingToOutputFileURL:fileURL recordingDelegate:self];
}


- (void) captureOutput:(AVCaptureFileOutput *)captureOutput didStartRecordingToOutputFileAtURL:(NSURL *)fileURL fromConnections:(NSArray *)connections
{
    NSLog(@"Recording Started at %@",fileURL);

}


- (void)captureOutput:(AVCaptureFileOutput *)captureOutput didFinishRecordingToOutputFileAtURL:(NSURL *)outputFileURL
  fromConnections:(NSArray *)connections error:(NSError *)error 
{
    NSLog(@"Recording to file ended");


   [session stopRunning];
   [session release];        
}



- (AVCaptureDevice *)frontFacingCameraIfAvailable
{
   NSArray *videoDevices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo];
   AVCaptureDevice *captureDevice = nil;

for (AVCaptureDevice *device in videoDevices)
{
    if (device.position == AVCaptureDevicePositionBack)
    {
        captureDevice = device;
        break;
    }
}    
return captureDevice;
}


- (AVCaptureDevice *) audioDevice
{
  NSArray *devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeAudio];
  if ([devices count] > 0) {
    return [devices objectAtIndex:0];
 }
 return nil;
}

我在一段固定时间后调用 [output stopRecording],但是当我添加音频输入时,它会记录一个帧,并立即调用 didFinishRecroding 委托方法。

谁能告诉我这段代码有什么问题。

Thanks


我已经想通了。我需要类别混合。以下是制作它的代码:

NSError *setCategoryError = nil;
[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayAndRecord error: &setCategoryError]; 

if (setCategoryError) { NSLog(@"%@",[setCategoryError description]); }

 OSStatus propertySetError = 0;
 UInt32 allowMixing = true;

 propertySetError = AudioSessionSetProperty ( kAudioSessionProperty_OverrideCategoryMixWithOthers, sizeof (allowMixing), &allowMixing);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 AVFoundation 进行视频录制 的相关文章

  • 背景大小:封面在视网膜显示屏上看起来像素化

    可以看到我正在开发的网站here http ourcityourstory com dev 如果你查看 iPad 3 或 iPhone 4 上的 关于 或 联系 部分 背景看起来全都是疯狂的像素化 我有background size set
  • 为具有多个目标和不同平台的项目编写 Podfile

    我正在准备一个支持 OS X 和 iOS 的 Pod 我的 pod 有一些自己的依赖项 这些依赖项在 podspec 文件中定义 因此我使用 Podfile 来管理我用来开发 pod 和运行测试的项目的依赖项 我正在使用 CocoaPods
  • 默认情况下在 MPMovies PlayerViewController 中显示字幕

    有什么方法可以在默认情况下由 MPMovies PlayerViewController 加载的电影上显示字幕吗 这部电影在视频中嵌入了字幕 谢谢你 不幸的是 这个功能在MPMoviePlayer播放类 这显然相当烦人 您应该考虑向 App
  • 使用 ZBarSDK 时 iPhone 相机失去自动对焦功能

    我正在开发一个应用程序 用户可以选择是否要扫描条形码或拍摄某物的照片 为了拍照 我正在使用UIImagePickerController照常 为了扫描条形码 我使用 ZbarSDK 1 2ZBarReaderViewController 拍
  • 我可以使用 jpeg 图像来启动 Screen

    我目前正在进行应用程序开发 并且添加了一个 JPEG 格式的启动器屏幕 该屏幕在模拟器和设备中都显示 但这是否会对苹果批准指南产生任何问题 iOS 8 更新 您现在可以使用基于 XIB 的启动资产 https developer apple
  • HTML 分页

    有没有html分页的开源项目 我正在为 iPhone 开发一个应用程序 我想在 UIWebView 上显示 HTML 文件 并且不希望用户向下滚动以查看屏幕上未显示的剩余内容 我想在第二个 UIWebView 上显示剩余的内容 我怎样才能做
  • 使用 AVFoundation 裁剪 AVAsset 视频

    我在用AVCaptureMovieFileOutput录制一些视频 我使用显示预览层AVLayerVideoGravityResizeAspectFill稍微放大 我遇到的问题是最终的视频较大 包含预览期间不适合屏幕的额外图像 这是预览和生
  • 如何用图片替换UITableView?

    我有一个 UITableView 默认为空白 直到用户编辑并向其添加数据 我想显示一张带有说明的图像 直到用户编辑它为止 图片的大小非常适合导航栏和标签栏之间 有没有办法以编程方式执行此操作 您可以使用removeFromSuperview
  • 以编程方式在 App Store 上运行搜索?

    是否可以从我的应用程序中打开 App Store 应用程序并运行搜索 我想看看是否有一个 appstore 类型的 URL 可以使用 就像 mailto 和 sms 分别打开邮件和短信一样 有谁知道这是否可能 编辑 更多信息 我一直在尝试使
  • 如何将iPhone/iPad应用程序更改为仅iPhone?

    我有点愚蠢 将我的应用程序构建为同时针对 iPhone 和 iPad 而实际上它应该只针对 iPhone 如何更改设置以使构建仅适用于 iPhone 我实际上已经完成了应用程序的编码并准备提交它 所以希望这只是更改一些晦涩的项目设置的情况
  • 在 IOS 上使用 AVComposition 混合两个音频文件

    我正在尝试混合两个音频文件 将一个音频文件放在另一个音频文件之上 不是缝合在一起 但我在 IOS 上学习 AVFoundation 时遇到了困难 我在这里遵循了这个答案 如何使用 AVMutableCompositionTrack 合并音频
  • 将自己的结构传递到 opengl es 2.0 着色器中

    我想尝试 OpenGL ES 2 0 编程指南 一书中的照明示例 在着色器中他们制作了两种结构 struct directional light vec3 direction normalized light direction in ey
  • 当 UITextField 已满或空时显示警报 Swift

    下面的代码中 如果 userNameTF 或 passwordTF 已满或为空 则会显示警报 IBAction func LoginBtn sender AnyObject let userName userNameTF text let
  • 在带有 Storyboard 的 XCode 4 中以模态方式推送视图时,出现“对开始/结束外观转换的不平衡调用”警告

    在网上进行了一些研究但没有成功后 我来这里向您询问有关我的警告的问题 实际上 我有一个带有导航控制器的视图 V1 我想在 V1 完成加载时推送模态视图 V2 所以我用performSegueWithIdentifier方法 我正在使用故事板
  • iPhone UINavigationBar 使用 [UINavigationBar 外观] 更改所有控制器的字体样式

    我知道我可以单独更改导航栏的字体 如本答案所述 更改导航栏的字体 https stackoverflow com questions 5832036 change the navigation bars font 目前我正在使用一种更全局的
  • UIImagePickerView 控制器 - 图像路径 - iphone

    UIImagePickerView控制器返回NSData的图像 我的要求是将图像的路径存储为 varchar 数据类型 从中选择图像后UIImagePickerView 如何获取iPhone照片库中所选图片的完整路径 我的应用程序不必担心在
  • 使用 MFMailComposeViewController 类从 iPhone 应用程序发送带有 IMG 标签的 HTML 电子邮件

    我正在使用 MFMailComposeViewController 类从我的 iPhone 应用程序发送格式化的 HTML 电子邮件 我需要在电子邮件中包含图像 并且我在电子邮件正文中添加了 IMG 标签 IBAction shareWit
  • 填充 CoreData 创建的 sqlite 数据库

    我有一个由 CoreData 模型自动创建的 sqlite DB 但我的应用程序不会让用户能够将数据写入其中 而是我想用程序所需的所有数据预先填充它 我的问题是 CoreData 创建的 sqlite DB 具有未知的表和字段 这些表和字段
  • iphone:如何停止快门动画?

    我有两个问题 1 我想知道如何在相机加载时停止快门动画 我正在使用 UIImagePickerController 我已经参考了堆栈溢出的许多答案 但没有成功 2 我在相机中有一个自定义按钮 使用cameraOverlayView并想通过单
  • 拖动时获取MKAnnotation的坐标

    我正在根据用户添加的注释的位置创建一条路径 MKPolyline 我想允许用户通过拖动引脚来更改路径 我目前可以做到这一点 但 MKPolyline 不会更新 直到引脚被放下 我实施了 void mapView MKMapView mapV

随机推荐

  • RESTful HTTP 响应代码

    我正在开发一个简单的 RESTful API 并且非常喜欢它的简约风格 但我不确定各种情况下正确的 HTTP 响应代码 查询格式不正确 正确形成的查询引用了不存在的资源 资源已成功删除 资源编辑成功 我目前认为 1 会是403 Forbid
  • 在 numpy 数组求和中将 nan 视为零,除了所有数组中的 nan

    我有两个 numpy 数组 NS EW 来总结 他们每个人在不同的位置都有缺失值 比如 NS array 1 2 nan 4 5 nan 6 nan nan EW array 1 2 nan 4 nan nan 6 nan 9 如何以 nu
  • 如何将集合分成批次?

    我在这里有一个简单的任务 根据批量大小将 n 个元素的 Set 分成 m 个 Set 通常我希望将子集限制为 1 000 个元素 我写了这样的东西 其中输入是主要的 大的集合 var strings Set String input var
  • 在 React-router Link 中将对象作为 prop 传递

    我正在获取产品列表ProductList 其中 我需要将选定的产品对象传递给Product 目前 我正在尝试通过id作为路由参数并再次获取产品对象 但我想发送整个产品对象ProductList to Product 我的路线是
  • 如何在 Swift 中存根 URLSession?

    我一直在关注这个tutorial存根URLSession 这个例子是通过创建一个协议并扩展现有协议来完成的URLSession protocol URLSessionProtocol typealias DataTaskResult Dat
  • 在 Ruby 中使用 Iconv 进行音译

    当我尝试音译西里尔字母 utf 8 字符串时 Iconv iconv ascii ignore translit utf 8 string to s see 问题 1726404 音译 in ruby 除了那些必须音译的符号之外 我得到了所
  • 使用主题和代理传递数据

    是否可以在服务中使用主题实现 2 路数据流 例如 假设我希望某个组件检索信息 然后通过服务主题将其发布以供其他组件使用 然后 使用组件对此信息进行一些更改 然后重新发布它 以便原始组件可以检索更改 使用观察者模式可以实现这一点吗 另外 如果
  • Spring Boot 嵌入式 Tomcat 依赖在启动时引发异常

    我正在从 JBoss Wildfly 移植一个旧应用程序以在 tomcat 上运行 我能够完成的大部分事情都是通过网络上找到的资源完成的 然而 我对最新一期的运气不太好 我很早就知道我必须添加 providedRuntime org apa
  • 尝试在 Mac OS X 上使用 Subversion 提交时出现错误

    Using 颠覆我尝试承诺 svn ci dir filename 我明白了 svn system emacs svn commit tmp returned 256 这是什么意思 我该如何修复它 可能相关 我在上看到类似的错误vim设置时
  • 身份规范设置为 false

    我在用EF5 and Code First创建数据库 当实体有Id field EF 创建这样的字段Primary Key在数据库中并设置Identity specification to true 自动生成的值 如何设置Identity
  • 如何分析 C 程序的内存使用情况

    我需要弄清楚我正在运行的 Linux 程序的哪一部分占用了多少 百分比或绝对 内存 我需要创建多个此类程序的配置文件 以便我可以识别代码中一些较大的内存消耗者 并查看是否可以优化它们以减少使用 我需要在 MIPS 平台上使用它 不幸的是 V
  • 结合Raphael和jQuery实现浏览器兼容

    发现IE不处理javascriptonmouseout 我决定改用 jQuery 这样跨浏览器兼容性就会自动得到解决 我正在制作一个由 svg 路径定义的区域 当鼠标悬停在其上方时 该区域会亮起 并且我改编了 Raphael 网站上提供的代
  • 使用适配器动态更新列表视图

    This教程使用 SimpleAdapter 工作正常 但我需要在输入新数据时更新适配器中的数组 您能否指导我如何使用 SimpleAdapter 以外的其他内容更新 ListView Use a 阵列适配器由 ArrayList 支持 要
  • 如何定义 matplotlib 和 seaborn 轴

    我在绘图中打开和关闭轴以及适当调整轴的大小时遇到 困难 我已经关注了几个线程 我的方法是 f1 plt figure 1 3 3 ax Subplot f1 111 f1 add subplot ax ax scatter current
  • Objective-C,对包含数字的字符串数组进行排序[重复]

    这个问题在这里已经有答案了 假设我有一个像这样的数组 NSArray arr 1 4 2 8 11 10 14 9 note strings containing numbers 我想像这样对它们进行排序 1 2 4 8 9 10 11 1
  • 想要用 sympy 进行多变量最小化

    我想使用符号字符对 scipy optimize 进行最小化 from scipy optimize import minimize from sympy utilities lambdify import lambdify import
  • *、$ 和 # 之间的区别

    我是 thymeleaf 的新手 经常看到这三个操作员 有什么区别 and 我知道它们用于从 MVC 访问数据 但在什么情况下呢 The 表达式类型Thymeleaf 支持是 变量表达式 这些是标准的表达方式 选择变量表达式 它们与变量表达
  • Qt 多媒体:找不到-lpulse

    我修改了 pro QT core gui multimedia multimediawidgets 我包括
  • 为什么在重新分区 Spark Dataframe 时会出现这么多空分区?

    我想将数据框 df1 分区为 3 列 该数据框恰好有这 3 列的 990 个独特组合 In 17 df1 createOrReplaceTempView df1 view In 18 spark sql select count from
  • 使用 AVFoundation 进行视频录制

    我正在尝试使用 AVFoundation 录制视频 当我仅向会话添加视频输入时 一切正常 但是当我向其中添加音频输入时 它会停止录制视频 录制开始后立即调用委托方法 这是我的代码 void recordVideo self session