【雷神专栏整理】-- ffmpeg

目录

  • 前言
  • 目录
    • 第一章 概论
      • 1.1 如何学习
      • 1.2 helloworld
      • 1.3 ffplay使用
      • 1.4 ffmpeg使用
      • 1.5 通用函数
      • 1.6 常用函数
    • 第二章 结构体
    • 第三章 编解码
      • 3.1 编码
      • 3.2 解码
      • 3.3 相关函数
        • 3.3.1 编码
        • 3.3.2 解码
      • 3.4 H264
        • 3.4.1编码
        • 3.4.2 解码
      • 3.5 HEVC(H265)
        • 3.5.1 解码
    • 第四章 封装与解封装(复用与解复用)
    • 第五章 实战
      • 5.1 推流
      • 5.2 视频播放器
      • 5.3 音频播放器
      • 5.4 移动端:Android & IOS
      • 5.5 内存读写
      • 5.6 编码
      • 5.7 格式转换
      • 5.8 视频网站
      • 5.9 VC工程
      • 5.10 跨平台
      • 5.11 Git
      • 5.12 经验
    • 第六章 类库
      • 6.1 libswcale
      • 6.2 libavfilter
      • 6.3 libavdevice
      • 6.4 libRTMP
      • 6.5 脚本
      • 6.6 杂记
    • 第七章 杂记

前言

本文以雷神的专栏内容为基准,为了更方便个人学习,因此将专栏中的各个内容按照板块进行排序,以个人主观的知识块分章节,仅供参考!需要说明的是ffmpeg已经更新到4.x,ffmpeg中许多函数弃用、更新,雷神的专栏可以作为入门参考,深入学习的话还得自己找资料补充。
最后,感谢雷神的无私分享!

目录

第一章 概论

1.1 如何学习

[总结]FFMPEG视音频编解码零基础学习方法

C语言的面向对象设计 —— 对 X264/FFMPEG 架构探讨

FFmpeg架构之I/O模块分析

1.2 helloworld

最简单的基于FFMPEG的Helloworld程序

1.3 ffplay使用

FFplay源代码分析:整体流程图

ffplay的快捷键以及选项

ffplay.c函数结构简单分析(画图)

1.4 ffmpeg使用

ffmpeg参数中文详细解释

使用FFMPEG类库分离出多媒体文件中的音频码流

FFMPEG类库打开流媒体的方法(需要传参数的时候)

使用FFMPEG类库分离出多媒体文件中的H.264码流

使用FFmpeg类库实现YUV视频序列编码为视频

ffmpeg处理RTMP流媒体的命令大全

FFmpeg获取DirectShow设备数据(摄像头,录屏)

FFmpeg发送流媒体的命令(UDP,RTP,RTMP)

使用批处理脚本(BAT)调用FFMPEG批量编码视频

各种视频编码器的命令行格式

1.5 通用函数

ffmpeg 源代码简单分析 : av_register_all()

1.6 常用函数

FFmpeg源代码简单分析:日志输出系统(av_log()等)

第二章 结构体

FFMPEG中最关键的结构体之间的关系

FFmpeg源代码简单分析:结构体成员管理系统-AVClass

FFmpeg源代码简单分析:结构体成员管理系统-AVOption

FFMPEG结构体分析:AVFormatContext

第三章 编解码

3.1 编码

FFmpeg源代码结构图 - 编码

最简单的基于FFmpeg的编码器-纯净版(不包含libavformat)

最简单的基于FFMPEG的图像编码器(YUV编码为JPEG)

3.2 解码

FFmpeg源代码结构图 - 解码

3.3 相关函数

3.3.1 编码

FFmpeg源代码简单分析:avformat_alloc_output_context2()

3.3.2 解码

图解FFMPEG打开媒体的函数avformat_open_input

3.4 H264

3.4.1编码

x264源代码简单分析:概述

3.4.2 解码

FFmpeg的H.264解码器源代码简单分析:概述

3.5 HEVC(H265)

3.5.1 解码

FFmpeg的HEVC解码器源代码简单分析:概述

第四章 封装与解封装(复用与解复用)

最简单的基于FFmpeg的封装格式处理:视音频复用器(muxer)

最简单的基于FFmpeg的封装格式处理:视音频分离器(demuxer)

最简单的基于FFmpeg的封装格式处理:视音频分离器简化版(demuxer-simple)

第五章 实战

5.1 推流

最简单的基于FFmpeg的推流器(以推送RTMP为例)

最简单的基于FFMPEG的推流器附件:收流器

5.2 视频播放器

《基于 FFmpeg + SDL 的视频播放器的制作》课程的视频

100行代码实现最简单的基于FFMPEG+SDL的视频播放器(SDL1.x)

MFC中使用SDL播放音频没有声音的解决方法

5.3 音频播放器

最简单的基于FFMPEG+SDL的音频播放器

5.4 移动端:Android & IOS

最简单的基于FFmpeg的移动端例子:Android HelloWorld

5.5 内存读写

最简单的基于FFmpeg的内存读写的例子:内存播放器

ffmpeg 从内存中读取数据(或将数据输出到内存)

5.6 编码

最简单的基于FFmpeg的编码器-纯净版(不包含libavformat)

最简单的基于FFMPEG的音频编码器(PCM编码为AAC)

5.7 格式转换

最简单的基于FFMPEG的封装格式转换器(无编解码)

最简单的基于FFMPEG的转码程序

使用FFMPEG类库分离出多媒体文件中的H.264码流

使用FFMPEG类库分离出多媒体文件中的音频码流

5.8 视频网站

最简单的视频网站(JavaEE+FFmpeg)

5.9 VC工程

FFMPEG 库移植到 VC 需要的步骤

ffplay播放器移植VC的工程:ffplay for MFC

ffplay for mfc 代码备忘

ffmpeg转码器移植VC的工程:ffmpeg for MFC

开源实时视频码流分析软件:VideoEye

windows 下使用 MinGW + msys 编译 ffmpeg

5.10 跨平台

FFmpeg示例程序合集-批量编译脚本

5.11 Git

FFmpeg示例程序合集-Git批量获取脚本

5.12 经验

avcodec_decode_video2()解码视频后丢帧的问题解决

方便使用FFMPEG的经验

ffmbc——为广播电视以及专业用途量身定制的FFmpeg

第六章 类库

6.1 libswcale

FFMPEG 实现 YUV,RGB各种图像原始数据之间的转换(swscale)

最简单的基于FFmpeg的libswscale的示例(YUV转RGB)

最简单的基于FFmpeg的libswscale的示例附件:测试图片生成工具

最简单的基于FFMPEG的图像编码器(YUV编码为JPEG)

ffmpeg中的sws_scale算法性能测试

6.2 libavfilter

最简单的基于FFmpeg的AVfilter例子(水印叠加)

最简单的基于FFmpeg的AVfilter的例子-纯净版

6.3 libavdevice

最简单的基于FFmpeg的AVDevice例子(读取摄像头)

最简单的基于FFmpeg的AVDevice例子(屏幕录制)

6.4 libRTMP

在FFMPEG中使用libRTMP的经验

6.5 脚本

FFmpeg源代码简单分析:configure

FFmpeg源代码简单分析:makefile

6.6 杂记

FFMPEG类库打开流媒体的方法(需要传参数的时候)

第七章 杂记

FFMPEG列出DirectShow支持的设备

FFmpeg API 变更记录

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