FFmpeg

来源:互联网 发布:青果软件 漏洞 编辑:程序博客网 时间:2024/06/01 09:05

雷霄骅 FFmpeg 源代码简单分析 : av_register_all()

在翻阅av_register_all()源码时发现与雷霄骅博文中所述的不太一样,在新版FFmpeg中的av_register_all()函数中并没有关于register protocol相关的代码。

经过查阅后发现是将注册Protocol的过程转化成了静态数组类型,主要位于protocols.c文件中。

extern const URLProtocol ff_async_protocol;extern const URLProtocol ff_bluray_protocol;extern const URLProtocol ff_cache_protocol;extern const URLProtocol ff_concat_protocol;extern const URLProtocol ff_crypto_protocol;extern const URLProtocol ff_data_protocol;extern const URLProtocol ff_ffrtmpcrypt_protocol;extern const URLProtocol ff_ffrtmphttp_protocol;extern const URLProtocol ff_file_protocol;extern const URLProtocol ff_ftp_protocol;extern const URLProtocol ff_gopher_protocol;extern const URLProtocol ff_hls_protocol;extern const URLProtocol ff_http_protocol;extern const URLProtocol ff_httpproxy_protocol;extern const URLProtocol ff_https_protocol;extern const URLProtocol ff_icecast_protocol;extern const URLProtocol ff_mmsh_protocol;extern const URLProtocol ff_mmst_protocol;extern const URLProtocol ff_md5_protocol;extern const URLProtocol ff_pipe_protocol;extern const URLProtocol ff_prompeg_protocol;extern const URLProtocol ff_rtmp_protocol;extern const URLProtocol ff_rtmpe_protocol;extern const URLProtocol ff_rtmps_protocol;extern const URLProtocol ff_rtmpt_protocol;extern const URLProtocol ff_rtmpte_protocol;extern const URLProtocol ff_rtmpts_protocol;extern const URLProtocol ff_rtp_protocol;extern const URLProtocol ff_sctp_protocol;extern const URLProtocol ff_srtp_protocol;extern const URLProtocol ff_subfile_protocol;extern const URLProtocol ff_tee_protocol;extern const URLProtocol ff_tcp_protocol;extern const URLProtocol ff_tls_gnutls_protocol;extern const URLProtocol ff_tls_schannel_protocol;extern const URLProtocol ff_tls_securetransport_protocol;extern const URLProtocol ff_tls_openssl_protocol;extern const URLProtocol ff_udp_protocol;extern const URLProtocol ff_udplite_protocol;extern const URLProtocol ff_unix_protocol;extern const URLProtocol ff_librtmp_protocol;extern const URLProtocol ff_librtmpe_protocol;extern const URLProtocol ff_librtmps_protocol;extern const URLProtocol ff_librtmpt_protocol;extern const URLProtocol ff_librtmpte_protocol;extern const URLProtocol ff_libssh_protocol;extern const URLProtocol ff_libsmbclient_protocol;#include "../libavformat/protocol_list.c"

其中在protocol_list.c文件中声明了URLProtocol *url_protocols[]全局数组。

protocol_list.c文件如下:

static const URLProtocol *url_protocols[] = {    &ff_async_protocol,    &ff_cache_protocol,    &ff_concat_protocol,    &ff_crypto_protocol,    &ff_data_protocol,    &ff_ffrtmphttp_protocol,    &ff_file_protocol,    &ff_ftp_protocol,    &ff_gopher_protocol,    &ff_hls_protocol,    &ff_http_protocol,    &ff_httpproxy_protocol,    &ff_https_protocol,    &ff_icecast_protocol,    &ff_mmsh_protocol,    &ff_mmst_protocol,    &ff_md5_protocol,    &ff_pipe_protocol,    &ff_prompeg_protocol,    &ff_rtmp_protocol,    &ff_rtmps_protocol,    &ff_rtmpt_protocol,    &ff_rtmpts_protocol,    &ff_rtp_protocol,    &ff_srtp_protocol,    &ff_subfile_protocol,    &ff_tee_protocol,    &ff_tcp_protocol,    &ff_tls_securetransport_protocol,    &ff_udp_protocol,    &ff_udplite_protocol,    &ff_unix_protocol,    NULL };
0 0
原创粉丝点击