avformat_network_init()解析备忘

发布时间 2023-09-22 23:44:56作者: 远桥

基于ffmpeg-6.0.

avformat_network_init()函数定义如下:

int avformat_network_init(void)
{
#if CONFIG_NETWORK
    int ret;
    if ((ret = ff_network_init()) < 0)
        return ret;
    if ((ret = ff_tls_init()) < 0)
        return ret;
#endif
    return 0;
}
可以看出来通过调用ff_network_init()和ff_tls_init()来完成初始化,
其中,ff_network_init定义如下,可见其主要用于windows平台下socket通信初始化。Linux平台无需初始化。
int ff_network_init(void)
{
#if HAVE_WINSOCK2_H
    WSADATA wsaData;

    if (WSAStartup(MAKEWORD(1,1), &wsaData))
        return 0;
#endif
    return 1;
}
其中,ff_tls_init定义如下,可见其主要是用于初始化ssl安全通信的。
void ff_tls_deinit(void)
{
#if CONFIG_TLS_PROTOCOL
#if CONFIG_OPENSSL
    ff_openssl_deinit();
#endif
#if CONFIG_GNUTLS
    ff_gnutls_deinit();
#endif
#endif
}
换句话说就是,所谓的avformat_network_init主要就是初始化win socket和openssl。但是由于我使用linux(ubuntu),未使用openssl支持,所以该函数对我平台没有任何意义。