ffmpeg之rtmp分析(一)

来源:互联网 发布:centos 编辑文件 编辑:程序博客网 时间:2024/06/05 22:47

ffmpeg自身写了一个的支持rtmp协议的代码,与rtmp对应的AVInputFormat为:

AVInputFormat ff_flv_demuxer = {    .name           = "flv",    .long_name      = NULL_IF_CONFIG_SMALL("FLV (Flash Video)"),    .priv_data_size = sizeof(FLVContext),    .read_probe     = flv_probe,    .read_header    = flv_read_header,    .read_packet    = flv_read_packet,    .read_seek      = flv_read_seek,    .read_close     = flv_read_close,    .extensions     = "flv",    .priv_class     = &flv_class,};

在文件libavformat/flvdec.c中

对应的URLProtocol为:

#define RTMP_PROTOCOL(flavor)                    \static const AVClass flavor##_class = {          \    .class_name = #flavor,                       \    .item_name  = av_default_item_name,          \    .option     = rtmp_options,                  \    .version    = LIBAVUTIL_VERSION_INT,         \};                                               \                                                 \const URLProtocol ff_##flavor##_protocol = {     \    .name           = #flavor,                   \    .url_open       = rtmp_open,                 \    .url_read       = rtmp_read,                 \    .url_read_seek  = rtmp_seek,                 \    .url_read_pause = rtmp_pause,                \    .url_write      = rtmp_write,                \    .url_close      = rtmp_close,                \    .priv_data_size = sizeof(RTMPContext),       \    .flags          = URL_PROTOCOL_FLAG_NETWORK, \    .priv_data_class= &flavor##_class,           \};RTMP_PROTOCOL(rtmp)RTMP_PROTOCOL(rtmpe)RTMP_PROTOCOL(rtmps)RTMP_PROTOCOL(rtmpt)RTMP_PROTOCOL(rtmpte)RTMP_PROTOCOL(rtmpts)

在文件libavformat/rtmpproto.c中

原创粉丝点击