Hi,<div><br></div><div>I am using libavformat to get the stream information...but there is a problem in getting the total stram information</div><div><br></div><div>here is my code...</div><div><br></div><div><br></div><div>
<br></div><div><div>typedef struct Duration</div><div>{</div><div><span class="Apple-tab-span" style="white-space:pre">       </span>int hours, mins, secs, us;</div><div>}Duration;</div><div><br></div><div>Duration getDuration(AVFormatContext *ic)</div>
<div>{</div><div><span class="Apple-tab-span" style="white-space:pre">      </span>Duration dur;</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>if (ic->duration != AV_NOPTS_VALUE) </div><div><span class="Apple-tab-span" style="white-space:pre">      </span>{</div>
<div>            <span class="Apple-tab-span" style="white-space:pre">  </span>dur.secs = ic->duration / AV_TIME_BASE;</div><div>            <span class="Apple-tab-span" style="white-space:pre">       </span><a href="http://dur.us">dur.us</a> = ic->duration % AV_TIME_BASE;</div>
<div>            <span class="Apple-tab-span" style="white-space:pre">  </span>dur.mins = dur.secs / 60;</div><div>            <span class="Apple-tab-span" style="white-space:pre">        </span>dur.secs %= 60;</div><div>            <span class="Apple-tab-span" style="white-space:pre">  </span>dur.hours = dur.mins / 60;</div>
<div>            <span class="Apple-tab-span" style="white-space:pre">  </span>dur.mins %= 60;</div><div>            <span class="Apple-tab-span" style="white-space:pre">  </span>//printf("%02d:%02d:%02d.%02d", hours, mins, secs,(100 * us) / AV_TIME_BASE);<span class="Apple-tab-span" style="white-space:pre">     </span></div>
<div><span class="Apple-tab-span" style="white-space:pre">      </span>}</div><div><span class="Apple-tab-span" style="white-space:pre">    </span>return dur;</div><div>}</div><div><br></div><div>double getBitrate(AVFormatContext *ic)</div>
<div>{</div><div><span class="Apple-tab-span" style="white-space:pre">      </span>return (ic->bit_rate)? (double)ic->bit_rate / 1000 : 0.0;</div><div>}</div><div><br></div><div>int main(int argc,char **argv)</div><div>{</div>
<div><span class="Apple-tab-span" style="white-space:pre">      </span></div><div><span class="Apple-tab-span" style="white-space:pre">     </span>Duration dur;<span class="Apple-tab-span" style="white-space:pre">       </span></div><div>
<span class="Apple-tab-span" style="white-space:pre"> </span>AVFormatContext *ic=NULL;</div><div><span class="Apple-tab-span" style="white-space:pre">    </span>int bitrate;</div><div>    <span class="Apple-tab-span" style="white-space:pre">     </span></div>
<div><span class="Apple-tab-span" style="white-space:pre">      </span>AVDictionary *tag=NULL;</div><div><span class="Apple-tab-span" style="white-space:pre">      </span>AVDictionaryEntry *elemts = NULL;</div><div><br></div><div>    <span class="Apple-tab-span" style="white-space:pre">       </span>av_register_all();</div>
<div><span class="Apple-tab-span" style="white-space:pre">      </span></div><div><span class="Apple-tab-span" style="white-space:pre">     </span>int is_output = 0;</div><div><span class="Apple-tab-span" style="white-space:pre">   </span>char url[35];</div>
<div><span class="Apple-tab-span" style="white-space:pre">      </span>strcpy(url,argv[1]);</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>if(avformat_open_input(&ic,argv[1],NULL,NULL))</div>
<div><span class="Apple-tab-span" style="white-space:pre">      </span>return -1;<span class="Apple-tab-span" style="white-space:pre">  </span></div><div><span class="Apple-tab-span" style="white-space:pre">     </span></div><div><span class="Apple-tab-span" style="white-space:pre">     </span>avformat_find_stream_info(ic,NULL);</div>
<div><br></div><div><span class="Apple-tab-span" style="white-space:pre">     </span></div><div><span class="Apple-tab-span" style="white-space:pre">     </span>uint8_t *printed = ic->nb_streams ? av_mallocz(ic->nb_streams) : NULL;</div>
<div>    <span class="Apple-tab-span" style="white-space:pre">  </span>if (ic->nb_streams && !printed)</div><div>        return -1;</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre"> </span>printf("%s #%d, %s, %s '%s':\n",is_output ? "Output" : "Input",0,is_output ? ic->oformat->name : ic->iformat->name,is_output ? "to" : "from", url);<span class="Apple-tab-span" style="white-space:pre">   </span></div>
<div><span class="Apple-tab-span" style="white-space:pre">      </span></div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">    </span>printf("\n Duration : ");</div><div>        dur = getDuration(ic);</div>
<div><span class="Apple-tab-span" style="white-space:pre">      </span>printf("%02d:%02d:%02d.%02d %llu\n", dur.hours, dur.mins, dur.secs,(100 * <a href="http://dur.us">dur.us</a>) / AV_TIME_BASE,ic->duration);<span class="Apple-tab-span" style="white-space:pre">      </span></div>
<div><br></div><div><span class="Apple-tab-span" style="white-space:pre">     </span></div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">    </span>int i;</div><div><span class="Apple-tab-span" style="white-space:pre">       </span>printf("\n Chapters : %d",<b>ic->nb_chapters</b>);</div>
<div><span class="Apple-tab-span" style="white-space:pre">      </span>for (i = 0; i < <b>ic->nb_chapters</b>; i++) </div><div><span class="Apple-tab-span" style="white-space:pre">      </span>{</div><div><span class="Apple-tab-span" style="white-space:pre">    </span>        AVChapter *ch = ic->chapters[i];</div>
<div><span class="Apple-tab-span" style="white-space:pre">      </span>        printf("Chapter #%d.%d: ", 0, i);</div><div><span class="Apple-tab-span" style="white-space:pre">  </span>        printf("start %f, ", ch->start * av_q2d(ch->time_base));</div>
<div><span class="Apple-tab-span" style="white-space:pre">      </span>        printf("end %f\n",ch->end*av_q2d(ch->time_base));</div><div><span class="Apple-tab-span" style="white-space:pre">    </span>}</div><div>
<br></div><div><br></div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">      </span>bitrate = getBitrate(ic);</div><div><span class="Apple-tab-span" style="white-space:pre">    </span>printf("\n Bitrate : %d kb/s.",bitrate);</div>
<div><br></div><div><span class="Apple-tab-span" style="white-space:pre">     </span>if(ic-><b>nb_programs</b>) </div><div><span class="Apple-tab-span" style="white-space:pre">   </span>{</div><div><span class="Apple-tab-span" style="white-space:pre">    </span>        int j, k, total = 0;</div>
<div><span class="Apple-tab-span" style="white-space:pre">      </span>        for(j=0; j<ic-><b>nb_programs</b>; j++) </div><div><span class="Apple-tab-span" style="white-space:pre">           </span>{</div><div>            <span class="Apple-tab-span" style="white-space:pre">                </span>AVDictionaryEntry *name = av_dict_get(ic->programs[j]->metadata,"name", NULL, 0);</div>
<div>            <span class="Apple-tab-span" style="white-space:pre">          </span>printf("  Program %d %s\n", ic->programs[j]->id,name ? name->value : "");</div><div>            <span class="Apple-tab-span" style="white-space:pre">           </span>//dump_metadata(NULL, ic->programs[j]->metadata, "    ");</div>
<div>            <span class="Apple-tab-span" style="white-space:pre">          </span>for(k=0; k<ic->programs[j]->nb_stream_indexes; k++) </div><div><span class="Apple-tab-span" style="white-space:pre">                        </span>{</div>
<div>                <span class="Apple-tab-span" style="white-space:pre">              </span>//dump_stream_format(ic, ic->programs[j]->stream_index[k], index, is_output);</div><div>                <span class="Apple-tab-span" style="white-space:pre">          </span>printed[ic->programs[j]->stream_index[k]] = 1;</div>
<div>            <span class="Apple-tab-span" style="white-space:pre">          </span>}</div><div>        <span class="Apple-tab-span" style="white-space:pre">    </span>    <span class="Apple-tab-span" style="white-space:pre">        </span>total += ic->programs[j]->nb_stream_indexes;</div>
<div>        <span class="Apple-tab-span" style="white-space:pre">      </span>}</div><div><span class="Apple-tab-span" style="white-space:pre">            </span>if (total < ic->nb_streams)</div><div>        <span class="Apple-tab-span" style="white-space:pre">    </span>printf("  No Program\n");</div>
<div>    <span class="Apple-tab-span" style="white-space:pre">  </span>}</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">   </span>avformat_free_context(ic);</div><div><br></div><div><br></div><div>
<span class="Apple-tab-span" style="white-space:pre"> </span>return 0;<span class="Apple-tab-span" style="white-space:pre">   </span></div><div>}</div></div><div><br></div><div>compiling this code iam only getting bitrate and duration.. and i am not able to get the remaining information such as fps audio metadata.......</div>
<div><br></div><div>ic->nb_chapters and ic->nb_programs is set to 0. </div><div><br></div><div>what shall i do to get the complete stream info.</div><div><br></div><div><br></div><div><br></div><div>thanks in advance</div>
<div><br></div>