ffmpeg_x264.exe中的0x0f29xa24(msvcr100.dll)处有未经处理的异常:0xC0000005:写入位置0x026cf000时发生访问冲突

将YUV编码X264,结果运行出现问题

相同的代码,在同一台笔记本上,开着VS2010 和 VS2017 ,实现YUV(共60帧)编码成H.264格式,

结果一、

在VS2010 debug32位下,运行结果,只能加载7帧,

8帧的话,运行不完,就直接卡停了。

翻译过来说:CPU能力不够,运行的时候,我看CPU也就占20%多。

VS2010 报错信息如下:

Windows 已在 ffmpeg_x264.exe 中触发一个断点。

其原因可能是堆被损坏,这说明 ffmpeg_x264.exe 中或它所加载的任何 DLL 中有 Bug。

原因也可能是用户在 ffmpeg_x264.exe 具有焦点时按下了 F12。

输出窗口可能提供了更多诊断信息。

程序“[5668] ffmpeg_x264.exe: 本机”已退出,返回值为 0 (0x0)。

结果二、

在VS2017 debug32位下,运行完美,没有卡顿。

 

想到了开头,万万没有想到结尾!!!

我把程序写错了,数据越界而已!开心的大哭!以后遇到这种越界问题,第一个反应应该是,哪个程序没有写对。

最一开始的错误程序,这里没有 除以4 。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
int _tmain(int argc, _TCHAR* argv[]) { currentAudioClock = 0; currentVideoClock = 0; currentBufferClock = 0; //currentPlayClock=0; CurrentVolume = SDL_MIX_MAXVOLUME; if (SDL_Init(SDL_INIT_EVERYTHING) != 0) { fprintf(stderr, "Unable to initialize SDL: %s\n", SDL_GetError()); return 1; } SDL_EventState(SDL_SYSWMEVENT, SDL_IGNORE); SDL_EventState(SDL_USEREVENT, SDL_IGNORE); atexit(SDL_Quit);// 注册SDL_Quit,当退出调用,使得退出程序自动清理 //flag=2; //给音视频队列分配空间 videoQueue = (VideoQueue *)av_mallocz(sizeof(VideoQueue)); audioQueue = (AudioQueue *)av_mallocz(sizeof(AudioQueue)); //初始化音视频队列 VideoQueueInit(videoQueue); AudioQueueInit(audioQueue); char* url = "G:/上海滩.mp4"; //char* url = "G:/2014年5月26日17 12 00至2014年5月26日17 14 59.avi"; //char* url = "H:/视频/不当交易.The.Unjust.BD.MiniSD-TLF.mkv"; //char* url = "E:/BaiduMusic/Songs/Love Story - Taylor Swift.mp3"; decodeTid = SDL_CreateThread(DecodePacket, "DecodePacket", (void*)url); PlayVideoTid = SDL_CreateThread(PlayVideo, "PlayVideo", NULL); PlayAudioTid = SDL_CreateThread(PlayAudio, "PlayAudioTid", NULL); int tid; SDL_WaitThread(decodeTid, &tid); printf("decodeTid %d\n", tid); SDL_WaitThread(PlayVideoTid, &tid); printf("PlayVideoTid %d\n", tid); SDL_WaitThread(PlayAudioTid, &tid); printf("PlayAudioTid %d\n", tid); SDL_DestroyMutex(audioQueue->audioMutex); SDL_DestroyCond(audioQueue->audioCond); SDL_DestroyMutex(videoQueue->videoMutex); SDL_DestroyCond(videoQueue->videoCond); av_free(videoQueue); av_free(audioQueue); return 0; }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值