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。

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • allargsconstructor_constructor java

    allargsconstructor_constructor java接触Lombok@NoArgsConstructor,@RequiredArgsConstructor,@AllArgsContructor。是Lombok插件三种生成不同构造方法的注解,来完成项目中不同构造方法的需求。@NoArgsConstructor:生成一个无参数的构造方法@AllArgsContructor:?会生成一个包含所有变量@RequiredArgsCon…

  • python 元类编程_python定义元组

    python 元类编程_python定义元组前言通常我们创建类都是使用class类名,但是小伙伴们有没有想过,类是由谁来创建的呢,python中常说的万物皆对象,对象是由类创建的,那类本身也可以看做是对象,类可以由元类type创建type

  • docker nginx+php(docker nginx反向代理)

    一、docker安装:将微信公众号项目运行绑定至80端口(微信服务器只能和外部开通了80端口的服务器之间通信)docker一次构建可放在任何地方就可以运行,不需要进行任何改变DocKer就类似于一个容器。这个容器就好像咱们常用的虚拟机一样,当我们虚拟机里面安装过VS、SQL、浏览器……之后咱们就把虚拟机镜像备份下来、等到下一次需要重新搭一个环境的时候,就可以省去很多事情了,直接…

  • Ubuntu卸载软件_ubuntu卸载桌面

    Ubuntu卸载软件_ubuntu卸载桌面ubuntu删除软件和相关配置记录一下,记不住,避免每次都查1、卸载命令一般的卸载方式:sudoapt-getremovexxxx卸载并清除相关配置命令sudoapt-getremove–purgexxxx例如想删除Vimsudoapt-getremove–purgevim…

  • MySQL相关问题整理

    MySQL相关问题整理备注:针对基本问题做一些基本的总结,不是详细解答!1.事务的基本要素2.事务隔离级别(必考)3.如何解决事务的并发问题(脏读,幻读)(必考)4.MVCC多版本并发控制(必考)5.为什么选择B+树作为索引结构(必考)6.索引B+树的叶子节点都可以存哪些东西(必考)7.查询在什么时候不走(预期中的)索引(必考)8.sql如何优化9.explain是如何解析sql的…

  • Java教学视频下载(全集)

    Java教学视频下载(全集)1:四百本Java电子书下载链接:http://www.verycd.com/topics/2784992/2:蓝点在线Java视频教程http://you.video.sina.com.cn/a/1905723-1393828897/1/2.html3:J2EEWeb程序开发定向班V1.0Java就业班V2.0(完整版)http://www.verycd.com/topics/…

发表回复

您的电子邮箱地址不会被公开。

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