FFmpeg的常用函数—FFmpeg API教程

作者:罗上文,微信:Loken1,公众号:FFmpeg弦外之音

本文的代码下载地址:GitHub,这个项目应该去掉,直接用 ffmpeg.c 里面进行调试。


FFmpeg 是一个 C语言的项目,C语言标准库的功能比较简陋,所以很多东西都要自己写,造轮子。FFmpeg 已经造了不少轮子,很多很好用的函数,本文就来介绍这些常用的函数。

PS:后续会不断补充相关函数,读者也可以提意见 补充相关函数的讲解。


1,av_strdup,复制字符串函数

av_strdup 函数可以很方便的创建一个字符串变量,这个变量是在堆上的,需要自己释放内存。下面对比一下原生的方式跟 用 av_strdup 的方式。

  //原生方式
  name = malloc(100);
  strcpy(name,"loken-ffmpeg");
  free(name);
  --------------------
  name = av_strdup("loken-ffmpeg");
  av_freep(name);

可以看到,av_strdup 非常地简洁,而且他内部是用的 realloc。正式代码如下:

1-1


2,av_new_packet,初始化 AVPacket

av_new_packet() 函数可以给 AVPacket 申请 data 字段的内存,并且初始化一些字段,非常好用。

int av_new_packet(AVPacket *pkt, int size)
{
    AVBufferRef *buf = NULL;
    int ret = packet_alloc(&buf, size);
    if (ret < 0)
        return ret;

    get_packet_defaults(pkt);
    pkt->buf      = buf;
    pkt->data     = buf->data;
    pkt->size     = size;

    return 0;
}

待分析函数:

1,av_frame_get_bufferav_image_fill_arrays

2,avio_find_protocol_name

当你想知道一个 URL 字符串是什么协议的时候,通过 avio_find_protocol_name 接口就能得到协议的名称,例如 http、rtmp、rtsp 等。




感谢 NETINT(镕铭微电子) 赞助《FFmpeg原理》免费版一书的服务器费用,下面是 VPU 产品介绍

版权所属 xianwanzhiyin.net 罗上文 2024 all right reserved,powered by Gitbook该文件修订时间: 2023-06-17 13:19:56

results matching ""

    No results matching ""