x265 windwos使用wsl调试
【01】代码
multicoreware / x265_git / wiki / Home — Bitbucket
【02】编译
#需要numa相关包
sudo apt-get install libnuma-dev
#需要cmake 和 cmake
sudo apt-get install cmake
sudo apt-get install cmake-curses-gui
进入编译脚本目录:
#生成makefile,脚本在 build/linux 下:
./make-MakeFiles.bash
输入完后按 c 执行 configura。
然后执行 make 即可:
生成的可执行文件需要和动态库同目录才能运行,查看版本:
这一步生成的 makefile 会根据 source/CMakeLists.txt 指定启动入口,修改启动类 默认为 x265.cpp,为方便调试修改为 test.cpp ,修改 CMakeLists.txt 如下:
全局搜索 x265.cpp 修改为 test.cpp 即可。然后重新 make 生成 h265 可执行文件,运行 target 就能运行 test.cpp 测试类。
修改源码后需要重新编译进行debug,进入 build/linux 下执行 make 后生成新的 x265 可执行文件。
test.cpp 调用如下:
/** x265 编码接口调用示例* */int main(int argc, char** argv){const char *src_fname = "/home/tangyufan/workspace/clion-workspace/x265_git/debug/352x288frames300.yuv";const char *dst_fname = "/home/tangyufan/workspace/clion-workspace/x265_git/debug/352x288frames300.h265";FILE *fp_src = NULL;FILE *fp_dst = NULL;// yuv 输入filefp_src = fopen(src_fname,"rb");// h265 输出filefp_dst = fopen(dst_fname,"wb");// 参数结构体x265_param* pParam = x265_param_alloc();// 设置默认参数x265_param_default(pParam);pParam->bRepeatHeaders = 1; // 是否每个关键帧都输出V PS, SPS and PPS headerspParam->internalCsp = X265_CSP_I420; //yuv420pParam->sourceWidth = 352; //分辨率pParam->sourceHeight = 288; //分辨率pParam->fpsNum = 25; //fps 分子pParam->fpsDenom = 1; //fps 分母pParam->bframes = 0; //禁用b帧编码pParam->frameNumThreads = 1; //每次编码一帧pParam->logLevel = 2;pParam->numaPools = "1"; //工作线程池设置// 所有参数std::cout << "pParam:" << pParam << std::endl;// 编码器x265_encoder* pHandle = x265_encoder_open(pParam);if(pHandle==NULL){printf("x265_encoder_open err\n");return 0;}// 图片结构体初始化 用来保存每一帧输入的yuv分量x265_picture *pPic_in = x265_picture_alloc();x265_picture_init(pParam,pPic_in);// 分辨率 352*288=101376 个像素点int resolving = pParam->sourceWidth * pParam->sourceHeight;// yuv每一帧图像占用的字节数是1.5倍分辨率char *buff = NULL;buff = (char *)malloc(resolving * 3/2);pPic_in->planes[0] = buff;pPic_in->planes[1] = buff+resolving;pPic_in->planes[2] = buff+resolving*5/4;pPic_in->stride[0] = pParam->sourceWidth;pPic_in->stride[1] = pParam->sourceWidth/2;pPic_in->stride[2] = pParam->sourceWidth/2;// 每一帧会编码成多个 pNals、个数就是 iNalx265_nal *pNals=NULL;uint32_t iNal=0;int ret;//循环编码n帧数for(int n=1;n<=2;n++){/** YUV格式分为两大类:planar(平面)和packed(打包)。这里是planar平面模式提取分量* planar格式,先连续存储所有像素点的Y分量,紧接着存储所有像素点的U,随后存储所有像素点的V。* packed格式,每个像素点的Y、U、V分量是连续存储的* */// YUV中,每一帧中,每1个像素点一个Yfread(pPic_in->planes[0],1,resolving,fp_src);// YUV中,每一帧中,每4个像素点通用一个Ufread(pPic_in->planes[1],1,resolving/4,fp_src);// YUV中,每一帧中,每4个像素点通用一个Vfread(pPic_in->planes[2],1,resolving/4,fp_src);// 将图片输入编码器 pPic_instd::cout << "编码 start1.." << std::endl;ret = x265_encoder_encode(pHandle,&pNals,&iNal,pPic_in,NULL);std::cout << "编码 end1.." << std::endl;// 一帧被编码成 iNal 个 pNals 如果有可以取出来的 nal 数据则取出来写入文件if(iNal>0){for(int j=0;j<iNal;j++){fwrite(pNals[j].payload,1,pNals[j].sizeBytes,fp_dst);// printf("Flush 1 frame.\n");}}}// 输出编码器中剩余的 nal 数据// 该模块使用的函数和编码模块是一样的。唯一的不同在于不再输入视频像素数据。它的作用是输出编码器中剩余的码流数据。while(1){// 编码结果写入 pNalsstd::cout << "编码 start2.." << std::endl;ret = x265_encoder_encode(pHandle,&pNals,&iNal,NULL,NULL);std::cout << "编码 end2.." << std::endl;if(ret==0){break;}// pNals 写入文件for(int j=0;j<iNal;j++){fwrite(pNals[j].payload,1,pNals[j].sizeBytes,fp_dst);// printf("Flush 1 frame.\n");}}// 打印 编码信息x265_encoder_close(pHandle);}
在 clion 中 load source/CMakeLists.txt 文件后,选择工具链为 wsl 可以直接点击箭头运行。
x265 windwos使用wsl调试相关推荐
- x265笔记_1_下载调试
文章目录 下载x265 配置环境 图文步骤 报错`CMake Error :Visual Studio 15 2017 -could not find any instance of Visual S ...
- Win10 Bash/WSL调试Linux环境下的.NET Core应用程序
一.简介 使用过Mac OS的程序员都知道,在Mac Book Pro上写程序是一件比较爽的事儿,作为dotneter,我们都比较羡慕Mac系统的环境,比如命令行,当然设备也是挺漂亮的. 在新的Win ...
- Win10 Bash\/WSL调试Linux环境下的.NET Core应用程序
一.简介 使用过Mac OS的程序员都知道,在Mac Book Pro上写程序是一件比较爽的事儿,作为dotneter,我们都比较羡慕Mac系统的环境,比如命令行,当然设备也是挺漂亮的. 在新的Win ...
- 835 由于安全层无法对远程计算机进行身份验证_vscode 插件Remote-ssh远程wsl调试python
解决远程ssh端口非22的问题,见文末 参考文献: Developing on Remote Machines using SSH and Visual Studio Codecode.visual ...
- wsl调试linux内核,微软更新Linux子系统,编译WSL 2内核只需3步
点击▲存眷 "CU手艺社区" 给公家号标星置顶 [本文来自:www.pp00.com] 更多出色 第一时间直达 [本文来自:www.pp00.com] 晓查 发自 凹非寺转自量 ...
- MIT6.824环境搭建:wls+vs code
MIT6.824环境搭建:wls+vs code 背景 尝试学习MIT 6.824分布式系统,他们的实验使用的是go语言,并且不支持window.打算使用wls+vs code搭建开发环境.这里做记录 ...
- WSL2 上不了外网。解决!
我主要是想在vs里的wsl调试我的.netcore程序,在wsl2里装了ubuntu,弄了我好久都上不了外网,apt update没法用,.net 环境没法安装,气死我了. 试过网上找到的大部分方法, ...
- win10下使用pycharm调试wsl的代码
安装wsl 网上一大把,自己搜.我自己装的ubuntu 18 将代码放在win10的目录中 如 d:\teether wsl安装python3-pip wsl的Ubuntu下已经装了python3 p ...
- 用Visual Studio 2019连接 WSL来编译调试C/C++项目
因为有作业要在Linux环境下写,用虚拟机直接卡成PPT,VS code又不会调试,就搞一下VS 2019吧. 环境 windows 10 + WSL(Ubuntu 18.04.4) + Visual ...
最新文章
- linux shell 求绝对值
- 2021 年前端趋势预测
- [转]Microsoft SQL Server 自定义函数整理大全
- HTTP -- 目录
- php代理请求失败,http请求失败有哪些原因
- Lync Server 2013 标准版部署(十)边缘服务器部署[三]
- java 验证码的制作
- vim编辑器常用插件安装及配色方案
- python int转换为byte_Python int与byte类型相互转化
- java403forbidden_Spring Cloud出现Options Forbidden 403问题解决方法
- 腾讯与阿里巴巴投资可编程芯片公司Barefoot Networks
- 微服务通用的“用户角色权限”平台设计
- Kubernetes——KubeSphere部署worldpress应用
- 基于医疗RFID手术用品智能柜管理应用方案
- SEO流量变现,看这个项目就够了!
- 专用VPX背板连接器
- 教你一个无本万利的赚钱方法_一个在股市中稳健赚钱的方法
- (1) Debian 项目介绍
- centos linux 下的jdk安装 jdk-6u26-linux-x64.bin
- 二氯乙烷(EDC)的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
热门文章
- 怎么从SPSS的分析结果中得出回归方程?
- android app内部打开word pdf .doc类型文件的两种方式
- 【华为OD机试真题 python】补种未成活胡杨 【2022 Q4 | 100分】
- slim android7 nexus7,新Nexus 7详细拆解:拆装不难,外壳脆弱
- Elasticsearch深度探秘搜索技术如何手动控制全文检索结果的精准度
- sm2262en怎么量产?sm2262en量产工具,sm2263en开卡软件,sm2263en、sm2262en使用量产工具成功开卡的方法指引
- Word-embeding 【paper】
- h5页面制作案例-高水准页面制作引领营销风潮
- 云服务器文件管理系统,文件服务器版文档管理系统
- 【C语言】BC62统计数据正负数个数(DAY 4)