亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ffserver.c

?? 現在關于h.264的源碼很多
?? C
?? 第 1 頁 / 共 5 頁
字號:
    ByteIOContext pb1, *pb = &pb1;    if (url_open_dyn_buf(pb) < 0) {        /* XXX: return an error ? */        c->buffer_ptr = c->buffer;        c->buffer_end = c->buffer;        return;    }    url_fprintf(pb, "HTTP/1.0 200 OK\r\n");    url_fprintf(pb, "Content-type: %s\r\n", "text/html");    url_fprintf(pb, "Pragma: no-cache\r\n");    url_fprintf(pb, "\r\n");    url_fprintf(pb, "<HEAD><TITLE>FFServer Status</TITLE>\n");    if (c->stream->feed_filename) {        url_fprintf(pb, "<link rel=\"shortcut icon\" href=\"%s\">\n", c->stream->feed_filename);    }    url_fprintf(pb, "</HEAD>\n<BODY>");    url_fprintf(pb, "<H1>FFServer Status</H1>\n");    /* format status */    url_fprintf(pb, "<H2>Available Streams</H2>\n");    url_fprintf(pb, "<TABLE cellspacing=0 cellpadding=4>\n");    url_fprintf(pb, "<TR><Th valign=top>Path<th align=left>Served<br>Conns<Th><br>bytes<Th valign=top>Format<Th>Bit rate<br>kbits/s<Th align=left>Video<br>kbits/s<th><br>Codec<Th align=left>Audio<br>kbits/s<th><br>Codec<Th align=left valign=top>Feed\n");    stream = first_stream;    while (stream != NULL) {        char sfilename[1024];        char *eosf;        if (stream->feed != stream) {            pstrcpy(sfilename, sizeof(sfilename) - 10, stream->filename);            eosf = sfilename + strlen(sfilename);            if (eosf - sfilename >= 4) {                if (strcmp(eosf - 4, ".asf") == 0) {                    strcpy(eosf - 4, ".asx");                } else if (strcmp(eosf - 3, ".rm") == 0) {                    strcpy(eosf - 3, ".ram");                } else if (stream->fmt == &rtp_mux) {                    /* generate a sample RTSP director if                       unicast. Generate an SDP redirector if                       multicast */                    eosf = strrchr(sfilename, '.');                    if (!eosf)                        eosf = sfilename + strlen(sfilename);                    if (stream->is_multicast)                        strcpy(eosf, ".sdp");                    else                        strcpy(eosf, ".rtsp");                }            }            url_fprintf(pb, "<TR><TD><A HREF=\"/%s\">%s</A> ",                         sfilename, stream->filename);            url_fprintf(pb, "<td align=right> %d <td align=right> ",                        stream->conns_served);            fmt_bytecount(pb, stream->bytes_served);            switch(stream->stream_type) {            case STREAM_TYPE_LIVE:                {                    int audio_bit_rate = 0;                    int video_bit_rate = 0;                    const char *audio_codec_name = "";                    const char *video_codec_name = "";                    const char *audio_codec_name_extra = "";                    const char *video_codec_name_extra = "";                    for(i=0;i<stream->nb_streams;i++) {                        AVStream *st = stream->streams[i];                        AVCodec *codec = avcodec_find_encoder(st->codec->codec_id);                        switch(st->codec->codec_type) {                        case CODEC_TYPE_AUDIO:                            audio_bit_rate += st->codec->bit_rate;                            if (codec) {                                if (*audio_codec_name)                                    audio_codec_name_extra = "...";                                audio_codec_name = codec->name;                            }                            break;                        case CODEC_TYPE_VIDEO:                            video_bit_rate += st->codec->bit_rate;                            if (codec) {                                if (*video_codec_name)                                    video_codec_name_extra = "...";                                video_codec_name = codec->name;                            }                            break;                        case CODEC_TYPE_DATA:                            video_bit_rate += st->codec->bit_rate;                            break;                        default:                            av_abort();                        }                    }                    url_fprintf(pb, "<TD align=center> %s <TD align=right> %d <TD align=right> %d <TD> %s %s <TD align=right> %d <TD> %s %s",                                 stream->fmt->name,                                 stream->bandwidth,                                 video_bit_rate / 1000, video_codec_name, video_codec_name_extra,                                 audio_bit_rate / 1000, audio_codec_name, audio_codec_name_extra);                    if (stream->feed) {                        url_fprintf(pb, "<TD>%s", stream->feed->filename);                    } else {                        url_fprintf(pb, "<TD>%s", stream->feed_filename);                    }                    url_fprintf(pb, "\n");                }                break;            default:                url_fprintf(pb, "<TD align=center> - <TD align=right> - <TD align=right> - <td><td align=right> - <TD>\n");                break;            }        }        stream = stream->next;    }    url_fprintf(pb, "</TABLE>\n");    stream = first_stream;    while (stream != NULL) {        if (stream->feed == stream) {            url_fprintf(pb, "<h2>Feed %s</h2>", stream->filename);            if (stream->pid) {                url_fprintf(pb, "Running as pid %d.\n", stream->pid);#if defined(linux) && !defined(CONFIG_NOCUTILS)                {                    FILE *pid_stat;                    char ps_cmd[64];                    /* This is somewhat linux specific I guess */                    snprintf(ps_cmd, sizeof(ps_cmd),                             "ps -o \"%%cpu,cputime\" --no-headers %d",                             stream->pid);                    pid_stat = popen(ps_cmd, "r");                    if (pid_stat) {                        char cpuperc[10];                        char cpuused[64];                        if (fscanf(pid_stat, "%10s %64s", cpuperc,                                   cpuused) == 2) {                            url_fprintf(pb, "Currently using %s%% of the cpu. Total time used %s.\n",                                         cpuperc, cpuused);                        }                        fclose(pid_stat);                    }                }#endif                url_fprintf(pb, "<p>");            }            url_fprintf(pb, "<table cellspacing=0 cellpadding=4><tr><th>Stream<th>type<th>kbits/s<th align=left>codec<th align=left>Parameters\n");            for (i = 0; i < stream->nb_streams; i++) {                AVStream *st = stream->streams[i];                AVCodec *codec = avcodec_find_encoder(st->codec->codec_id);                const char *type = "unknown";                char parameters[64];                parameters[0] = 0;                switch(st->codec->codec_type) {                case CODEC_TYPE_AUDIO:                    type = "audio";                    break;                case CODEC_TYPE_VIDEO:                    type = "video";                    snprintf(parameters, sizeof(parameters), "%dx%d, q=%d-%d, fps=%d", st->codec->width, st->codec->height,                                st->codec->qmin, st->codec->qmax, st->codec->time_base.den / st->codec->time_base.num);                    break;                default:                    av_abort();                }                url_fprintf(pb, "<tr><td align=right>%d<td>%s<td align=right>%d<td>%s<td>%s\n",                        i, type, st->codec->bit_rate/1000, codec ? codec->name : "", parameters);            }            url_fprintf(pb, "</table>\n");        }        stream = stream->next;    }#if 0    {        float avg;        AVCodecContext *enc;        char buf[1024];        /* feed status */        stream = first_feed;        while (stream != NULL) {            url_fprintf(pb, "<H1>Feed '%s'</H1>\n", stream->filename);            url_fprintf(pb, "<TABLE>\n");            url_fprintf(pb, "<TR><TD>Parameters<TD>Frame count<TD>Size<TD>Avg bitrate (kbits/s)\n");            for(i=0;i<stream->nb_streams;i++) {                AVStream *st = stream->streams[i];                FeedData *fdata = st->priv_data;                enc = st->codec;                avcodec_string(buf, sizeof(buf), enc);                avg = fdata->avg_frame_size * (float)enc->rate * 8.0;                if (enc->codec->type == CODEC_TYPE_AUDIO && enc->frame_size > 0)                    avg /= enc->frame_size;                url_fprintf(pb, "<TR><TD>%s <TD> %d <TD> %Ld <TD> %0.1f\n",                             buf, enc->frame_number, fdata->data_count, avg / 1000.0);            }            url_fprintf(pb, "</TABLE>\n");            stream = stream->next_feed;        }    }#endif    /* connection status */    url_fprintf(pb, "<H2>Connection Status</H2>\n");    url_fprintf(pb, "Number of connections: %d / %d<BR>\n",                 nb_connections, nb_max_connections);    url_fprintf(pb, "Bandwidth in use: %dk / %dk<BR>\n",                 current_bandwidth, max_bandwidth);    url_fprintf(pb, "<TABLE>\n");    url_fprintf(pb, "<TR><th>#<th>File<th>IP<th>Proto<th>State<th>Target bits/sec<th>Actual bits/sec<th>Bytes transferred\n");    c1 = first_http_ctx;    i = 0;    while (c1 != NULL) {        int bitrate;        int j;        bitrate = 0;        if (c1->stream) {            for (j = 0; j < c1->stream->nb_streams; j++) {                if (!c1->stream->feed) {                    bitrate += c1->stream->streams[j]->codec->bit_rate;                } else {                    if (c1->feed_streams[j] >= 0) {                        bitrate += c1->stream->feed->streams[c1->feed_streams[j]]->codec->bit_rate;                    }                }            }        }        i++;        p = inet_ntoa(c1->from_addr.sin_addr);        url_fprintf(pb, "<TR><TD><B>%d</B><TD>%s%s<TD>%s<TD>%s<TD>%s<td align=right>",                    i,                    c1->stream ? c1->stream->filename : "",                    c1->state == HTTPSTATE_RECEIVE_DATA ? "(input)" : "",                    p,                    c1->protocol,                    http_state[c1->state]);        fmt_bytecount(pb, bitrate);        url_fprintf(pb, "<td align=right>");        fmt_bytecount(pb, compute_datarate(&c1->datarate, c1->data_count) * 8);        url_fprintf(pb, "<td align=right>");        fmt_bytecount(pb, c1->data_count);        url_fprintf(pb, "\n");        c1 = c1->next;    }    url_fprintf(pb, "</TABLE>\n");    /* date */    ti = time(NULL);    p = ctime(&ti);    url_fprintf(pb, "<HR size=1 noshade>Generated at %s", p);    url_fprintf(pb, "</BODY>\n</HTML>\n");    len = url_close_dyn_buf(pb, &c->pb_buffer);    c->buffer_ptr = c->pb_buffer;    c->buffer_end = c->pb_buffer + len;}/* check if the parser needs to be opened for stream i */static void open_parser(AVFormatContext *s, int i){    AVStream *st = s->streams[i];    AVCodec *codec;    if (!st->codec->codec) {        codec = avcodec_find_decoder(st->codec->codec_id);        if (codec && (codec->capabilities & CODEC_CAP_PARSE_ONLY)) {            st->codec->parse_only = 1;            if (avcodec_open(st->codec, codec) < 0) {                st->codec->parse_only = 0;            }        }    }}static int open_input_stream(HTTPContext *c, const char *info){    char buf[128];    char input_filename[1024];    AVFormatContext *s;    int buf_size, i;    int64_t stream_pos;    /* find file name */    if (c->stream->feed) {        strcpy(input_filename, c->stream->feed->feed_filename);        buf_size = FFM_PACKET_SIZE;        /* compute position (absolute time) */        if (find_info_tag(buf, sizeof(buf), "date", info)) {            stream_pos = parse_date(buf, 0);        } else if (find_info_tag(buf, sizeof(buf), "buffer", info)) {            int prebuffer = strtol(buf, 0, 10);            stream_pos = av_gettime() - prebuffer * (int64_t)1000000;        } else {            stream_pos = av_gettime() - c->stream->prebuffer * (int64_t)1000;        }    } else {        strcpy(input_filename, c->stream->feed_filename);        buf_size = 0;        /* compute position (relative time) */        if (find_info_tag(buf, sizeof(buf), "date", info)) {            stream_pos = parse_date(buf, 1);        } else {            stream_pos = 0;        }    }    if (input_filename[0] == '\0')        return -1;#if 0    { time_t when = stream_pos / 1000000;    http_log("Stream pos = %lld, time=%s", stream_pos, ctime(&when));    }#endif    /* open stream */    if (av_open_input_file(&s, input_filename, c->stream->ifmt,                           buf_size, c->stream->ap_in) < 0) {        http_log("%s not found", input_filename);        return -1;    }    c->fmt_in = s;    /* open each parser */    for(i=0;i<s->nb_streams;i++)        open_parser(s, i);    /* choose stream as clock source (we favorize video stream if       present) for packet sending */    c->pts_stream_index = 0;    for(i=0;i<c->stream->nb_streams;i++) {        if (c->pts_stream_index == 0 &&            c->stream->streams[i]->codec->codec_type == CODEC_TYPE_VIDEO) {            c->pts_stream_index = i;        }    }#if 1    if (c->fmt_in->iformat->read_seek) {        c->fmt_in->iformat->read_seek(c->fmt_in, 0, stream_pos, 0);    }#endif    /* set the start time (needed for maxtime and RTP packet timing) */    c->start_time = cur_time;    c->first_pts = AV_NOPTS_VALUE;    return 0;}/* return the server clock (in us) */static int64_t get_server_clock(HTTPContext *c){    /* compute current pts value from system time */    return (int64_t)(cur_time - c->start_time) * 1000LL;}/* return the estimated time at which the current packet must be sent   (in us) */static int64_t get_packet_send_clock(HTTPContext *c){    int bytes_left, bytes_sent, frame_bytes;    frame_bytes = c->cur_frame_bytes;    if (frame_bytes <= 0) {        return c->cur_pts;    } else {        bytes_left = c->buffer_end - c->buffer_ptr;        bytes_sent = frame_bytes - bytes_left;        return c->cur_pts + (c->cur_frame_duration * bytes_sent) / frame_bytes;    }}static int http_prepare_data(HTTPContext *c){    int i, len, ret;    AVFormatContext *ctx;    av_freep(&c->pb_buffer);    switch(c->state) {    case HTTPSTATE_SEND_DATA_HEADER:        memset(&c->fmt_ctx, 0, sizeof(c->fmt_ctx));        pstrcpy(c->fmt_ctx.author, sizeof(c->fmt_ctx.author),                c->

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91麻豆精品视频| 青青草国产精品97视觉盛宴| 久久精品一区二区三区不卡| 中文在线免费一区三区高中清不卡| 亚洲视频1区2区| 亚洲二区在线观看| 国产成人午夜视频| 欧美军同video69gay| 国产视频一区二区在线| 粗大黑人巨茎大战欧美成人| 欧美日韩免费视频| 中文字幕av一区 二区| av在线不卡电影| 久久久久久一二三区| 天堂精品中文字幕在线| www.成人网.com| 亚洲黄色性网站| 成人涩涩免费视频| 一区二区三区在线免费| 成人激情综合网站| 久久精品欧美一区二区三区不卡| 国产iv一区二区三区| 26uuu另类欧美| 美女国产一区二区| 欧美日韩成人在线一区| 亚洲自拍另类综合| 一本大道综合伊人精品热热| 精品卡一卡二卡三卡四在线| 亚洲h在线观看| 精品视频资源站| 久久成人免费网| 欧美一区二区三区免费在线看 | 亚洲精品成人悠悠色影视| 欧美性受xxxx| 一二三四区精品视频| 日韩精品在线一区| 精品一区二区三区视频在线观看 | 国产盗摄一区二区三区| 亚洲精品欧美激情| 精品国产亚洲一区二区三区在线观看| 青青草一区二区三区| 国产精品热久久久久夜色精品三区| 国产精一品亚洲二区在线视频| 欧美第一区第二区| 一本在线高清不卡dvd| 久久精品国产秦先生| 亚洲欧美日韩中文播放| 欧美自拍偷拍一区| 日韩精品久久理论片| 中文字幕一区三区| 欧美在线播放高清精品| 国产精品18久久久久久久久久久久 | 久久国产欧美日韩精品| 一区二区三区在线影院| 欧美高清在线一区| 精品国产乱码91久久久久久网站| 在线观看三级视频欧美| 成人做爰69片免费看网站| 蜜臀久久99精品久久久久久9| 尤物在线观看一区| 国产精品九色蝌蚪自拍| 色婷婷狠狠综合| 成人午夜视频在线观看| 久久99热这里只有精品| 日日夜夜免费精品| 亚洲一区二区三区爽爽爽爽爽| 欧美国产综合一区二区| 欧美大片一区二区三区| 制服丝袜在线91| 国产成人免费高清| 国产在线播放一区三区四| 国产精品丝袜一区| 国产日韩欧美a| 欧美日韩国产乱码电影| 在线观看一区不卡| 在线国产电影不卡| 欧美午夜精品久久久| 色吊一区二区三区| 国产在线观看一区二区| 蜜桃av一区二区三区电影| 美女诱惑一区二区| 麻豆精品在线播放| 另类成人小视频在线| 久热成人在线视频| 激情六月婷婷久久| 亚洲第一成人在线| 成人毛片在线观看| 国产成人av一区二区三区在线| 黄网站免费久久| 久久99国产乱子伦精品免费| 麻豆一区二区三| 国产精品一区三区| 波多野结衣在线aⅴ中文字幕不卡| 国产白丝网站精品污在线入口| 国产黄色精品视频| 91在线视频官网| 久久av老司机精品网站导航| 国产真实乱子伦精品视频| 国产老妇另类xxxxx| 成人av午夜电影| 欧美午夜精品免费| 日韩欧美精品在线视频| 国产日韩欧美制服另类| 亚洲欧美日韩小说| 日韩高清在线观看| 亚洲国产欧美另类丝袜| 日本特黄久久久高潮| 国产精品一级在线| 91网站黄www| 日韩一区二区高清| 精品视频一区三区九区| 欧美mv和日韩mv国产网站| 国产视频911| 亚洲一区二区av电影| 久久99久久久欧美国产| av一二三不卡影片| 欧美一区二区三区视频免费| 久久久高清一区二区三区| 亚洲青青青在线视频| 美女网站色91| 99久久伊人精品| 欧美日韩不卡一区二区| 欧美经典一区二区三区| 欧美xxxxx裸体时装秀| 日韩理论片网站| 久久精品久久精品| 色综合咪咪久久| 精品国产91乱码一区二区三区| 最好看的中文字幕久久| 日本成人在线视频网站| www.成人在线| 久久综合资源网| 一区二区不卡在线视频 午夜欧美不卡在 | 亚洲成国产人片在线观看| 国内久久精品视频| 欧美美女直播网站| 中文字幕中文字幕中文字幕亚洲无线| 日韩精品亚洲一区二区三区免费| 国产白丝精品91爽爽久久| 欧美日韩久久一区二区| 国产精品久久久久久久久晋中 | 久久久另类综合| 亚洲成人777| www.欧美色图| 国产偷国产偷精品高清尤物 | 欧美日韩综合不卡| 亚洲欧美综合网| 国产精品影音先锋| 91精品国产色综合久久| 一区二区三区免费| 岛国精品一区二区| 精品国一区二区三区| 婷婷夜色潮精品综合在线| 久久激情五月激情| 欧美日本韩国一区二区三区视频| 日韩毛片精品高清免费| 粉嫩绯色av一区二区在线观看| 精品三级av在线| 伦理电影国产精品| 欧美一级生活片| 日日夜夜精品视频免费| 欧美日韩久久一区二区| 亚洲动漫第一页| 在线免费av一区| 一区二区三区精密机械公司| 不卡av电影在线播放| 日本一区二区三区电影| 国产精品一区不卡| 欧美国产亚洲另类动漫| 国产精品亚洲第一区在线暖暖韩国| 精品国产伦一区二区三区观看体验 | 精品精品欲导航| 久久国产精品色婷婷| 日韩欧美亚洲国产另类| 日本美女一区二区| 精品欧美乱码久久久久久1区2区| 美国十次了思思久久精品导航| 日韩一卡二卡三卡| 久久99国产精品麻豆| 精品久久国产字幕高潮| 国产福利一区二区| 国产精品网曝门| 一本久道久久综合中文字幕| 亚洲免费在线看| 欧美日韩免费一区二区三区| 天堂成人国产精品一区| 精品国产自在久精品国产| 精品一区二区在线免费观看| 久久久精品黄色| hitomi一区二区三区精品| 亚洲黄色尤物视频| 欧美一级片在线观看| 久久99国内精品| 国产精品欧美一区二区三区| 91视频免费播放| 视频一区视频二区中文字幕| 久久综合九色综合欧美98| 成人国产免费视频| 亚洲成人午夜电影| 久久午夜免费电影|