mac ffmpeg 命令行命令行jpg转png出错求助

求助,ffmpeg解码错误_c语言吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:470,028贴子:
求助,ffmpeg解码错误收藏
二楼贴代码,代码照教程抄的,抄完之后发现没用,然后自己到处找资料改,改来改去还是没法用,现在想要的功能只是快速显示flv中的一系列电影贞而已,可是显示出来总是全屏绿色,我想过,SDL那部分应该没问题,就是ffmpeg解码那部分不大对,也不知道哪里写错了
c语言海同强大的师资阵容,因人制定课程内容,分阶段学习.c语言就到正规IT技术培训机构-海同科技,培训IT技术面对面教学,免费重读!
#include &ffmpeg-compat/libavcodec/avcodec.h&#include &ffmpeg-compat/libavutil/avutil.h&#include &ffmpeg-compat/libavformat/avformat.h&#include &ffmpeg-compat/libswscale/swscale.h&#include &SDL/SDL.h&#include &SDL/SDL_thread.h&#include &stdio.h&#include &assert.h&#include &stdlib.h&intmain(int argc, char *argv[]){
int i = 0;
int videoStream=-1;
uint8_t *buffer = NULL;
int numBytes = 0;
int frameFinished = 0;
AVPacket packet = { 0 };
AVFrame *pFrame = NULL;
AVCodec *pCodec = NULL;
AVFrame *pFrameRGB = NULL;
AVCodecContext *pCodecCtx = NULL;
av_register_all();
AVFormatContext *pFormatCtx = NULL;
if(avformat_open_input(&pFormatCtx, argv[1], NULL, NULL)!=0)
return -1;
assert(pFormatCtx != NULL);
if(avformat_find_stream_info(pFormatCtx, NULL)&0)
return -1; //
dump_format(pFormatCtx, 0, argv[1], 0);
for(i=0; i&pFormatCtx-&nb_ i++) {
if(pFormatCtx-&streams[i]-&codec-&codec_type==AVMEDIA_TYPE_VIDEO) {
videoStream=i;
if(videoStream == -1)
return -1;
pCodecCtx=pFormatCtx-&streams[videoStream]-&
pCodec=avcodec_find_decoder(pCodecCtx-&codec_id);
if(pCodec==NULL) {
fprintf(stderr, "Unsupported codec!\n");
return -1; // Codec not found
if(avcodec_open2(pCodecCtx, pCodec, NULL)&0)
return -1;
pFrame=avcodec_alloc_frame();
pFrameRGB=avcodec_alloc_frame();
if(pFrameRGB==NULL)
return -1;
numBytes=avpicture_get_size(PIX_FMT_RGB24, pCodecCtx-&width,pCodecCtx-&height);
buffer=(uint8_t *)av_malloc(numBytes*sizeof(uint8_t));
avpicture_fill((AVPicture *)pFrameRGB, buffer, PIX_FMT_RGB24,pCodecCtx-&width, pCodecCtx-&height);
if(SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO | SDL_INIT_TIMER)) {
fprintf(stderr, "Could not initialize SDL - %s\n", SDL_GetError());
SDL_Surface *screen = SDL_SetVideoMode(pCodecCtx-&width, pCodecCtx-&height, 0, 0);
if(!screen) {
fprintf(stderr, "SDL: could not set video mode - exiting\n");
SDL_Overlay *bmp = SDL_CreateYUVOverlay(pCodecCtx-&width, pCodecCtx-&height, SDL_YV12_OVERLAY, screen);
while(av_read_frame(pFormatCtx, &packet)&=0) {
SDL_Event event = { 0 };
if(packet.stream_index==videoStream) {
avcodec_decode_video2(pCodecCtx, pFrame, &frameFinished, &packet);
if(frameFinished) {
struct SwsContext *pSwsCtx = NULL;
SDL_LockYUVOverlay(bmp);
pict.data[0] = bmp-&pixels[0];
pict.data[1] = bmp-&pixels[2];
pict.data[2] = bmp-&pixels[1];
pict.linesize[0] = bmp-&pitches[0];
pict.linesize[1] = bmp-&pitches[2];
pict.linesize[2] = bmp-&pitches[1];
pSwsCtx = sws_getContext(pCodecCtx-&width, pCodecCtx-&height, pCodecCtx-&pix_fmt,
pCodecCtx-&width, pCodecCtx-&height, PIX_FMT_YUV420P, SWS_POINT,
NULL, NULL, NULL);
sws_scale(pSwsCtx, (const uint8_t * const*)pFrame-&data, pFrame-&linesize, 0, pFrame-&height,
pict.data, pict.linesize);
for(i = 0; i & (*pFrame-&linesize) * pFrame-& i++)
printf("%d\n", pict.data[0][i]);
sws_freeContext(pSwsCtx);
SDL_UnlockYUVOverlay(bmp);
rect.x = 0;
rect.y = 0;
rect.w = pCodecCtx-&
rect.h = pCodecCtx-&
SDL_DisplayYUVOverlay(bmp, &rect);
av_free_packet(&packet);
SDL_PollEvent(&event);
switch(event.type) {
case SDL_QUIT:
SDL_Quit();
av_free(buffer);
av_free(pFrameRGB);
av_free(pFrame);
avcodec_close(pCodecCtx);
avformat_close_input(&pFormatCtx);
return 0;}
我觉得avcodec_decode_video2(pCodecCtx, pFrame, &frameFinished, &packet);这一句有问题,但不知道正确的该怎么写
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或小木虫 --- 500万硕博科研人员喜爱的学术科研平台
&&查看话题
【求助】安装ffmpeg,make时错误~
想在学校集群上弄个ffmpeg
按照/blog/139399的方法
安装了各种解码器,安装时都有./configure --prefix=/home/username/ffmpeg --enable-shared参数(安装在自己的路径下)
只有第七个没有安装上(感觉估计只是ffmpeg少了一种支持的格式,应该影响不大)
接着安装ffmpeg,首先&&./configure --prefix=/home/username/ffmpeg --enable-gpl --enable-shared --enable-libmp3lame --enable-libogg --enable-libvorbis --enable-libamr-nb --enable-libamr-wb --enable-libxvid --enable-libx264 --enable-liba52 --enable-liba52bin --enable-libfaac --enable-libfaad --enable-libfaadbin --enable-pp --enable-pthreads --disable-ffserver --disable-ffplay
接着make就出错了:
make -C libavcodec all
make: Entering directory `/home/username/ffmpeg-0.4.8/libavcodec'
gcc -g -O3 -Wall -DHAVE_AV_CONFIG_H -I.. -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_GNU_SOURCE -c -o common.o common.c
In file included from avcodec.h:14,
& && && && && &&&from common.c:27:
common.h:68: error: array type has incomplete element type
common.h:70: error: array type has incomplete element type
make: ***&&Error 1
make: Leaving directory `/home/username/ffmpeg-0.4.8/libavcodec'
make: ***&&Error 2
这是什么错误,应该怎么弄?
ps:集群SUSE10,gcc4.1.2的
学校不重要
毛主席教导我们:
我们都是来自五湖四海,为了同一个目标走到一起的的兄弟:D:D
安装程序是在官方下载的,应该没有什么问题
估计问题应该出在集群的设置,或者编译安装的细节上
some good suggestions?
:dnd::dnd::dnd:因为我们平时要去些学校,顺路的话可以帮你去看看。
可以不见人而准确诊断的神医已经没有了:P
哈哈,大连理工的~
那挺远的了,通过你给的这些信息我也只能给那个结论了。:D:D
你再加油搞搞吧!~
我不是单机安装
是在机群服务器上弄
研究生必备与500万研究生在线互动!
扫描下载送金币
浏览器进程
登录小木虫
打开微信扫一扫
随时随地聊科研10:12 提问
ffmpeg编码延时命令行参数设置
ffmpeg编码参数设置
av_opt_set(m_c-&priv_data, "preset", "superfast", 0);
av_opt_set(m_c-&priv_data, "tune", "zerolatency", 0);
可以达到减少编码延时的效果,请问如何在命令行中设置相应的参数来达到同样的效果呢?谢谢
按赞数排序
看看这里有没有
418关注|291收录
459关注|1135收录
1559关注|780收录
其他相似问题Pages: 1/3
主题 : ffmpeg视频播放问题 imageViwe加载的rob数据 但是播放2分钟就停止了 求大神carry
级别: 圣骑士
UID: 554656
可可豆: 1180 CB
威望: 964 点
在线时间: 784(时)
发自: Web Page
来源于&&分类
ffmpeg视频播放问题 imageViwe加载的rob数据 但是播放2分钟就停止了 求大神carry&&&
音频那边另外一个人做的 可以无限播放 视频这一块 播放暂停OK了 但是播放2分钟停止了 被杀了吗?还是代码不对
级别: 圣骑士
UID: 554656
可可豆: 1180 CB
威望: 964 点
在线时间: 784(时)
发自: Web Page
级别: 圣骑士
UID: 554656
可可豆: 1180 CB
威望: 964 点
在线时间: 784(时)
发自: Web Page
&&&&&&&&&&&&&&&&&&&&&&
级别: 圣骑士
UID: 554656
可可豆: 1180 CB
威望: 964 点
在线时间: 784(时)
发自: Web Page
级别: 圣骑士
UID: 554656
可可豆: 1180 CB
威望: 964 点
在线时间: 784(时)
发自: Web Page
级别: 圣骑士
UID: 554656
可可豆: 1180 CB
威望: 964 点
在线时间: 784(时)
发自: Web Page
级别: 骑士
UID: 126449
可可豆: 880 CB
威望: 800 点
在线时间: 899(时)
发自: Web Page
我遇到过,出现的情况一般是快速生成UIImage的时候。内存处理不好会崩溃的。具体情况是这样的,一个固定Buffer保存接收yuv转rgb数据,然后rgb数据转UIImage的时候采用的NoCoping的方式。如果不使用固定Buffer,释放该Buffer的时机不好把握,会导致内存泄露;而使用固定Buffer,转UIImage的时候采用的Copy Buffer的方式即可。——不过话说回来,采用UIImage渲染的方式改用OpenGL ES吧[ 此帖被alby在 14:12重新编辑 ]
级别: 圣骑士
UID: 554656
可可豆: 1180 CB
威望: 964 点
在线时间: 784(时)
发自: Web Page
回 6楼(alby) 的帖子
大神,内存泄漏的问题我用静态分析工具分析了 之前的确有泄漏不过free之后检查没问题了 求+qq详聊
级别: 骑士
UID: 126449
可可豆: 880 CB
威望: 800 点
在线时间: 899(时)
发自: Web Page
回 7楼(dachuizi) 的帖子
代码贴出来看看,两个地方:解码和生成UIImage
级别: 圣骑士
UID: 554656
可可豆: 1180 CB
威望: 964 点
在线时间: 784(时)
发自: Web Page
//接受g711u- (void) ReceiveVideo{//&&&&[self ss];&&&&&&&&&&NSLog(@&%d&,self.avindexz);&&&&SMsgAVIoctrlAVStream ioM&&&&memset(&ioMsg, 0, sizeof(SMsgAVIoctrlAVStream));&&&&if ((ret = avSendIOCtrl(_avindexz, IOTYPE_USER_IPCAM_START, (char *)&ioMsg, sizeof(SMsgAVIoctrlAVStream)) & 0))&&&&{&&&&&&&&&&&&&&&&NSLog(@&start_ipcam_stream_failed[%d]&, ret);&&&&&&&&&&&&}&&&&NSLog(@&[thread_ReceiveVideo] Starting...&);&&&&&&&&char *buf = malloc(VIDEO_BUF_SIZE);&&&&NSLog(@&---------------------------------------------------2-1-1--1-1-1-1&);&&&&unsigned int frmNo;&&&&&&&&FRAMEINFO_t frameI&&&&&&&&int64_t ptr = videoDecodecInit();&&&&&&&&int size[2];&&&&int flag = 0;&&&&&&&&char * buf1 = (char *)malloc(1280 * 720 *2);&&&&AppDelegate *myIsClick = [UIApplication sharedApplication].&&&& &&&&while (myIsClick.isClick)&&&&{&&&&&&&&&&&&&&&&ret = avRecvFrameData(_avindexz, buf, VIDEO_BUF_SIZE, (char *)&frameInfo, sizeof(FRAMEINFO_t), &frmNo);&&&&&&&&&&&&&&&&if(ret == AV_ER_DATA_NOREADY)&&&&&&&&{&&&&&&&&&&&&usleep(30000);&&&&&&&&&&&&&&&&&&&&}&&&&&&&&else if(ret == AV_ER_LOSED_THIS_FRAME)&&&&&&&&&&&&&&&&&&&&{&&&&&&&&&&&&NSLog(@&Lost video frame NO[%d]&, frmNo);&&&&&&&&&&&&&&&&&&&&}&&&&&&&&else if(ret == AV_ER_INCOMPLETE_FRAME)&&&&&&&&{&&&&&&&&&&&&NSLog(@&Incomplete video frame NO[%d]&, frmNo);&&&&&&&&&&&&&&&&&&&&}&&&&&&&&else if(ret == AV_ER_SESSION_CLOSE_BY_REMOTE)&&&&&&&&{&&&&&&&&&&&&NSLog(@&[thread_ReceiveVideo] AV_ER_SESSION_CLOSE_BY_REMOTE&);&&&&&&&&&&&&&&&&&&&&}&&&&&&&&else if(ret == AV_ER_REMOTE_TIMEOUT_DISCONNECT)&&&&&&&&{&&&&&&&&&&&&NSLog(@&[thread_ReceiveVideo] AV_ER_REMOTE_TIMEOUT_DISCONNECT&);&&&&&&&&&&&&&&&&&&&&}&&&&&&&&else if(ret == IOTC_ER_INVALID_SID)&&&&&&&&{&&&&&&&&&&&&NSLog(@&[thread_ReceiveVideo] Session cant be used anymore&);&&&&&&&&&&&&&&&&&&&&}&&&&&&&&&&&&&&&&NSLog(@&ret =&&%d&,ret);&&&&&&&&&&&&&&&&if (videoDecodec(ptr, buf, ret, frameInfo.timestamp, size, buf1) &0) {&&&&&&&&&&&&&&&&&&&&}&&&&&&&&&&&&&&&&NSLog(@&%d,%d&,size[0],size[1]);&&&&&&&&&&&&&&&&if (flag) {&&&&&&&&&&&&&&&&&&&&&&&&_theImage = [self imageFromRGB565:buf1 width:size[0] height:size[1]];&&&&&&&&&&&&&&&&&&&&} else {&&&&&&&&&&&&&&&&&&&&&&&&if(frameInfo.flags == IPC_FRAME_FLAG_IFRAME)&&&&&&&&&&&&{&&&&&&&&&&&&&&&&_theImage = [self imageFromRGB565:buf1 width:size[0] height:size[1]];&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&flag = 1;&&&&&&&&&&&&}}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&if(_downloadBlock){&&&&&&&&&&&&_downloadBlock(_theImage);&&&&&&&&}&&&&}&&&&free(buf1);&&&&free(buf);&&&&&&&&NSLog(@&---------------------------------------------------1-1-1--1-1-1-1&);&&&&videoDecodecDestroy(ptr);&& &&&&NSLog(@&[thread_ReceiveVideo] thread exit&);}
Pages: 1/3
关注本帖(如果有新回复会站内信通知您)
9*6-8 正确答案:46
发帖、回帖都会得到可观的积分奖励。
按"Ctrl+Enter"直接提交
关注CocoaChina
关注微信 每日推荐
扫一扫 浏览移动版}

我要回帖

更多关于 ffmpeg 命令行参数 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信