雷博的代码! 此处文件格式为YUV420P 使用ffmpeg编码h.264
讲解一下这里的pFrame->data为什么要这样赋值?
代码链接:http://blog.csdn.net/leixiaohua1020/article/details/25430425
假如原始帧格式为YUYV422P的时候 data又该怎么赋值?
3条回答 默认 最新
- 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
FANWEI271870169 2018-01-11 09:20最佳回答 专家已采纳YUV420P y分量占width*height大小的内存, u和v分别占 width*height/4(也就是图像大小的四分之一),uv加起来是y大小的一半,yuv一共是1.5个图像大小,
yuv在内存中的排列是先是y,从picture_buf的开始处开始,大小为图像大小,也就是y_size;接着是u,u的内存开始处在y后面,也就是picture_buf+y_size处,大小为四分之一图像的大小,也就是四分之一y_size的大小;接着是v,v的内存开始处在u后面,也就是picture_buf+y_size+ y_size/4(因为u的大小为y_size/4),也就是picture_buf+y_size*5/4 。
YUV420P 这种内存分布是叫平面格式(Planar),即Y、U、V是分开存储的,还有一种分布是打包格式(Packed),yuv是交织排列的,也就是yuyv。
你说的YUYV422P应该是内存交织排列的,另外yuv422是u和v合起来占width*height,也就是分别占width*height/2,YUV420P u和v分别占 width*height/4。
交织排列的赋值的话需要循环遍历了。
不知道上面说的你清楚了不。采纳该答案 已采纳该答案 专家已采纳评论解决 无用打赏举报微信扫一扫
分享评论登录 后可回复...
查看更多回答(2条)
报告相同问题?
提交
相关推荐 更多相似问题
- 2018-01-11 08:48回答 3 已采纳 YUV420P y分量占width*height大小的内存, u和v分别占 width*height/4(也就是图像大小的四分之一),uv加起来是y大小的一半,yuv一共是1.5个图像大小, yuv
- 2019-12-15 09:52回答 1 已采纳 检查下在ffmpeg的lib目录下,有没有libx264的dll/so文件。
- 2016-11-03 02:30回答 2 已采纳 原因找到了,改为从H264流直接提取帧后解决了问题。经本人验证,从mp4容器提取264流和从h264流读到的数据是一样的,但是从容器读取视频流会使用多核解码,在嵌入式ARM上就跑不了.
- 2021-02-07 17:22All In !!!的博客 int ret = avcodec_encode_video2(pCodecCtx, &pkt, pFrame, &got_picture); 编码一帧视频。即将AVFrame(存储YUV像素数据)编码为AVPacket(存储H.264等格式的码流数据)。 成功时返回0,失败时返回负错误...
- 2018-12-01 13:42HW140701的博客 原因:FFmepg新版本已经将该...解决方案2:修改为新的API接口函数 旧API函数写法示例 int AnimationMp4VideoGeneration::WriteVideoFrame(AVFormatContext * oc, OutputStream * ost) { int ret; AVCodec...
- 2018-01-29 10:20FFmpeg是领先的多媒体框架,能够解码,编码, 转码,复用,解复用,流,过滤和播放人类和机器创造的任何东西(ffmpeg encode video demo.c)
- 2019-12-17 09:44回答 1 已采纳 https://ask.csdn.net/questions/1023560
- 2015-04-24 02:12回答 1 已采纳 http://blog.chinaunix.net/uid-26000296-id-3316150.html 看看这里有没有
- 2021-10-19 10:42回答 1 已采纳 检查了sws_scale的源码,发现是检测后两个参数出现了问题,解决办法:给待输出的AVFrame分配具体的空间,不只是要av_frame_alloc初始化,还需利用av_image_alloc;
- 2018-05-02 20:31wu_cai_的博客 ffmpeg avcodec_encode_video2 前面10多帧不能实时编码,查找原因!版本v1.2.1 原因找到:需要设置编码的速度和是否实时编码;见红色的部分! 注意: #include <libavutil/opt.h> /* Add an ...
- 2021-05-26 09:57Hardy20200507的博客 本文简单分析FFmpeg的avcodec_encode_video2()函数。该函数用于编码一帧视频数据。avcodec_encode_video2()函数的声明位于libavcodec\avcodec.h,如下所示。 /** * Encode a frame of video. * * Takes input raw...
- 2017-05-12 13:51shuihappy1的博客 总结此次出现错误原因是:提供给avcodec_encode_video2函数的frame数据的yuv格式和编码器所能编码的yuv数据格式不符。 项目之前使用ffmpeg完成了将yuv数据保存成视频文件的功能,最近需要添加一项新功能:满足条件...
- 2021-12-27 17:27回答 3 已采纳 发现问题了,是av_bitstream_filter_filter函数没有释放内存问题,可以参考https://xilixili.net/2018/08/20/ffmpeg-got-raw-h264/
- 2021-05-23 20:06回答 1 已采纳 问题已经得到解决: import os # 执行命令行指令, 直到结束 def execCmd(cmd): r = os.popen(cmd) text = r.read().s
- 2022-04-01 15:26回答 4 已采纳 你是怎么使用ffmpeg的,node js的解决办法,搭建你自己的服务,代码如下,引用ffmpeg,cdn的话使用 https://ffmpegwasm.netlify.app/替换你原来的链接或者使
- 2022-03-29 11:12奋斗吧!骚年!的博客 在目前avcodec_decode_video2函数处于deprecated废弃状态,但是仍然可以使用 /** * Decode the video frame of size avpkt->size from avpkt->data into picture. * Some decoders may support multiple ...
- 2019-08-27 16:46终成一个大象的博客 音频编码器的参数(声道数,采样率,采样格式,位宽,采样数)和frame的参数不一致。 编码格式对应的采样数和frame的采样数不一致。 只要声道数,采样率,采样格式,位宽,采样数,任何一个参数不一致,都需要...
- 2019-12-29 14:48终成一个大象的博客 经过分析发现avcodec_encode_video2()接口在进行h264编码时,消耗资源过多。 2、解决方案: 在h264编码器初始化时,指定编码器参数ultrafast和zerolatency // 设置编码器参数 AVDictionary *param = 0; av_dict_s...
- 2015-04-28 12:53回答 2 已采纳 I have already answered for this same question just look at that answer,you will know what n=mista
- 2022-03-05 23:57徐福记456的博客 FFmpeg在libavcodec模块,旧版本提供avcodec_encode_video2()作为视频编码函数,avcodec_encode_audio2()作为音频编码函数。在FFmpeg 3.1版本新增avcodec_send_frame()与avcodec_receive_packet()作为音视频编码函数...
- 没有解决我的问题, 去提问