手记

【金秋打卡】第10天 Swift 调用 c 及MacApp 引入 ffmpeg 库

课程名称音视频基础+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;
}

0人推荐
随时随地看视频
慕课网APP