1、将lib接入Xcode工程,编译会报错,需要添加以下库:
2、Build Settings,Header Search Paths添加FFmpeg的头文件路径:$(PROJECT_DIR)/XXXX/FFmpeg-iOS/include
3、显示mp3文件的MetaData,代码如下:
#import <libavformat/avformat.h>
// 结构体指针
AVFormatContext *avFormatContext = avformat_alloc_context();
// 资源文件路径
NSString *filepath = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"mp3"];
NSString *url = [NSURL fileURLWithPath:filepath].absoluteString;
// 打开媒体(打开后注意关闭)
if (avformat_open_input(&avFormatContext, url.UTF8String, NULL, NULL) != 0) {
av_log(NULL, AV_LOG_ERROR, "Couldn't open file");
return;
}
// 打印MetaData信息
av_dump_format(avFormatContext, 0, url.UTF8String, NO);
// 关闭媒体
avformat_close_input(&avFormatContext);
// 释放AVFormatContext(avformat_close_input中已调用过avformat_free_context,可以不写)
avformat_free_context(avFormatContext);
打印信息如下:
Input #0, mp3, from 'file:///var/containers/Bundle/Application/1D5B3D8E-718E-4C36-AF63-A12E3C0C6AC1/testFFmpeg.app/test.mp3':
Metadata:
encoder : Lavf55.37.102
Duration: N/A, bitrate: N/A
Stream #0:0: Audio: mp3, 0 channels
需要注意的是:
1、从4.0版开始,av_register_all标记为过期,不再需要调用这个方法;
2、avformat_open_input和avformat_close_input要成对,有打开就得有关闭,不然会有内存泄漏;
3、avformat_alloc_context从内存中申请了一个结构体,所以必须释放该内存;
4、avformat_close_input中已调用过avformat_free_context,可以不调用avformat_free_context。
扫描二维码关注公众号,回复:
9351866 查看本文章