一. FFmpeg命令行

1. FFmpeg如何查询命令帮助文档

2. FFmpeg音视频处理流程

3. FFmpeg命令分类查询

4. ffplay播放控制

①键鼠控制

②命令行控制

5. ffplay命令播放媒体

6. ffplay简单过滤器

7. ffmpeg命令参数说明

8. ffmpeg命令提取音视频数据

9. ffmpeg命令提取像素格式和PCM数据

①ffmpeg命令提取像素格式

②ffmpeg命令提取PCM数据

10. ffmpeg命令转封装

11. ffmpeg命令裁剪和合并视频

①生成测试文件

②开始拼接文件

③测试不同编码拼接

12. fmpeg命令图片与视频互转

13. ffmpeg命令视频录制

①录制

  • ffmpeg新版不支持这个工具,但是工具自带旧版ffmpeg:D:\AbzyA\CPP\FFmpeg\Screen Capturer Recorder\Screen Capturer Recorder\configuration_setup_utility\vendor\ffmpeg\bin\ffmpeg.exe

②参数

  • 指定参数录制音视频

14. ffmpeg命令直播

  • 推流:将本地音视频数据传输到远程服务器,用于直播。

  • 拉流:从远程服务器接收音视频数据并播放或处理,用于观看直播或点播视频。

15. ffmpeg过滤器

①filter的分类

②视频过滤器(滤镜):裁剪

  • 可用ffplay先看裁剪效果。

③FFmpeg滤镜Filter内置变量

④添加水印

  • 文字水印

  • FFmpeg生成画中画

  • FFmpeg视频多宫格处理

二. SDL

1. 简介

2. SDL子系统

3. Window显示:SDL视频显示函数简介

4. SDL事件

5. SDL线程

6. YUV显示:SDL视频显示的流程

7. SDL播放音频PCM

三. FFmpeg编程入门

1. 播放器框架

2. 常用音视频术语

3. FFmpeg库简介

4. FFmpeg函数简介

  • 封装格式相关

  • 解码器相关

5. 组件注册方式

  • FFmpeg 3.x:

  • FFmpeg 4.x 组件注册方式

  • FFmpeg 4.0.2 组件注册方式:

6. 数据结构

7. FFmpeg内存模型

  • av_packet_ref一次就要unref一次,不要连续多次ref同一个变量,否则无法释放。比如连续两次ref(p1, p2)(令p1指向p2),后面即使连续两次unref(p1), 也无法使计数为0,因为第一次unref(p1),p1指向的buff就为空了,后面在执行也不会让计数为0。

    frame->nb_samples     = 1024;
    frame->format         = AV_SAMPLE_FMT_S16;//AV_SAMPLE_FMT_S16P AV_SAMPLE_FMT_S16
    frame->channel_layout = AV_CH_LAYOUT_STEREO;    //AV_CH_LAYOUT_MONO AV_CH_LAYOUT_STEREO
    ret = av_frame_get_buffer(frame, 0);    // 根据格式分配内存
    if(frame->buf && frame->buf[0])
        printf("%s(%d) 1 frame->buf[0]->size = %d\n", __FUNCTION__, __LINE__, frame->buf[0]->size);    //受frame->format等参数影响, 看是交错还是分左右声道,AV_SAMPLE_FMT_S16是交错,此时是总大小,AV_SAMPLE_FMT_S16P是分开,buf[0]和buf[1]各一半数据
    if(frame->buf && frame->buf[1])
        printf("%s(%d) 1 frame->buf[1]->size = %d\n", __FUNCTION__, __LINE__, frame->buf[1]->size);    //受frame->format等参数影响

8. FFmpeg解封装

9. AAC ADTS格式分析