Av_opt_set_dict(obj, dict);
今天用这个函数,发现set之后,原来指向dict的指针内容发生了变化。看了源码,发现这个函数的是一个大陷阱啊,它会改变dict中的内容。
正确的用法是在set之前,先将dict复制一份副本,用副本进行set,这样就比较符合人类的用法了。
Av_dict_copy(&tmp_dict, dict,0);
Av_opt_set_dict(obj, tmp_dict);
Av_dict_free(&tmp_dict);
这样原来dict中的内容就不会莫名的变掉了。