FFMPEG入门[通俗易懂]

FFMPEG入门[通俗易懂]本文转自 http://blog.csdn.net/leixiaohua1020/article/details/15811977

大家好,又见面了,我是你们的朋友全栈君。

本文转自 http://blog.csdn.net/leixiaohua1020/article/details/15811977

1、分离YUV420P像素数据中的Y、U、V分量

/** 
 * Split Y, U, V planes in YUV420P file. 
 * @param url  Location of Input YUV file. 
 * @param w    Width of Input YUV file. 
 * @param h    Height of Input YUV file. 
 * @param num  Number of frames to process. 
 * 
 */  
// simplest_yuv420_split("test_yuv420p.yuv",256,256,1);
int simplest_yuv420_split(char *url, int w, int h,int num){  
    FILE *fp=fopen(url,"rb+");  
    FILE *fp1=fopen("output_420_y.y","wb+");  
    FILE *fp2=fopen("output_420_u.y","wb+");  
    FILE *fp3=fopen("output_420_v.y","wb+");  
  
    unsigned char *pic=(unsigned char *)malloc(w*h*3/2);  
  
    for(int i=0;i<num;i++){  
  
        fread(pic,1,w*h*3/2,fp);  
        //Y  
        fwrite(pic,1,w*h,fp1);  
        //U  
        fwrite(pic+w*h,1,w*h/4,fp2);  
        //V  
        fwrite(pic+w*h*5/4,1,w*h/4,fp3);  
    }  
  
    free(pic);  
    fclose(fp);  
    fclose(fp1);  
    fclose(fp2);  
    fclose(fp3);  
  
    return 0;  
}  

从代码中可以看出,如果视频帧的宽和高分别为w和h,那么一帧YUV420P像素数据一共占用w*h*3/2 Byte的数据。其中
前 w*h Byte存储Y,接着的w*h/4 Byte存储U,最后w*h/4 Byte存储V。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/153387.html原文链接:https://javaforall.net

(0)
上一篇 2022年6月26日 上午6:16
下一篇 2022年6月26日 上午6:36


相关推荐

  • python连接数据库插入数据「建议收藏」

    python连接数据库插入数据「建议收藏」python连接数据库插入数据在数据库创建表并插入测试数据dropdatabaseifexistshrs;createdatabasehrsdefaultcharsetutf8mb4;usehrs;createtabletb_dept(dnointnotnullcomment’编号’,dnamevarchar(10)notnullcomment’名称’,dlocvarchar(20)notnullcomment’所在地’,prim

    2025年7月12日
    4
  • 平均数中位数众数的实际意义_频率分布直方图平均数

    平均数中位数众数的实际意义_频率分布直方图平均数平均数:反映了一组数据的平均大小,常用来一代表数据的总体“平均水平”。中位数:像一条分界线,将数据分成前半部分和后半部分,因此用来代表一组数据的“一般水平”。众数:反映了出现次数最多的数据,用来代表一组数据的“多数水平”。平均数:与每一个数据都有关,其中任何数据的变动都会相应引起平均数的变动。主要缺点是易受极端值的影响,这里的极端值是指偏大或偏小数,当出现偏大数时,平均数将会被抬高,当出现…

    2025年12月13日
    4
  • JS合并两个数组的方法

    JS合并两个数组的方法我们在项目过程中 有时候会遇到需要将两个数组合并成为一个的情况 比如 vara 1 2 3 varb 4 5 6 有两个数组 a b 需求是将两个数组合并成一个 方法如下 1 concat js 的 Array 对象提供了一个叫 concat 方法 连接两个或更多的数组 并返回结果 varc a concat b c 1 2 3 4 5 6 这

    2026年3月17日
    2
  • jedis与redis连接详解

    jedis与redis连接详解jedis 初始操作详解

    2026年3月16日
    2
  • window下彻底卸载删除SQL Serever 2012

    window下彻底卸载删除SQL Serever 2012对于刚刚涉足数据库软件的小白们,肯定会遇到由于下载的数据库是英文版的,但是又由于自身的英文水平有限,一些专业的英文单词看的并不是很明白想着是否能够将英文的SQLserver2012汉化,但是由于有中文版的SQL,汉化这件事就很少有人弄了,所以在网上很少出现中文包大家肯定有过怎样才能将SQL彻底的卸载干净,毕竟安装目录加上实例目录加上就有10G,由于一些实例目录默认在系统C盘,占据了很大的一部

    2022年10月2日
    5
  • idea重写方法的快捷键

    idea重写方法的快捷键1 鼠标放在方法内部 按 Ctrl O 如下图

    2026年3月19日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号