前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >(二)FFmpeg 简介及iOS端交叉编译

(二)FFmpeg 简介及iOS端交叉编译

作者头像
sweet说好的幸福
发布2020-12-23 09:57:49
1.9K0
发布2020-12-23 09:57:49
举报
文章被收录于专栏:sweet_iOS

FFmpeg,作为全世界音视频开发者都要掌握的神器,移动端学习音视频开发,FFmpeg可以说是必学的框架,FFmpeg在linux平台下开发,但它同样也可以在其他操作系统环境中编译运行,包括Windows、Mac OS X等。FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序,它包括了目前领先的音/视频编码库libavcodec。

FFmpeg强大的能力

FFmpeg有非常强大的功能,包括视频采集功能、视频格式转换、视频抓图、给视频加水印等。同时还支持以RTP方式将视频流传送给支持RTSP的流媒体服务器,支持直播应用。

安装方式

可以通过如下两种方式安装FFmpeg

  • 1.下载iOS版本FFmpeg静态库: 即不用手动编译,我们只需要下载得到头文件及.a库文件.
  • 2.手动编译: 下载源码, 可以在更改一些flag或源码后再编译脚本,较为灵活.

如果仅仅是想简单直接使用FFmpeg可以下载一个稳定版本的静态库, 建议用第一种方式,如果需要在iOS项目中自定义使用FFmpeg,以及修改一些FFmpeg中的源码以适应项目,使用第二种方式。

必备知识

  • 基本终端命令行
  • FFmpeg基础

ffmpeg的常用库 Left Aligned Center Aligned ffmpeg 一个命令行工具,用来对视频文件转换格式,也支持对电视卡即时编码 ffserver 一个HTTP多媒体即时广播流服务器,支持时光平移 ffplay 一个简单的播放器,基于SDL与FFmpeg库 libavcodec 包含全部FFmpeg音频/视频编解码库 libavformat 包含demuxers和muxer库 libavutil 包含一些工具库 libpostproc 对于视频做前处理的库 libavutil 包含一些工具库 libswscale 对于视频作缩放的库

编译FFmpeg

代码语言:javascript
复制
注意: 在这里可以仅下载FFmpeg-iOS编译脚本,不用下载源码,执行脚本会自动下载源码,如果不想每次自动下载,可以手动下载源码,稍微修改下FFmpeg编译脚本即可.这里不做过多说明.
  • 编译说明 上文编译脚本的仓库中,明确要求编译脚本需要的安装项: yasm 1.2.0 gas-preprocessor

你可以自己安装,也可以完全不管,在编译脚本里面有对yasm和gas-preprocessor的支持判断,没有该环境会自动下载并配置。

使用方法:

代码语言:javascript
复制
Use build-ffmpeg-tvos.sh for tvOS.

To build everything:
  ./build-ffmpeg.sh

To build arm64 libraries:
  ./build-ffmpeg.sh arm64

To build fat libraries for armv7 and x86_64 (64-bit simulator):
  ./build-ffmpeg.sh armv7 x86_64

To build fat libraries from separately built thin libraries:
  ./build-ffmpeg.sh lipo

也强调了在集成FFmpeg时额外需要的依赖库:

  • libz.tdb
  • libbz2.tdb
  • libiconv.tdb

编译

按照实际需要修改配置。支持的版本越多,项目的安装包将越大。

代码语言:javascript
复制
Tips:
FFmpeg 提供有自己的编解码库,封装了codec层,但是有一些codec是具备自己的License,FFmpeg不会默认集成,例如libx264、FDK_AAC、LAME等,但是FFmpeg就像一个平台,可以将其他的第三方codec以插件的形式添加进来,然后为开发者提供统一的接口。

如有需要集成libx264的同学单独Q我,就没传到git上。

iOS项目集成FFmpeg

  • 编译功后,会生成FFmpeg-iOS文件,将该文件直接拖到项目中。
  • 配置头文件搜索路径,在工程文件->Bulid Setting->Search Paths->Header Search Paths添加
代码语言:javascript
复制
$(SRCROOT)/$(PRODUCT_NAME)/FFmpeg-iOS/include,(请根据自己实际路径更改)
  • 添加依赖库 libz.tdb、libbz2.tdb、libiconv.tdb 以及FFmpeg 使用到的CoreMedia.framework、AVFoundation.framework、VideoToolbox.framework、AudioToolbox.framework库

FFmpeg依赖.png

参考:

使用FFmpeg

正如开篇就提到的,强大的FFmpeg提供了视频采集功能、视频格式转换、视频抓图、给视频加水印等。同时还支持以RTP方式将视频流传送给支持RTSP的流媒体服务器,支持直播应用。

下一章,我将从FFmpeg的使用开始讲起,包括API调用和Tool调用。


如果喜欢,请帮忙点赞。支持转载,转载请附原文链接。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • FFmpeg强大的能力
  • 安装方式
  • 必备知识
  • 编译FFmpeg
  • 编译
  • iOS项目集成FFmpeg
  • 使用FFmpeg
相关产品与服务
云直播
云直播(Cloud Streaming Services,CSS)为您提供极速、稳定、专业的云端直播处理服务,根据业务的不同直播场景需求,云直播提供了标准直播、快直播、云导播台三种服务,分别针对大规模实时观看、超低延时直播、便捷云端导播的场景,配合腾讯云视立方·直播 SDK,为您提供一站式的音视频直播解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档