UINT CMP4File::VideoCap_Thread_Fun(void* pParam)
{
CMP4File *pMP4File=(CMP4File*)pParam;
//初始化AVPacket
av_init_packet(&pMP4File->m_AVPacket);
int nFrameFinished = 0;
while(true)
{
if(av_read_frame(pMP4File->m_pFormatCtx, &(pMP4File->m_AVPacket)) >=0) {
int nDecodeResult=avcodec_decode_video2(pMP4File->m_pCodecContext, pMP4File->m_pFrame,
&nFrameFinished, &(pMP4File->m_AVPacket));
if(nDecodeResult>0)
{
if(nFrameFinished>0)
{
int iReturn=sws_scale(pMP4File->m_pSwsContext, pMP4File->m_pFrame->data,
pMP4File->m_pFrame->linesize, 0, pMP4File->m_nFrameHeight,
pMP4File->m_pRGBFrame.data, pMP4File->m_pRGBFrame.linesize);
AVFRAME_INFO pFrame;
memset(&pFrame, 0, sizeof(AVFRAME_INFO));
int m=1980, n=1080;
pFrame.uWidth=pMP4File->m_nFrameWidth;
pFrame.uHeight=pMP4File->m_nFrameHeight;
//显示
unsigned char* outStream = (unsigned char*)(pMP4File->m_pRGBFrame.data[0]);
pMP4File->Drawer(&pFrame, outStream);
av_free_packet(&pMP4File->m_AVPacket);
}
}//if
}
return 0;
}
1 花屏的原因
2 视频的类型,如H264、MPEG,视频流的长度,在那个函数获得?
3 其实是播放MP4文件,提供解码MP4文件类似的代码吗?
谢谢!
16 个解决方案
#1
没有人吗?中秋节都放假了?
#2
测试foreman.264,
nDecodeResult=11369, nFrameFinished=0
nDecodeResult=1898, nFrameFinished=0
nDecodeResult=633, nFrameFinished=232
nDecodeResult=2341, nFrameFinished=232
我没百度到,avcodec_decode_video2返回什么?从大到小,递增?
参3,后面就一直固定是某值,是什么意思?
nDecodeResult=11369, nFrameFinished=0
nDecodeResult=1898, nFrameFinished=0
nDecodeResult=633, nFrameFinished=232
nDecodeResult=2341, nFrameFinished=232
我没百度到,avcodec_decode_video2返回什么?从大到小,递增?
参3,后面就一直固定是某值,是什么意思?
#3
花屏很多是分辨率设置不对之类的问题。
我倒是有一个FFMPEG+SDL播放器,你可以试试
http://blog.csdn.net/leixiaohua1020/article/details/8652605
我倒是有一个FFMPEG+SDL播放器,你可以试试
http://blog.csdn.net/leixiaohua1020/article/details/8652605
#4
avcodec_decode_video2返回的是处理的字节数,这个要去ffmpeg的头文件里面找。
意思:
avcodec_decode_video2(AVCodecContext,解码后AVFrame,是否成功?,解码前AVPacket)
意思:
avcodec_decode_video2(AVCodecContext,解码后AVFrame,是否成功?,解码前AVPacket)
#5
我知道,花屏的原因了,解码格式不对,PIX_FMT_YUV420P。
但现在有,另一个问题:播放几分钟后就运行不了。
MP4文件,有音频,视频,我只解视频显示。这有影响吗?
但现在有,另一个问题:播放几分钟后就运行不了。
MP4文件,有音频,视频,我只解视频显示。这有影响吗?
#6
花屏的原因主要可能是解码不对吧!~
看看解码部分代码吧!
如果有音频和视频的 要分开解码的吧!
两个都不一样的!只有一个肯定不行的!
看看解码部分代码吧!
如果有音频和视频的 要分开解码的吧!
两个都不一样的!只有一个肯定不行的!
#7
但现在问题是,为什么,编译没问题,但运行有问题?
#8
会不会是FFMPEG库的问题?
#9
#10
我解码也遇到花屏了,用opencv采集的图片,编码的h264文件可以用VLC软件打开正常播放,但是解码的YUV视频是花屏的
#11
我的也是花屏,解码后的数据保存文件播出来不花屏,播实时流到最后显示的时候就会出现,这是什么问题?我解码的格式什么的都对呢
#12
我的播1080p的时候花屏 播720p的时候就好着,跟分辨率有关 可我怎样让它播1080p的时候不花屏?
#13
我测出来确实是解码的问题 解码完了保存的数据就出现花屏了 怎么解决呀 大神呢 求帮助
#14
大神们,我的界面也出现花屏的现象。不知道怎么解决
解码的过程出现的结果是
解码的过程出现的结果是
#15
请问楼主是在怎么拼帧的呢
#16
我遇到了跟11楼相同的问题,有木有大神解决呢?
#1
没有人吗?中秋节都放假了?
#2
测试foreman.264,
nDecodeResult=11369, nFrameFinished=0
nDecodeResult=1898, nFrameFinished=0
nDecodeResult=633, nFrameFinished=232
nDecodeResult=2341, nFrameFinished=232
我没百度到,avcodec_decode_video2返回什么?从大到小,递增?
参3,后面就一直固定是某值,是什么意思?
nDecodeResult=11369, nFrameFinished=0
nDecodeResult=1898, nFrameFinished=0
nDecodeResult=633, nFrameFinished=232
nDecodeResult=2341, nFrameFinished=232
我没百度到,avcodec_decode_video2返回什么?从大到小,递增?
参3,后面就一直固定是某值,是什么意思?
#3
花屏很多是分辨率设置不对之类的问题。
我倒是有一个FFMPEG+SDL播放器,你可以试试
http://blog.csdn.net/leixiaohua1020/article/details/8652605
我倒是有一个FFMPEG+SDL播放器,你可以试试
http://blog.csdn.net/leixiaohua1020/article/details/8652605
#4
avcodec_decode_video2返回的是处理的字节数,这个要去ffmpeg的头文件里面找。
意思:
avcodec_decode_video2(AVCodecContext,解码后AVFrame,是否成功?,解码前AVPacket)
意思:
avcodec_decode_video2(AVCodecContext,解码后AVFrame,是否成功?,解码前AVPacket)
#5
我知道,花屏的原因了,解码格式不对,PIX_FMT_YUV420P。
但现在有,另一个问题:播放几分钟后就运行不了。
MP4文件,有音频,视频,我只解视频显示。这有影响吗?
但现在有,另一个问题:播放几分钟后就运行不了。
MP4文件,有音频,视频,我只解视频显示。这有影响吗?
#6
花屏的原因主要可能是解码不对吧!~
看看解码部分代码吧!
如果有音频和视频的 要分开解码的吧!
两个都不一样的!只有一个肯定不行的!
看看解码部分代码吧!
如果有音频和视频的 要分开解码的吧!
两个都不一样的!只有一个肯定不行的!
#7
但现在问题是,为什么,编译没问题,但运行有问题?
#8
会不会是FFMPEG库的问题?
#9
#10
我解码也遇到花屏了,用opencv采集的图片,编码的h264文件可以用VLC软件打开正常播放,但是解码的YUV视频是花屏的
#11
我的也是花屏,解码后的数据保存文件播出来不花屏,播实时流到最后显示的时候就会出现,这是什么问题?我解码的格式什么的都对呢
#12
我的播1080p的时候花屏 播720p的时候就好着,跟分辨率有关 可我怎样让它播1080p的时候不花屏?
#13
我测出来确实是解码的问题 解码完了保存的数据就出现花屏了 怎么解决呀 大神呢 求帮助
#14
大神们,我的界面也出现花屏的现象。不知道怎么解决
解码的过程出现的结果是
解码的过程出现的结果是
#15
请问楼主是在怎么拼帧的呢
#16
我遇到了跟11楼相同的问题,有木有大神解决呢?