课程名称:音视频基础+ffmpeg原理 入门音视频技术开发
课程章节:【实战】音频采集
课程讲师:李超
课程内容
1.Swift 调用 c
实现 Swift 调用 c 需要经过以下几个步骤:
- 编写 c 函数
- 在桥接头文件中引入c 的头文件
- Swift 直接调用 c 函数
新建一个.c文件,在其中编写c代码,新建文件的方法和上一步中相同,不过需要选择C File而不是Objective-C File,创建好.c文件后,在文件里加入测试代码:
#include <stdio.h>
/** 从键盘输入一个整型数据并返回这个数 */
int getIntFromKeyBoard()
{
int a;
scanf("%d", &a);
return a;
}
/** 求两个整型数的和 */
int add(int a, int b)
{
return a + b;
}
写好了这里的C代码后,还需要在第二部中创建的桥接头文件比如(Test01-Bridging-Header.h)文件中,声明这里的两个函数,如下代码:
int getIntFromKeyBoard();
int add(int a, int b);
最后,就可以在.swift文件中,使用上面的两个函数了,main.swfit文件中的代码如下:
import Foundation
print("enter number1: ")
var a = getIntFromKeyBoard()
print("enter number2: ")
var b = getIntFromKeyBoard()
var sum = a + b
print("\(a) + \(b) = \(sum)")
2.MacApp 引入 ffmpeg 库
引入 ffmpeg库大概需要经过以下几个步骤:
- 将 ffmpeg 库文件及头文件拷贝到目录中
- 引入库文件和头文件,这里只引入用到的 ffmpeg 库,包括 libavdevice.dylib,libavformat.dylib,libavutil.dylib。
- 关闭沙箱,关闭沙箱的目的是保证引入的资源文件可以被外部访问。
最用使用 ffmpeg 的日志打印函数,验证引入的库文件是否可以正常被调用。
#include "testC.h"
#include <stdio.h>
int haha()
{
av_log_set_level(AV_LOG_DEBUG);
av_log(NULL,AV_LOG_DEBUG,"hello,world j\n");
printf("this is a c function");
return 0;
}