社区
多媒体/流媒体开发
帖子详情
ffmpeg解码H.264流,odec_decode_video解码后,数据为空?
hanshy
2010-10-25 02:19:39
在进行初始化等工作之后调用avcodec_decode_video,返回值是正确的整型数据,填入的buff和size都是正确的,而第二个参数AVFrame*指向的data和linesize都是空(错误的指针)?求指教。
...全文
383
5
打赏
收藏
ffmpeg解码H.264流,odec_decode_video解码后,数据为空?
在进行初始化等工作之后调用avcodec_decode_video,返回值是正确的整型数据,填入的buff和size都是正确的,而第二个参数AVFrame*指向的data和linesize都是空(错误的指针)?求指教。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
asgaobiao
2010-11-30
打赏
举报
回复
如果输入的文件,可以进行open,读到formatcontext的话,应该就可以解码的,步骤就是那么一步步来的,你找找ffmpeg的outputexample看看你少了哪一步,小问题!
chilli211
2010-11-29
打赏
举报
回复
你没有给AVCodecContext *c赋值。
在c= avcodec_alloc_context();后面赋值,否则解码失败。
njupt_baitao
2010-11-28
打赏
举报
回复
memset(pBuffer+nBufferSize,0,8);
这句话什么意思没看懂。
有可能是你传入的数据太少,不足以解码,造成GOT_picture为0.
hanshy
2010-10-26
打赏
举报
回复
再次顶起,求高手解答疑惑,谢谢。
hanshy
2010-10-25
打赏
举报
回复
贴上代码,帮我分析下。
------------------------------------------------------------------------------------------------------------------
bool DecodeStream(BYTE* pBuffer, int nBufferSize)
{
avcodec_init(); //初始化
av_register_all(); //挂载所有解码器
AVCodec *codec;
AVCodecContext *c= NULL;
int got_picture, len;
AVFrame *picture;
uint8_t *inbuf_ptr;
codec = avcodec_find_decoder(CODEC_ID_H264);//找到H264的解码器
if (!codec)
{
return false;
}
c= avcodec_alloc_context();
picture = avcodec_alloc_frame();
if(codec->capabilities&CODEC_CAP_TRUNCATED)
{
c->flags|= CODEC_FLAG_TRUNCATED;
}
if (avcodec_open(c, codec) < 0) /* open it */
{
return false;
}
inbuf_ptr = pBuffer;
while (nBufferSize > 0)
{
memset(pBuffer+nBufferSize,0,8);
len = avcodec_decode_video(c, picture, &got_picture,inbuf_ptr, nBufferSize);
TRACE("data[0] = %d\n",picture->data[0]);
if (len < 0)
{
return false;
}
nBufferSize -= len;
inbuf_ptr += len;
}
len = avcodec_decode_video(c, picture, &got_picture,NULL, 0);
avcodec_close(c);
av_free(c);
av_free(picture);
return true;
}
传进来的数据流是一帧的数据,调试到红色语句部分返回的len等于nBufferSize。picture里面data[0]~data[3]和及linesize全空,got_picture等于0;
ffmpeg
解码
h264
数据
本文内容均为原创,转载请注明出处。 使用
ffmpeg
解码
h264
数据
其实相对使用x264进行视频编码是简单了许多的,因为
ffmpeg
提供了一个decoding_encoding.c的文件,这个文件里面有简单的使用
ffmpeg
进行视频、音频编
解码
的例子,不过可能有的人也会找不到这个示例,我就讲我改造过的这个示例放在这里,同时加一些解释。 其中需要注意的的一点我需要在此说明,就是
ffmpeg
在
基于
ffmpeg
-1.1的视频
解码
并输出到LCD显示
ffmpeg
_
dec
ode
.c: #include #include vc
ode
c/avc
ode
c.h> #include #include #include #include "myhead.h" #include "lcd.h" /*
ffmpeg
中的AVFormat库可以帮助进行这一“分拆音视频
流
ffmpeg
音视频编
解码
的封装
//导入头文件//核心库#include "libavc
ode
c/avc
ode
c.h"//封装格式处理库#include "libavformat/avformat.h"//工具库#include "libavutil/imgutils.h"//视频像素
数据
格式库#include "libswscale/swscale.h"#include "libswresample/swresample.h"...
为什么有的文件AAC音频
解码
会这样子
Input channel count and layout are unset url=rtsp://192.168.13.180:554/HN20200113_191814.ts,
video
c
ode
c_id=0x1b, audio c
ode
c_id=0x15002 m_
video
Type=96 audioindex=1 proto=tcp transport proto=rtsp CRx:...
MFC中如何利用
ffmpeg
和SDL2.0多线程多窗口播放摄像头的视频
我前一篇文章,详细介绍了如何查找摄像头和摄像头支持的分辨率信息,查找到摄像头和麦克风之后做什么呢?两个目的,第一个目的是播放,第二个目的是编码之后发送服务器
流
媒体
数据
,第三个目的就是存在本地硬盘上了,本文就是播放摄像头采集的
数据
。 本人初次接触音视频相关的项目,研究了几天,从网上断断续续的找到不少摄像头播放的资料,但是都是简单例子,本文解决了2个问题: 第一个问题是播放多个摄像头的视频第二个问...
多媒体/流媒体开发
2,554
社区成员
20,277
社区内容
发帖
与我相关
我的任务
多媒体/流媒体开发
专题开发/技术/项目 多媒体/流媒体开发
复制链接
扫一扫
分享
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章