关于ffmpeg编码与解码的问题,基本问题

maos2012 2010-09-03 10:57:37
我的程序过程是这样的:
在symbian系统上用ffmpeg进行视频h264编码,然后用udp发送到PC端,PC端再用ffmpeg解码显示出来。
这是symbian里我对AVCodecContext的设置:
iCodecCTX->codec_id = CODEC_ID_H264;
iCodecCTX->codec_type = CODEC_TYPE_VIDEO;
iCodecCTX->frame_number = 1;
iCodecCTX->bit_rate = 400000;
iCodecCTX->width = 100;
iCodecCTX->height = 200;
iCodecCTX->time_base.den = 10;
iCodecCTX->time_base.num = 1;
iCodecCTX->pix_fmt = PIX_FMT_YUV420P;

用于编码的图像是我的伪造的,大小是100*200,用avcodec_encode_video()编码后返回1041,然后我将这1041字节数据发送到pc端,pc端接收后用avcodec_encode_video()进么解码,下面是解码的AVCodecContext设置:
c->codec_type = CODEC_TYPE_VIDEO;
c->frame_number = 1;
c->bit_rate = 400000;
c->width = 100;
c->height = 200;
c->time_base.den = 10;
c->time_base.num = 1;


但是解码生成的AVFrame中linesize与原图像不一致,变成的144,72,72,原来是100,50,50,请问这是正常的吗?
...全文
733 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
SuperKan 2010-09-06
  • 打赏
  • 举报
回复
ffmpeg中编码的数据应该要求8或者16 bytes对齐的,不能任意给定尺寸。
hainei_ 2010-09-05
  • 打赏
  • 举报
回复
建议你到视频技术论坛里去问这个问题:
http://bbs.chinavideo.org/index.php
maos2012 2010-09-03
  • 打赏
  • 举报
回复
再请问一下,avcodec_encode_video()的返回值是干什么意思,源码里的描述是这样的:
* @return On error a negative value is returned, on success zero or the number
* of bytes used from the input buffer.
意思是使用的输入缓冲中的字节数,可是编码后的字节数又是多少呢?

2,543

社区成员

发帖
与我相关
我的任务
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
  • 多媒体/流媒体开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧