zoukankan      html  css  js  c++  java
  • (原)关于获取ffmpeg解析rtsp流sdp中带有sps,pps的情况

     转载请注明出处:http://www.cnblogs.com/lihaiping/p/6612511.html

    今天同事准备在android下使用ffmpeg来获取rtsp流,问我如何获取获取sps和pps的情况?
    因为尽管使用ffmpeg做项目还算熟悉,但用ffmpeg作rtsp client我还真没用过,虽然知道ffmpeg支持rtsp,但一般rtsp client我还是选择自己实现。
    使用ffmpeg做rtsp client的在这种情况下,如果rtsp的pps,sps在sdp中带有的话,我们应该从ffmpeg中的哪个字段中提取?
    当我们打开一个文件或者流的时候,一般流程为:

    //打开
    err = avformat_open_input(&ic, is->filename, is->iformat, &format_opts);
    //探测
    err = avformat_find_stream_info(ic, opts);
    //查找流
    for (i = 0; i < ic->nb_streams; i++) {
    AVStream *st = ic->streams[i];
    enum AVMediaType type = st->codec->codec_type;
    st->discard = AVDISCARD_ALL;
    if (wanted_stream_spec[type] && st_index[type] == -1)
    if (avformat_match_stream_specifier(ic, st, wanted_stream_spec[type]) > 0)
    st_index[type] = i;
    }

    我们使用了avformat_open_input函数,这个函数的第一个参数为AVFormatContext**p,而我们很多信息都是从这个结构体中获取出来的。
    具体的字段为:
    ic->streams[i]->codeccontex->extradata
    具体的代码为rtpdec_h264.c文件

    整个线索分析流程为:rtsp.c
    sdp_read_header
      ----ff_sdp_parse
        ----sdp_parse_line
          -----parse_fmtp
            ----parse_sdp_a_line------>parse_h264_sdp_line
                            --------ff_parse_fmtp

  • 相关阅读:
    URAL 2067 Friends and Berries (推理,数学)
    URAL 2070 Interesting Numbers (找规律)
    URAL 2073 Log Files (模拟)
    URAL 2069 Hard Rock (最短路)
    URAL 2068 Game of Nuts (博弈)
    URAL 2066 Simple Expression (水题,暴力)
    URAL 2065 Different Sums (找规律)
    UVa 1640 The Counting Problem (数学,区间计数)
    UVa 1630 Folding (区间DP)
    UVa 1629 Cake slicing (记忆化搜索)
  • 原文地址:https://www.cnblogs.com/lihaiping/p/6612511.html
Copyright © 2011-2022 走看看