Java教程

【FFmpeg入门到放弃】ffmpeg 整体架构和 example demo入门

本文主要是介绍【FFmpeg入门到放弃】ffmpeg 整体架构和 example demo入门,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

文章目录

    • 前言
    • 命令行工具
    • 二次开发 sdk
      • 媒体解封装
      • 视频的编解码
      • 音频的编解码
      • 硬件解码
      • 媒体封装
    • 总结


推荐一个零声学院免费公开课程,个人觉得老师讲得不错,分享给大家:Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等技术内容,立即学习

前言

做音视频开发必然要学习的一个开源项目那一定是 FFmpeg。我们可以使用 FFmpeg 来进行多种格式音频和视频的录制、转换、流处理功能。

接下来用几篇文章简单入门一下 FFmpeg,包括基本的 ffmpeg ffplay 命令行的使用,以及常用 api的使用。

命令行工具

ffmpeg:用于音视频的编解码、格式转换以及拉流转推等媒体流处理工具。
ffplay:基于 SDL 与 ffmpeg 库实现的一个播放器。
ffprobe:音视频分析工具。

二次开发 sdk

libavcodec:编解码库。
libavformat:音视频容器格式以及所支持的协议的封装和解析。
libavutil:提供了一些公共函数,工具库。
libavfilter:音视频的滤镜库,如视频加水印、音频变声等。
libavdevice:支持众多设备数据的输入与输出,如读取摄像头数据、屏幕录制。
libswresample:提供音频的重采样工具库。
libswscale:提供对视频图像进行色彩转换、缩放以及像素格式转换,如图像的 YUV 转换。
libpostproc:多媒体后处理器。

媒体解封装

\FFmpeg\doc\examples\demuxing_decoding.c

视频的编解码

\FFmpeg\doc\examples\decode_video.c
\FFmpeg\doc\examples\encode_video.c

音频的编解码

\FFmpeg\doc\examples\decode_audio.c
\FFmpeg\doc\examples\encode_audio.c

硬件解码

\FFmpeg\doc\examples\hw_decode.c

媒体封装

\FFmpeg\doc\examples\muxing.c

总结

ffmpeg 最牛逼的地方是支持丰富的流媒体协议,以及音视频编解码格式。不算太复杂,参考**\doc\examples** 下面的 demo程序可以很方便的入门基于 ffmpeg api二次开发。

耐心一点,多看demo 多读文档。

2022/02/11 开启《FFmpeg入门到放弃》系列文章。

个人工作中的一些经验分享,难免有错误的地方,如果有欢迎指出。

若有帮助幸甚。


  1. 本文部分技术点出处:FFmpeg/WebRTC/RTMP/NDK/Android音视频流媒体高级开发
  2. ffmpeg change log :https://github.com/FFmpeg/FFmpeg/blob/master/Changelog
  3. FFmpeg官方文档:https://ffmpeg.org/documentation.html
这篇关于【FFmpeg入门到放弃】ffmpeg 整体架构和 example demo入门的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!