FFmpeg入门基础

FFmpeg 是什么

FFmpeg 既是一款音视频编解码工具,同时也是一组音视频编解码开发套件,作为编解码开发套件,他为开发者提供了丰富的音视频处理的调用接口。

FFmpeg 提供了多种媒体格式的封装和解封装,包括多种音视频编码、多种协议的流媒体、多种色彩格式转换、多种采样率转换、多种码率转换等; FFmpeg 框架提供了多种丰富的插件模块,包含封装与解封转的插件、编码与解码的插件等。

官方地址:https://www.ffmpeg.org/

GitHub:https://github.com/FFmpeg/FFmpeg

为什么要学 FFmpeg 开发

FFmpeg 是一款知名的开源音视频处理软件,它提供了丰富而友好的接口支持开发者进行二次开发。

FFmpeg 读作 “ef ef em peg” ,其中的 “FF” 指的是 “Fast Forward”,“mpeg” 则是 “Moving Picture Experts Group” (动态图像专家组)。

FFmpeg 项目功能复杂而庞大,基本上支持所有常见的音视频处理操作,如封装格式转换、音视频转码、音视频播放和剪辑、视频添加水印滤镜等。

尽管 FFmpeg 功能强大,但是由于其采用的是带有传染性的 LGPL/GPL 开源协议,所以一些大厂基本上都是自己独立开发类似的音视频处理库,甚至在接口和组织模块上模仿 FFmpeg 。

功能模块

FFmpeg 有六个常用的功能模块:

  1. libavformat:多媒体文件或协议的封装和解封装库,如 Mp4、Flv 等文件封装格式,RTMP、RTSP 等网络协议封装格式;
  2. libavcodec:音视频编解码库;
  3. libavfilter:音视频、字幕滤镜库;
  4. libswscale:图像格式转换库;
  5. libswresample:音频重采样库;
  6. libavutil:工具库;

Android编译

编译方式

参考 https://juneyang.blog.csdn.net/article/details/126819292。

编译出来引入到我们的项目我们就可以进行C++开发了,但是没基础难度高。

所以可以先从别人封装好的工具入手

FFmpegKit

https://github.com/arthenica/ffmpeg-kit

FFmpegKit是一组在Android、iOS、Linux、macOS、tvOS、Flutter和React Native应用程序中使用FFmpeg的工具。

主要通过命令的方式进行对FFmpeg的调用。

支持的命令可以参考:https://ffmpeg.org/ffmpeg.html

示例

获取媒体信息的方式

FFprobeKit.getMediaInformation(videoPath).mediaInformation

处理音视频命令


# # 把前十帧转换为GIF
# -i $videoPath -vframes 10 -y -f gif ${outputPath}/ten.gif
# # 去掉视频的声音
# -i $videoPath -vcodec copy -an -y ${outputPath}/rmAudio.mp4
# # 视频音频进行合并
# -i ${outputPath}/rmAudio.mp4 -itsoffset 0.5 -i ${filesDir.absolutePath}/wind.mp3 -c:v copy -c:a aac -strict experimental -y ${outputPath}/merge.mp4
# #视频添加水印
# -i $videoPath -i ${filesDir.absolutePath}/avatar.png -filter_complex overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2 -y ${outputPath}/waterMark.mp4

直播推流和接收流

## 直播推流
# -re -i $videoPath -c copy -f flv rtmp://124.222.158.29/live/livestream?secret=dfdb1077b4474c059c569044f8923c2d"
## 接收流
# -i rtmp://124.222.158.29/live/livestream?secret=dfdb1077b4474c059c569044f8923c2d -c copy -y ${outputPath}/push.mp4"

NEXT FFmpeg+Android SurfaceView 实现一个简单的播放器

你可能感兴趣的:(ffmpeg,音视频,android)