请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

正在回答 回答被采纳积分+3

2回答

提问者 xiongliang120 2018-09-28 08:38:29

#include<libavformat/avformat.h>
#include<libavutil/log.h>
int main(int argc,char * argv[])
{
  AVFormatContext *fmt_cxt;
  int ret;
  av_log_set_level(AV_LOG_INFO);
  av_register_all();

  ret = avformat_open_input(&fmt_cxt,"./a.ts",NULL,NULL);
  if(ret<0)
  {
     av_log(NULL,AV_LOG_INFO,"read fail");
     return -1;
  }

  av_dump_format(fmt_cxt,0,"./a.ts",0);
  avformat_close_input(&fmt_cxt);
  return 0;

}

0 回复 有任何疑惑可以回复我~
  • 提问者 xiongliang120 #1
    AVFormatContext *fmt_cxt =NULL; 就有输出了,指针必须初始化吗?
    回复 有任何疑惑可以回复我~ 2018-09-28 08:42:31
  • 李超 回复 提问者 xiongliang120 #2
    一般好的习惯是在设置指针变量时,给它设置为NULL。但对于你这个程序来说也是不必的。因为avformat_open_input(&fmt_cxt,"./a.ts",NULL,NULL); 执行后,会给 fmt_cxt一个新的值。但后面使用时,你需要对 fmt_cxt做判空处理。如果该值为空,此时你再调用下面的 avformat_close_input(&fmt_cxt); 时就会 crash。其实最好的解决这个问题的方法是使用 gdb/lldb单步调试一下。一下就可以确定问题的原因了。你这个程序在我这里编译,运行都是没问题的。谢谢!
    回复 有任何疑惑可以回复我~ 2018-09-28 12:56:07
李超 2018-09-28 08:03:15

把你的程序贴出来哈,否则我无法判断是什么问题。

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信