﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>IT博客-linux-文章分类-ffmpeg study</title><link>http://www.cnitblog.com/seedshopezhong/category/8626.html</link><description>driver</description><language>zh-cn</language><lastBuildDate>Wed, 28 Sep 2011 00:21:46 GMT</lastBuildDate><pubDate>Wed, 28 Sep 2011 00:21:46 GMT</pubDate><ttl>60</ttl><item><title>猜测输入文件格式</title><link>http://www.cnitblog.com/seedshopezhong/articles/64917.html</link><dc:creator>seedshopezhong</dc:creator><author>seedshopezhong</author><pubDate>Mon, 29 Mar 2010 15:20:00 GMT</pubDate><guid>http://www.cnitblog.com/seedshopezhong/articles/64917.html</guid><wfw:comment>http://www.cnitblog.com/seedshopezhong/comments/64917.html</wfw:comment><comments>http://www.cnitblog.com/seedshopezhong/articles/64917.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/seedshopezhong/comments/commentRss/64917.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/seedshopezhong/services/trackbacks/64917.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 下面来看当输入的不是文件而是数据流时,系统是如何获取输入数据格式的,如下代码所示,系统调用av_probe_input_format函数去定位输入流格式fmt = av_probe_input_format(pd, 0);而av_probe_input_format的函数调用如下所示AVInputFormat *av_probe_input_format(AVProbeData *pd, int ...&nbsp;&nbsp;<a href='http://www.cnitblog.com/seedshopezhong/articles/64917.html'>阅读全文</a><img src ="http://www.cnitblog.com/seedshopezhong/aggbug/64917.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/seedshopezhong/" target="_blank">seedshopezhong</a> 2010-03-29 23:20 <a href="http://www.cnitblog.com/seedshopezhong/articles/64917.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>read_ffserver_streams---打开文件并获取文件流信息</title><link>http://www.cnitblog.com/seedshopezhong/articles/64886.html</link><dc:creator>seedshopezhong</dc:creator><author>seedshopezhong</author><pubDate>Sun, 28 Mar 2010 15:58:00 GMT</pubDate><guid>http://www.cnitblog.com/seedshopezhong/articles/64886.html</guid><wfw:comment>http://www.cnitblog.com/seedshopezhong/comments/64886.html</wfw:comment><comments>http://www.cnitblog.com/seedshopezhong/articles/64886.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/seedshopezhong/comments/commentRss/64886.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/seedshopezhong/services/trackbacks/64886.html</trackback:ping><description><![CDATA[<span  style="font-family: verdana, sans-serif; font-size: 14px; line-height: 21px; "><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; ">转自：<a href="http://blog.csdn.net/woshizhanhun/archive/2009/01/04/3706408.aspx">http://blog.csdn.net/woshizhanhun/archive/2009/01/04/3706408.aspx</a></p><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; ">这是ffmpeg.c里的一段代码，功能是打开文件并绑定音视频流信息到<font color="#000000">AVFormatContext&nbsp;这个结构体</font></p><div class="highlighter"><ol class="highlighter-cpp" style="margin-top: 5px; margin-right: 0px; margin-bottom: 5px; margin-left: 35px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; list-style-type: none; "><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; list-style-type: decimal; "><span class="keyword">static</span><span>&nbsp;</span><span class="datatypes">int</span><span>&nbsp;read_ffserver_streams(AVFormatContext&nbsp;*s,&nbsp;</span><span class="keyword">const</span><span>&nbsp;</span><span class="datatypes">char</span><span>&nbsp;*filename)</span></li><li class="alt" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; list-style-type: decimal; "><span>{</span></li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; list-style-type: decimal; "><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="datatypes">int</span><span>&nbsp;i,&nbsp;err;</span></li><li class="alt" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; list-style-type: decimal; "><span>&nbsp;&nbsp;&nbsp;&nbsp;AVFormatContext&nbsp;*ic;</span></li><li class="alt" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; list-style-type: decimal; "><span></span></li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; list-style-type: decimal; "><span>&nbsp;&nbsp;&nbsp; /*打开文件，并将文件相关的信息存到ic中，filename为文件的完整路径*/</span></li><li class="alt" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; list-style-type: decimal; "><span>&nbsp;&nbsp;&nbsp;&nbsp;err&nbsp;=&nbsp;av_open_input_file(&amp;ic,&nbsp;filename,&nbsp;NULL,&nbsp;FFM_PACKET_SIZE,&nbsp;NULL);</span></li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; list-style-type: decimal; "><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>&nbsp;(err&nbsp;&lt;&nbsp;0)</span></li><li class="alt" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; list-style-type: decimal; "><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;err;</span></li><li class="alt" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; list-style-type: decimal; "><span></span></li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; list-style-type: decimal; "><span>&nbsp;&nbsp;&nbsp;&nbsp;/*</span><span class="comment">复制文件里的流信息到输出的<font color="#000000">AVFormatContext结构体中,一般情况有2个流即nb_streams=2，<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; "><font color="#000000">&nbsp;&nbsp;&nbsp;&nbsp;s-&gt;streams[0]为&nbsp;视频流，s-&gt;streams[1]为音频流*/</font></p></font></span></li><li class="alt" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; list-style-type: decimal; "><span>&nbsp;&nbsp;&nbsp;&nbsp;s-&gt;nb_streams&nbsp;=&nbsp;ic-&gt;nb_streams;</span></li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; list-style-type: decimal; "><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">for</span><span>(i=0;i&lt;ic-&gt;nb_streams;i++)&nbsp;{</span></li><li class="alt" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; list-style-type: decimal; "><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AVStream&nbsp;*st;</span></li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; list-style-type: decimal; "><span></span></li><li class="alt" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; list-style-type: decimal; "><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/*修正：需要一个更优化的解决方案*/</span><span></span></li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; list-style-type: decimal; "><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;st&nbsp;=&nbsp;av_mallocz(</span><span class="keyword">sizeof</span><span>(AVStream));</span></li><li class="alt" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; list-style-type: decimal; "><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memcpy(st,&nbsp;ic-&gt;streams[i],&nbsp;</span><span class="keyword">sizeof</span><span>(AVStream));</span></li><li class="alt" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; list-style-type: decimal; "><span></span></li><li class="alt" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; list-style-type: decimal; "><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*初始化编解码器结构体，将文件所用的编码格式存储到用于<font color="#008200">输出的</font><font color="#000000">AVFormatContext结构体中*/</font></span></li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; list-style-type: decimal; "><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;st-&gt;codec&nbsp;=&nbsp;avcodec_alloc_context();</span></li><li class="alt" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; list-style-type: decimal; "><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memcpy(st-&gt;codec,&nbsp;ic-&gt;streams[i]-&gt;codec,&nbsp;</span><span class="keyword">sizeof</span><span>(AVCodecContext));</span></li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; list-style-type: decimal; "><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s-&gt;streams[i]&nbsp;=&nbsp;st;</span></li><li class="alt" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; list-style-type: decimal; "><span>&nbsp;&nbsp;&nbsp;&nbsp;}</span></li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; list-style-type: decimal; "><span>&nbsp;&nbsp;&nbsp;&nbsp;/*打开文件后需要关闭*/</span></li><li class="alt" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; list-style-type: decimal; "><span>&nbsp;&nbsp;&nbsp;&nbsp;av_close_input_file(ic);</span></li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; list-style-type: decimal; "><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;0;</span></li><li class="alt" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; list-style-type: decimal; "><span>}</span></li></ol></div></span>
<img src ="http://www.cnitblog.com/seedshopezhong/aggbug/64886.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/seedshopezhong/" target="_blank">seedshopezhong</a> 2010-03-28 23:58 <a href="http://www.cnitblog.com/seedshopezhong/articles/64886.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>