FFmpeg报错被声明为已否决问题

	for (int i = 0; i < ac->nb_streams; i++)
	{
		AVStream *in_stream = ac->streams[i];

		//TRACE("codec id: %d, \n", in_stream->codec->codec_id);

		if (in_stream->codec->codec_type == AVMEDIA_TYPE_VIDEO)		
		{			
			m_coded_width = in_stream->codec->width;
			m_coded_height = in_stream->codec->height;

			if (in_stream->codec->codec_id == AV_CODEC_ID_H264)
			{
			}
		}
	}	

使用AVStream::codec成员时,简单的获取分辨率,最终编译报错:

1>e:\vs2013test\opencvtest\opencvtest\myffmpeg.cpp(52): error C4996: 'AVStream::codec': 被声明为已否决
1>          e:\vs2013test\public_ft\public\include\libavformat\avformat.h(885) : 参见“AVStream::codec”的声明
1>e:\vs2013test\opencvtest\opencvtest\myffmpeg.cpp(54): error C4996: 'AVStream::codec': 被声明为已否决
1>          e:\vs2013test\public_ft\public\include\libavformat\avformat.h(885) : 参见“AVStream::codec”的声明
1>e:\vs2013test\opencvtest\opencvtest\myffmpeg.cpp(55): error C4996: 'AVStream::codec': 被声明为已否决
1>          e:\vs2013test\public_ft\public\include\libavformat\avformat.h(885) : 参见“AVStream::codec”的声明
1>e:\vs2013test\opencvtest\opencvtest\myffmpeg.cpp(57): error C4996: 'AVStream::codec': 被声明为已否决
1>          e:\vs2013test\public_ft\public\include\libavformat\avformat.h(885) : 参见“AVStream::codec”的声明

在知识的海洋中翱翔后得出:

将此处的"是"修改成"否"。

1>e:\vs2013test\opencvtest\opencvtest\myffmpeg.cpp(52): warning C4996: 'AVStream::codec': 被声明为已否决
1>          e:\vs2013test\public_ft\public\include\libavformat\avformat.h(885) : 参见“AVStream::codec”的声明
1>e:\vs2013test\opencvtest\opencvtest\myffmpeg.cpp(54): warning C4996: 'AVStream::codec': 被声明为已否决
1>          e:\vs2013test\public_ft\public\include\libavformat\avformat.h(885) : 参见“AVStream::codec”的声明
1>e:\vs2013test\opencvtest\opencvtest\myffmpeg.cpp(55): warning C4996: 'AVStream::codec': 被声明为已否决
1>          e:\vs2013test\public_ft\public\include\libavformat\avformat.h(885) : 参见“AVStream::codec”的声明
1>e:\vs2013test\opencvtest\opencvtest\myffmpeg.cpp(57): warning C4996: 'AVStream::codec': 被声明为已否决
1>          e:\vs2013test\public_ft\public\include\libavformat\avformat.h(885) : 参见“AVStream::codec”的声明

再次编译,错误变成警告。

本想就此过去,但想了解一下,发现可以用AVCodecParameters代替AVCodecContext。

修改后:

for (int i = 0; i < ac->nb_streams; i++)
	{
		AVStream *in_stream = ac->streams[i];

		//TRACE("codec id: %d, \n", in_stream->codec->codec_id);

		if (in_stream->codecpar->codec_type == AVMEDIA_TYPE_VIDEO)
		{			
			m_coded_width = in_stream->codecpar->width;
			m_coded_height = in_stream->codecpar->height;

			if (in_stream->codecpar->codec_id == AV_CODEC_ID_H264)
			{
			}
		}
	}	

编译通过。 

 

初入坑,请大家多多指教,共同学习!

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 当使用ffmpeg时,如果遇到乱码问题,可以尝试修改输出流的编码方式。在使用ffmpeg的过程中,输出流使用的是错误输出,因此需要设置StandardErrorEncoding为UTF-8编码。同时,需要将RedirectStandardError设置为true,以便捕获错误输出。\[1\] 如果你遇到了类似于“‘ffmpeg’ 不是内部或外部命令,也不是可运行的程序或批处理文件。”的错误,可能是因为ffmpeg的路径没有正确设置。你可以尝试修改命令中的ffmpeg路径为正确的路径。\[2\] 在修改过程中,可能会遇到中文乱码的问题。你可以尝试更换字体文件,或将字体文件拷贝到ffmpeg当前目录下解决中文乱码问题。\[3\] 另外,如果你需要在时间格式中使用冒号":",可能会导致ffmpeg报错。你可以尝试使用转义字符或采用其他方式来表示时间格式,以满足你的要求。\[3\] #### 引用[.reference_title] - *1* [【C#】【ffmpeg】外部调用线程执行ffmepg读取返回的信息乱码问题](https://blog.csdn.net/ks2686/article/details/127388879)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [python多线程下载m3u8,解密并使用ffmpeg合并ts(解决命令调用ffmpeg报错乱码)](https://blog.csdn.net/weixin_42408648/article/details/119334503)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [【ffmpeg遇到的问题】](https://blog.csdn.net/dzh592204/article/details/126884637)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值