在qt中调用ffmpeg av_register_all函数程序会异常中止 10C

在qt中调用ffmpeg av_register_all函数程序会异常中止,但是并不报错

1个回答

weixin_40371800
mashiro_dell qt中怎么调出属性这个选项,我是刚接触qt不是很熟悉
接近 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
使用#define ##拼接函数,模式化注册函数(ffmpeg 中的av_register_all)
#define 使用##,起到拼接作用。可以用来系统初始化的时候统一注册函数。(ffmpeg 中的av_register_all) 学以致用: #include #include #include #define CONFIG_INT_ADD 1 void add_int_ab(int a,int b) { printf ("\n ==
ffmpeg相关,undefined reference to `av_register_all' !!
问题:提示undefined reference to `av_register_all' 等多个函数。rnrn 1 编译成功ffmpeg之后,在C:\msys\local中生成bin,include,lib这3个文件夹子,其中lib文件夹也已经包含ffmpeg下的avcodec-51.lib、avformat-51.lib、avutil-49.lib这三个文件。rn 2 在local文件夹中建立test.c,输入(网上找的):rn#include rn#include "include\ffmpeg\avcodec.h"rn#include "include\ffmpeg\avformat.h"rn#include "include\ffmpeg\avutil.h"rn#include rn#define INBUF_SIZE 4096rn//extern void print_error(const char *filename, int err);rnvoid main()rnrnconst char *filename="1.3gp";rnconst char *filenameout="2.3gp";rnAVCodec *decodecodec;rnAVCodec *encodecodec;rnint bytesDecoded=0;rnAVCodecContext *decodec= NULL;rnAVCodecContext *encodec= NULL;rnAVFormatContext *pFormatCtx;rnAVFormatContext *pFormatCtxForOutput;rnAVOutputFormat *pOutputFormat;rnAVStream *video_st=NULL;rnunsigned char fgcolor[3]=255,128,128;rnint frame, outbuf_size = 400000, audioStream, position=0, got_picture, len,i, frametosave=250, out_size, videoStream, err;rnAVFrame *picture;rnAVPacket packet;rnuint8_t inbuf[INBUF_SIZE + FF_INPUT_BUFFER_PADDING_SIZE], *outbuf_ptr;rnint audiolen = 0, audiosize = 0;rnchar buf[1024];rnshort tmp = 0;rnoutbuf_ptr = (unsigned char *) malloc(outbuf_size);rn/*×¢²áËùÓеĽâÂë±àÂë¿â*/rnav_register_all();rnmemset(inbuf + INBUF_SIZE, 0, FF_INPUT_BUFFER_PADDING_SIZE);rnrn/*´ò¿ªÐèÒª½âÂëµÄÎļþ*/rnerr=av_open_input_file(&pFormatCtx, filename, NULL, 0, NULL);rnif(err!=0)rnrn fprintf(stderr,"Can't open source file\n");rn //print_error(filename, err);rn exit(1);rnrn/*»ñÈ¡¶àýÌåÎļþµÄÐÅÏ¢*/rnif(av_find_stream_info(pFormatCtx)<0)rnrn fprintf(stderr,"Can't find stream info\n");rn exit(1);rnrn rn /*if (av_set_parameters(pFormatCtx, NULL) < 0)rnrn exit(1);rn rndump_format(pFormatCtx, 0, filename, 1); */rnrn/*²éÕÒÎļþÖÐÊÇ·ñÓÐÊÓƵ*/rnvideoStream=-1;rnfor(i=0; inb_streams; i++)rnif(pFormatCtx->streams[i]->codec->codec_type==CODEC_TYPE_VIDEO)rnrn videoStream=i;rn break;rnrnif(videoStream==-1)rnrn fprintf(stderr,"Not found video stream\n");rn exit(1);rnrnprintf("Video decoding\n");rnaudioStream = -1;rnfor(i=0; inb_streams; i++)rnrn if(pFormatCtx->streams[i]->codec->codec_type == CODEC_TYPE_AUDIO)rn rn audioStream = i;rn break;rn rnrnrn/*Ñ°ÕÒÏàӦýÌå¸ñʽµÄ±àÂë½âÂë*/rndecodec=pFormatCtx->streams[videoStream]->codec;rndecodecodec = avcodec_find_decoder(decodec->codec_id);rnif (!decodecodec)rnrn fprintf(stderr, "decode codec not found\n");rn exit(1);rnrnrnpicture= avcodec_alloc_frame();rnrn/*´ò¿ª½âÂë¿â*/rnif (avcodec_open(decodec, decodecodec) < 0)rnrn fprintf(stderr, "could not open decode codec\n");rn exit(1);rnrnrn/*³õʼ»¯Êä³ö±àÂëµÄÐÅÏ¢*/rnpOutputFormat=guess_format(NULL,filename,NULL);rnpFormatCtxForOutput = av_alloc_format_context();rnpFormatCtxForOutput->oformat = pOutputFormat;rnrnsprintf(pFormatCtxForOutput->filename, "%s", filenameout);rnrnvideo_st = av_new_stream(pFormatCtxForOutput,0);rnencodec= video_st->codec;rnencodec->codec_id = pOutputFormat->video_codec;rnencodec->codec_type = CODEC_TYPE_VIDEO;rnencodec->bit_rate = pFormatCtx->bit_rate;rnencodec->width = decodec->width ;rnencodec->height = decodec->height ;rnencodec->time_base= decodec->time_base;rnencodec->gop_size = decodec->gop_size;rnencodec->max_b_frames=decodec->max_b_frames;rnencodec->pix_fmt = decodec->pix_fmt;rn/*¼ì²éencodec²ÎÊýÉèÖÃ*/rnif(av_set_parameters(pFormatCtxForOutput, NULL)<0)rnrn fprintf(stderr, "Invalid output format parameters\n");rn exit(1);rnrn/*ÕÒµ½ÏàÓ¦µÄ±àÂë¿â*/rnencodecodec = avcodec_find_encoder(encodec->codec_id);rnif (!encodecodec)rnrn fprintf(stderr, "encode codec not found\n");rn exit(1);rnrn/*´ò¿ª±àÂë¿â*/rnif ((err=avcodec_open(encodec, encodecodec)) < 0)rnrn fprintf(stderr, "could not open encode codec\n");rn //print_error(filename, err);rn exit(1);rnrn/*´´½¨ÐÂÉú³ÉµÄÎļþ*/rnif (!(pOutputFormat->flags & AVFMT_NOFILE))rnrn if (url_fopen(&pFormatCtxForOutput->pb, filenameout, URL_WRONLY) < 0)rn rn fprintf(stderr, "Could not open '%s'\n", filenameout);rn exit(1);rn rnrn/*дÎļþÍ·*/rnif (av_write_header(pFormatCtxForOutput) < 0)rnrn fprintf(stderr, "Could not write header for output file\n");rn exit(1);rn rnframe = 0;rnwhile(av_read_frame(pFormatCtx, &packet)>=0)rnrnif(packet.stream_index==videoStream)rnrn len = avcodec_decode_video(decodec, picture, &got_picture,packet.data, packet.size);rn //audiolen = avcodec_decode_audio(decodec, &tmp, &audiosize, packet.data, packet.size);rn //printf("avcodec_decode_audio size %d.\n", audiolen);rn rn if (got_picture)rn rn rn printf("saving frame %3d\n", frame);rn fflush(stdout);rn sprintf(buf, "frame%d.pgm", frame); rn picture->pts=av_rescale(frame,AV_TIME_BASE*(int64_t)encodec->time_base.num,encodec->time_base.den);rn picture->pict_type=0;rn out_size = avcodec_encode_video(encodec, outbuf_ptr, outbuf_size, picture); rn printf("encoding frame %3d (size=%5d)\n", frame, out_size);rn if (out_size > 0)rn rn AVPacket pkt;rn av_init_packet(&pkt);rn if(encodec->coded_frame && encodec->coded_frame->key_frame)rn pkt.flags |= PKT_FLAG_KEY;rn pkt.flags = packet.flags;rn pkt.stream_index= video_st->index;rn pkt.data= outbuf_ptr;rn pkt.size= out_size;rn av_write_frame(pFormatCtxForOutput, &pkt);rn rn rn frame++;rn rn elsern rn //av_write_frame(pFormatCtxForOutput, &packet);rn rnrnelse if (packet.stream_index==audioStream)rnrn printf("audio format.\n");rnrn av_free_packet(&packet);rn rn/*дÎļþβ²¢ÇҹرձàÂë½âÂë¿â£¬ÊÍ·ÅÄÚ´æ*/rn av_write_trailer(pFormatCtxForOutput);rn avcodec_close(decodec);rn av_free(decodec);rnavcodec_close(encodec);rn av_free(encodec);rn av_free(picture);rnif (audioStream != -1)rnrn printf("audiostream %d.\n", audioStream);rnrnif (videoStream != -1)rnrn printf("Videostream %d.\n", videoStream);rnrnrn//==================================================================================rn3 在MinGW32窗口中输入:rngcc test.c 或者 gcc -o test test.c -L/lib/都提示:av_register_all()未定义。rn怎么会这样?
cygwin环境下ffmpeg中av_register_all()函数,警告过时问题。
开发环境介绍 这一次代码环境比较复杂,我使用的分别是VS2017与CygWin编译C文件 项目遇见的问题 1.VS2017中使用av_register_all(),显示4996错误。 2.cygwin环境中av_register_all() 函数已被声明,但是不能通过VS环境中的行为,解决函数已被声明的解决办法 项目源码 /* * Copyright (c) 2017 Liming Sha...
qt 加载ffmpeg时,av_register_all()错误exited with code -1073741515
在做qt creator的音视频录制,目前纯视频和纯音频文件同时录制已实现,网上查找如何在qt中合成音视频,了解到ffmpeg加载到qt中,然后用相关的命令行实现音视频合成。rn ffmpeg添加到qt中,程序编译通过,运行却不行,一直跳出错误提示"exited with code -1073741515”,看到网上有一种解决方案——在av_register_all();时遇到 exited with code -1073741515错误,这是因为ffmpeg没有配置好,出现这个错误的原因是没有找到dll,dll一般是放在C:\WINDOWS\system32目录下的,我把他ffmpeg的库复制到该目录下就ok了。按照此方法试了很多次,依然运行不起来,还是原来的错误。rn 以下这两句代码注释了程序才能正常运行rn av_register_all();rn unsigned version = avcodec_version();rn 要是真注释了,ffmpeg等于没加载到qt中rn请问如何操作,才可以解决错误,让程序正常跑起来
QT 中调用FFMpeg实现视频播放功能
QT用来播放显示,FFMPeg循环从H264、H265缓存队列中取数据,解码成图片后通过信号曹函数发给QT界面去显示,这样就实现了视频播放功能。 解码方法:videoplayer.cpp    #include &quot;videoplayer.h&quot; #include &amp;lt;stdio.h&amp;gt; extern &quot;C&quot; { #include &quot;libavcodec/avcodec.h&quot; #i...
Qt调用FFmpeg命令录屏
Windows平台,Qt调用FFmpeg.exe进行录屏。支持操作,开始录屏-暂停-结束录屏。
程序异常中止问题?
近来我写了一个程序,其中用到了Timer函数,rn首先我SetTimer(NULL,5000,NULL);rn每五秒刷新一次,在OnTimer中写了程序,rn可出现了一个问题,刷新大约十次以后rn变的很迟钝,然后程序就终止了,rn不知是什么原因呢,会不会是动态分配的内存rn未释放呢?可是我在用new分配空间后,rn用完就delete掉了,不知哪位老兄可以帮忙提示一下呢?
我的第一个ffmpeg程序(编译及调用ffmpeg函数)
我的第一个ffmpeg程序
JS调用QT函数
我想在js里调用qt,请教各位大神,怎么做,求例子
SOS! 程序会何时调用DrawItem函数?
我重载了CListBox的DrawItem函数,但程序运行时,从来不会调用这个函数!!!为什么?那么该如何控制ListBox中每一项的背景色、字体颜色等等?rn请众位回答,不胜感激!
VS2013 Qt中配置使用FFMpeg
参考:https://blog.csdn.net/huangqi734044860/article/details/60956995 开发版本VS2013 + Qt5.8,主要是为了使用VS开发Qt中使用FFmpeg, 并记录下配置FFMpeg中遇到的一些问题,方便以后查阅。 首先要下载FFMpeg,我这里下载的是2.5.2版本,打开压缩包后有三个文件夹 传送门:https://downl...
在QT中使用FFmpeg库
INCLUDEPATH += D:/ffmpeg/dev/include LIBS += -LD:ffmpeg/dev/lib/ -lavcodec \ -LD:ffmpeg/dev/lib/ -lavdevice \ -LD:ffmpeg/dev/lib/ -lavfilter \ -LD:ffmpeg/dev/lib/ -lavformat \ -LD:ffmpeg/dev/lib/ -lavu
求助:在Qt编写的程序下如何调用动态连接库中的函数!
[size=10px]我现在用Qt开发了一个简单的界面,程序中需要使用linux下的动态连接库,要向这个动态连接库的函数中传递一个参数,不知道要怎样处理。这个动态连接库也是我自己编写的。[/size][b][/b]
qt调用c程序
新手求救!!!!我用qt写了一个界面,类似于txt的界面,用c语言写了一个类似shell的程序,我想用qt调用这个程序,使它可以在界面上像shell那样直接输指令然后执行并显示。可以用QProcess调用。但我不知道具体该怎么操作。哪位大神能教教我???拜托拜托!!
Qt 入门 之 程序调用
QT程序定位 程序调用 读取文件 程序等待
QT调用命令行程序
QT调用命令行程序要用到QProcess类。       首先,讲一种特别简单的情况,直接调用Windows系统的记事本程序。       在某一个按钮上设置信号与槽,然后槽函数可以这样写:void test01::openNotepad() { QProcess * po = new QProcess(this); po->start("notepad.exe"); }       之
Qt一个类中调用另一个类的函数
#include "stdafx.h"rnrnclass Arnrnpublic:rn int it;rn A():it(100)rn rnrn rnrn;rnclass Brnrnpublic:rn A a;rn int getvalue();rnprotected:rnprivate:rn;rnint B::getvalue()rnrn return a.it;rnrnrnrnint _tmain(int argc, _TCHAR* argv[])rnrn B b;rn int kk = b.getvalue();rn return 0;rnrnrnrn类似如上的调用在Qt中可以应用吗?为什么我在Qt中实现不了呢,高手指点
Qt调用dll中的功能函数
篇内容分两部分:第一部分是 QT在 windows 上 DLL的导出和调用; 第二部分是 QT在 linux 上 DLL(os)的导出和调用; /////////////////////////////////////////////////////////////////////////////////////////////////////////////Windows//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 1:Windows篇: 在windows上安装 QT+VS2008 ; (1)建立导出DLL: windows平台上QT开发DLL 与 VC++ 开发DLL 很像,这里重点说明QT开发dll; QT的DLL可以用C语言方式写,当DLL生成后,如果是C++调用,包含头文件,注意添加 extern “C”{}; 也可以用C++方式写,这里重点讲解C++方式: 导出类: 。打开VS2008建立Qt Library工程,这样就建立了一个简单的 导出类的 DLL工程; 。在类中添加你的成员函数,成员变量 就可以了,编译生成的dll就导出类了;
Qt调用dll中的功能函数demo
QT中调用dll中的函数,3种方式demo, 1、采用显示链接,调用DLL中全局函数 2、采用显示链接,调用C++类中的类对象、成员函数 3、采用隐式链接方法,通过QLibrary类对DLL中类对象、全局函数的调用
QT中点击右上角红叉调用的函数
我查阅资料知道了QT中点击右上红叉调用的是QWidget类下的closeEvent函数n但是我现在想重写 比如点击时,让ui中的某个label显示的内容改变n但是里面不能直接调用ui->QLabel 请问怎么实现这一点啊~
两个qt的函数在c#中调用问题
原型rnQByteArray qCompress ( const QByteArray & data, int compressionLevel = -1 )rnQByteArray qUncompress ( const QByteArray & data )rnrn我是如下定义的rn[DllImport("QtCore4.dll", EntryPoint = "?qCompress@@YA?AVQByteArray@@PBEHH@Z")]rn internal static extern byte[] qCompress(byte[] bytes, int level);rnrn [DllImport("QtCore4.dll", EntryPoint = "?qUncompress@@YA?AVQByteArray@@PBEH@Z")]rn internal static extern byte[] qUncompress(byte[] bytes);rn第一个可以运行但是结果有问题,第二个会报错rn麻烦熟悉的朋友指点下哈rn在线等,解决立马结贴
Qt多次链接connect函数的信号槽会调用多次问题
Qt多次链接connect函数的信号槽会调用多次问题
qt 调用javascript函数 带参数
在qt中调用javascript 已在linux中编译好 qt4.5
Qt 调用 DLL功能函数
在网上找了个Qt 调用 DLL功能函数的小例子,自己执行了下,加载.dll可以成功,但是dll里面的功能函数却不能调用,不知道为什么?有人遇到这种问题木有啊?
qt 如何调用c函数
many opensource code is in c code format for most wide use. qt uses c++. so use c function is the same as common C++ and C program. c functions and var to be called by c++ should be in a header file
QT如何调用pthread_create函数
QT里调用pthread_create(&pid, NULL, recv_data, "recv data");rnrecv_data函数里也是C代码,主要实现本地域套接字来实现进程间通信的东西。接收客户端传过来的数据包。rn编译出现以下错误:rnerror: invalid conversion from ‘const void*’ to ‘void*’rnmain.cpp:112: error: initializing argument 4 of ‘int pthread_create(pthread_t*, const pthread_attr_t*, void* (*)(void*)rn不知道是哪里的错,我想知道的是QT里如何用pthread_create起线程。有谁解答下,谢谢了。
linux下qt调用c函数
新手求助!!!急急急!!!!!rn我用c语言写了一个加减乘除的函数,想在qt中用QProcess调用这个函数并且显示在text上。具体函数如下:rnc语言函数是最简单普通的加减乘除函数,包括main.c,add.c(加),div.c(除),mul.c(乘),sub.c(减).路径是./home/mainrnqt函数如下:rnMainWindow::MainWindow(QWidget *parent)rn : QMainWindow(parent)rnrn resize(700,500);rn QTextEdit *text = new QTextEdit(this);rn //设置中心主控件rn setCentralWidget(text);rn //在状态栏显示信息rn setWindowTitle("there");//设置主窗口的标题栏rn statusBar()->showMessage("Welcome to there");rnrn求各位大神告诉我该怎么写。。。。拜托拜托!!!!!
Qt调用dll的功能函数
本资料的内容分两部分:第一部分是QT在windows上DLL的导出和调用;第二部分是QT在linux上DLL的导出和调用。
C程序调用C++程序中的函数
[code=c]rn#heah.hrnrnnamespace sigrnrn double A(const double &t); //这里是声明rnrnrn[/code]rnrn[code=c]rn#sig.cpprnrndouble sig::A(const double &t)rnrn //这里是实现rnrn[/code]rnrn[code=c]rn#test.crnrnint main()rnrn//这里使用rnrn[/code]
QT使用FFmpeg播放视频
QT5.8加载 ffmpeg,并有详细注释,一个最简单的是使用ffmpeg的DEMO
qt下 初识ffmpeg
qt下第三方库ffmpeg的使用,最基础的环境搭建,最主要在pro文件直接引用了dll,适合在windows下的代码直接使用
Qt + ffmpeg播放器源码
这个播放器在Linux系统下,基于Qt框架,采用ffmpeg解码实现的的,使用QLabel来显示解码数据。顺便添加了一些水印功能。需要一些.so 的库文件。如果要在Window下播放,需要准备,dll文件
VC 程序异常中止,窗口界面会怎样?
rn[size=18px]请问, 如果VC下,一个带界面的程序异常中止,程序中没有任何资源释放的代码。请问在它结束后,界面或相关资源的句柄会被释放掉吗? 是在程序异常结束时就释放干净了吗?[/size]rnrn[size=18px]谢谢![/size]
qt for android ffmpeg
qt for android 开发,现在有一个android版本编译的ffmpeg的.so库文件,想问下qt调用应该要怎么配置,有哪些要注意的。我试着调用,但是编译失败,提示库文件好像有问题,不明白。rn
QT下链接FFmpeg
https://ffmpeg.zeranoe.com/builds/ 我在这里下载的 static,dev和sharedrnrn然后我在QT中pro链接:[img=https://img-bbs.csdn.net/upload/201709/07/1504785998_323013.png][/img]rn我在.h文件中加入头文件[img=https://img-bbs.csdn.net/upload/201709/07/1504786058_364047.png][/img]rn在.cpp中调用[img=https://img-bbs.csdn.net/upload/201709/07/1504786099_440911.png][/img]rn怎么还给我出错误提示....求大神帮帮忙!
Qt 有关ffmpeg的配置
做了一个有关ffmpeg的项目,需要首先配置ffmpeg,折腾了一个下午,把最终的方法说一下:        首先是下载库文件:ffmpeg库的地址是:https://ffmpeg.zeranoe.com/builds/  这里要注意了这里面最好选windo 32bit的,64比特有问题,会导致库编译的时候undefined declaration出现。然后把static,shared和Dev都下
Qt使用FFMPEG的例子
根据http://blog.yundiantech.com/?log=blog&id=7这篇教程写的FFMEG例子 Qt版本是5.5 FFMPEG版本是3.4
Qt FFmpeg音乐播放器
http://blog.csdn.net/what951006/article/details/53376413 项目名因为一个bug迟迟未解决,怒了就乱敲了!! 可以多次播放!有UI界面~鸡肋
QT + FFMPEG 视频播放器
播放只有视频的文件时,总是不能够解码得到一个完整的帧。大神求救啊!好几天了。
qt opencv ffmpeg
已经使用opencv录制视频成功,但现在需要在 视频录制 的时候 同时 录制音频, 求方法呀,急。。。。。。。。。。。。
相关热词 c# 线程结束时执行 c# kb mb 图片 c# 替换第几位字符 c#项目决定成败 c# 与matlab c# xml缩进 c#传感器基础 c#操作wps c# md5使用方法 c# 引用父窗口的组件