跳转到内容
彼岸论坛

小天管理

管理员
  • 内容数

    15713
  • 注册日期

  • 最后上线

  • 得奖次数

    1

小天管理 发表的所有内容

  1. 家里有一台 飞利浦的 345M2R 不长时间敲代码,打游戏勉强够用 但是公司的 1080p 用着 不一会眼睛就花了 想换台显示器 上一次花时间看显示器还是 2021 年 预算 3000 左右
  2. 德国这边也是有养殖的淡水鱼类跟渔场的,大多数是 Forelle: 同事推荐了一个不错的渔场,可以吃到最新鲜的烤鱼: http://www.fischzucht-zordel.de/ 可惜没有清蒸( 坐飞机遇到一个弗莱堡的博士生,跟我一样也是个吃货。说巴登符腾堡酒类协会可以买到 80 年份的非常棒的红酒,也就 200 欧左右,买回国送人非常合适。 最近 xhs 上找到这边可以挖化石的采石场,非常适合带小孩子一起学习古生物知识(
  3. 岗位职责: 1 、负责公司客⼾端跨平台产品的开发; 2 、持续优化和改进 Flutter ⻚⾯及框架的性能和稳定性; 3 、负责业务的设计和开发,以及难点的技术攻坚 任职要求: 1 、2 年以上⼯作经验(会双语:英语+汉语),具有扎实的编程功底,良好的设计能⼒和编程习惯; 2 、熟悉 Flutter 、Dart 语⾔,熟练使⽤各种 UI 组件并进⾏UI 开发; 3 、熟悉 Web 前端开发,熟悉 IOS 、Android ⼀种或者多种原⽣开发的优先; 4 、持续对产品开发流程进⾏改进与优化,提⾼开发能⼒和效率,并能通过技术提升⽤⼾体验和可⽤性; 5 、有 Flutter 实际项⽬经验。 简历速投:tg:@foya005
  4. 精美外企,你值得拥有 我司截止目前还有 8 个 HC 1 ,Engineering Manager ,You will be a leader of a Kong Gateway UI team. These teams are responsible for the Konnect Gateway Manager and On-premise Kong Manager. 新设岗位,主要是工程团队管理,现已有前端,后端,全栈等 team 成员,另要求 Hands-on ,英语好,base 上海 2 , 高级后端开发工程师,2 个 HC ,分别做 Cloud 产品 Konnect 后端开发和 Kong Insomnia 后端开发,Go 语言,英语好,优先上海,其次北京 3 ,高级网关性能开发工程师,还有 1 个 HC ,隶属网关产品开发团队,英语口语可沟通,优先上海其次北京 4 ,资深网关开发工程师,1 个 HC ,主要做面向客户侧需求开发,要求英语口语流利,base 上海 4 ,网关测试工程师,2 个 HC ,英语好,TS ,JS 开发,懂网关产品加分,汇报给网关 EM 和 QE Leader (老外),优先上海,其次北京 5 ,高级前端开发工程师,强 Vue ,做过前端性能优化者优先,英语口语可沟通,base 上海 欢迎奔走相告,如感兴趣,欢迎直接投递英文简历到 chitty.li@konghq.com ***分享下上周我们去内蒙古团建的活动照
  5. AI Filter - 使用 AI 滤镜将你的照片变换为动漫、粘土、3D 、像素、表情符号、视频游戏、贴纸等多种滤镜风格。 支持的 AI 滤镜 AI 动漫滤镜 AI 粘土滤镜 AI 黑板滤镜 AI 像素滤镜 AI 贴纸滤镜 AI 3D 滤镜 AI 表情符号滤镜 AI 玩具滤镜 定价 注册可获得 20 积分,您可以订阅不同的计划以获得更多积分。 欢迎有需要的朋友们访问使用,非常期待你的使用反馈~
  6. 本文不构成任何投资建议。 按照自己目前的生活方式,每个月有 1w 的被动收入就可以比较自由过上 FIRE 生活。计划通过股票分红来实现,购买标的是红利低波 ETF 563020 。 在 5 年内,逐渐买够价值 200w-240w 的 ETF 份额,过程中股息复利持续买入。 按照 5%的股息率,基本可以实现每个月 1w 的收入,份额够了之后,只依靠分红生活,不卖出份额,不在乎份额的涨跌,只在乎股数。分红的成长来自于企业的盈利能力提高,所以分红增长应该会高于全社会的通货膨胀水平。 当然,大概率在份额买够之后还会再继续工作几年,等调整好心态以及再存一些安全垫之后,再提前退休。 这样的方式有人实践过吗?大家是否认可?
  7. 虽然写了挺久项目了,但一直以来都有个疑问,看一些项目提供的 API 文档,为每个 API 单独提供了可能返回的错误码列表,每个 API 不太一样 我很疑惑的一点就是,这种 API 的错误码列表是怎么整理出来的,因为这种列表并不像是能自动分析出来或人力可以总结出来的东西。因为每个 API 内部都会一层层调用各种方法、service 、repository 。 随着业务复杂,经过一层层的不断调用,一个 API 可能不知不觉就间接地调用了某个会抛出错误码的方法你自己都不知道 比如有几个 API 用户信息 GET /user/xxxxx 预约信息 GET /reservation/xxxxx 主页信息 GET /honme 店铺信息 GET /shops 用户信息 API 为了获取到用户信息,调用了 UserInfoRepository.GetUserInfo(xxxxx) 获取用户信息。这个方法可能会甩出 UserNotExists, UserIsdBanned 等错误码,然后这个方法内部还调用了其他的各种工具函数,可能会甩出 UserIDNotCorrect, DBConnectionError ,等等一大堆错误码。 然后预约信息 API 里因为也要获取用户信息,也调用了 UserInfoRepository.GetUserInfo(xxxxx)。这样预约信息 API 也会扔出 UserNotExists, UserIsdBanned 等错误码 然后主页信息 API 里因为需要展示用户预约信息,所以调用了获取预约信息的相关代码,从而间接调用了 UserInfoRepository.GetUserInfo(xxxxx) 这个方法。最后前三个 API 都经过简单或复杂的关联,最终都调用了 UserInfoRepository.GetUserInfo(xxxxx),会甩出同样的错误码。而第四个店铺信息 API 因为和用户无关,所以不会甩出对应错误码 这里就有个问题了,一个错误码经过复杂的调用可能会在任何 API 里被抛出来,似乎没有简单方法来分析一个 API 到底会抛出什么错误码。那么一些为 API 总结出各自错误码的 API 文档是怎么总结出这些错误码的?难道根据语言不同,有对应的代码分析工具?
  8. 项目组新插进来一个同事,本来是打算安排他写实际业务的。新同事刚进来就开始改项目配置,加上各种代码规范。后来新同事和产品老大关系搞得很好,产品老大就打算安排新同事管前端技术。新同事就搞了一个技术专讲会,就说分支名应该加上自己的名字什么什么的,例如 hotfix/name/实际业务。还有点击事件应该用 on 开头,目前项目里用的 handle ,新同事不太认同。这新同事一直说别人写的组件很不好,要像他的那种组件的写法,给我们展示了他的代码。 现在有个实际需求开发,但是我只是按照文档写了,还没测试,相当于还没做完。他非要让我先提 MR ,让他 code review ,我都没做完,我不太认同这种 MR 。
  9. 比如发个视频给它,他就会给你一个在线播放链接之类的
  10. 之前一直用的好像都挂了…… 各位 小伙伴有 iOS 下好用的快捷指令可以更新或下载嘛? 感谢!
  11. 放 useContext 里,目前可接受 放 redux zustand 里。 不过这样子相关的 redux devtool 中间件会报错失效 因为存在 JSON.stringify 无法解析的问题,关闭中间件调试起来会有点麻烦 通过传递 ref, 感觉这种写法有点累
  12. 在 mac m1 上安装了一个 android studio ,准备在模拟器里安装点摸鱼小游戏;但是在模拟器的 google 浏览器中,部分网址可以打开,部分无法访问;比如百度就可以访问,但是 taptap.cn 这个在模拟器中打不开,在电脑上就能打开。这是什么原因啊;根据网上说的,改 dns 也没效果。
  13. 一直在用 copilot-gpt4-service,前几天被发邮件就没有继续用了。忘记了 NAS 上 docker 还部署了一份,头天晚上上电开机,第二天又被发邮件且 copilot 被禁了。 让 chatgpt 帮忙写了一份态度诚恳的道歉信提交了工单(写的真好,读之令人感动🥹) Dear GitHub Support Team, I hope this message finds you well. I recently received a notification about the suspension of my GitHub Copilot access due to activities that triggered your abuse-detection systems. I would like to extend my sincere apologies for any inconvenience this may have caused. Upon reflection, I believe the issue may have arisen from my use of a service that interacted with Copilot in a way that might have been perceived as scripted or excessive. I assure you that it was not my intention to place any undue burden on your servers or violate the acceptable use policies. My primary goal was to enhance my development workflow and improve my coding practices. I have reviewed the Acceptable Use Policies and the Terms for Additional Products and Features for GitHub Copilot to ensure that I fully understand the guidelines and restrictions. Moving forward, I am committed to adhering to these policies and ensuring that my use of GitHub Copilot aligns with the expected standards. I kindly request that you consider reinstating my access to GitHub Copilot. Your support is invaluable to my work, and I am eager to continue leveraging Copilot in a responsible and compliant manner. Thank you for your understanding and consideration. I look forward to your positive response. Best regards, 5 个小时后收到回复解封了 Hi there, Thanks for reaching out to GitHub Support! It seems that your access to Copilot was restricted due to excessive and/or automated usage, usage through a proxy that interferes with how Copilot works, or credential sharing. This type of activity is in violation of our Terms of Service. Additionally, Copilot is intended to be a coding assistant and should not be used with third-party extensions/integrations in order to act like another GPT service. However, I have now removed the restriction from your account. We kindly ask that you use Copilot strictly within our supported extensions and comply with our Terms of Service going forward to prevent any future restrictions. For basic security hygiene; please ensure that your credentials are being used exclusively by you. Please note that scripting against our API, including automated or excessive usage and programmatic token generation, is prohibited. Please be aware that any subsequent violations of our Terms of Service and our Acceptable Use Policies may lead to the permanent revocation of your Copilot access and a permanent suspension of your GitHub account. If you have any further questions or concerns, please don’t hesitate to reach out to us. All the best, GitHub Support
  14. 听了好多年的 AMD YES 了, 硬件这块研究的不是很深,以前听说 AMD 有些兼容性的问题啥的,现在应该没有了? 工作上要换新电脑,单位现在预算卡的严,看 AMD 性价比高一些,不知道会不会买回来有什么问题,毕竟单位这么多年都是用的 intel 的。 还有显卡,40x0 的都贵的很,a 卡好像便宜点? 后端主要用途是 dotNet core 开发,显卡是要做一些三维模型显示,所以想要独显。 前端开发一般没啥问题吧。
  15. 本文无任何推广,请放心阅读。 本文无任何推广,请放心阅读。 本文无任何推广,请放心阅读。 前前言 hello ,兄弟们,我又来分享我的 ffmpeg 脚本啦。 上次分享了一个使用 ffmpeg ,将多张图片转换成类似幻灯片的视频,支持多种转场效果,说过在研究自定义效果,目前有点小成果,于是有了本文。 本次没有新增脚本,而是增强了ffmpeg.img2video.js,预置了一些自定义效果,并支持自己添加效果。 以下的都是本次的技术分享。如果你不感兴趣,可以直接到 GitHub 更新脚本。 开源地址 GitHub 地址:https://github.com/jifengg/ffmpeg-script 前言 使用xfade过滤器做视频转场切换效果,本身 ffmpeg 已经提供了 56 种效果,能满足大部分需求。不过,更复杂的过渡效果(例如翻页)还没有。 根据文档,使用 transition=custom+expr ,可以实现自定义的效果。但是,官方文档并没有对expr如何编写做详细说明,也没有 google 到。 因此,对其进行了一番研究,尝试实现了几种效果。简单做一个使用教程,希望能够帮助到有需要的人。 效果预览(点击查看视频,视频均小于 1MB ) 水滴 https://github.com/jifengg/ffmpeg-script/assets/17020523/b3cec5b1-d747-46bd-aae1-924289aaddce 百叶窗 https://github.com/jifengg/ffmpeg-script/assets/17020523/1bef9ae3-41c3-4747-ae41-9056ae4e6892 简易翻页 https://github.com/jifengg/ffmpeg-script/assets/17020523/30c810a1-7522-4829-8450-4602c8203853 ffmpeg 官方 wiki https://trac.ffmpeg.org/wiki/Xfade ffmpeg 官方文档翻译 以下翻译自FFmpeg xfade 官方文档 xfade 将淡入淡出从一个输入视频流应用到另一个输入视频流。淡入淡出将持续指定的时间。 两个输入必须是恒定帧速率,并且具有相同的分辨率、像素格式、帧速率和时间基准。 该过滤器接受以下选项: transition 'custom' [忽略] duration 设置交叉淡入淡出持续时间(以秒为单位)。范围为 0 至 60 秒。默认持续时间为 1 秒。 offset 设置相对于第一个输入流的交叉淡入淡出开始时间(以秒为单位)。默认偏移量为 0 。 expr 设置自定义过渡效果的表达式。 表达式可以使用以下变量和函数: X Y 当前样本的坐标。 W H 图像的宽度和高度。 P 过渡效果的进展。 [译注] 过渡开始时,P=1.0 ,过渡结束时,P=0.0 。 PLANE 目前正在处理的平面。 [译注] 这里的平面,其实就是指像素格式的分量。 [译注] 取值范围由输入流的像素格式 pix_fmt 决定,如 yuv420p ,则取值范围是 0 ,1 ,2 ;如 rgba ,则取值范围是 0 ,1 ,2 ,3 。 A 返回第一个输入流在当前位置和平面的值。 B 返回第二个输入流在当前位置和平面的值。 a0(x,y) a1(x,y) a2(x,y) a3(x,y) 返回第一个输入的第一/第二/第三/第四个分量的 位置 (x,y) 处的像素的值。 [译注] 例如,像素格式是 yuv420p ,a0 返回的是 Y 分量。a1 返回的是 U 分量。a2 返回的是 V 分量。没有 a3 b0(x,y) b1(x,y) b2(x,y) b3(x,y) 返回第二个输入的第一/第二/第三/第四个分量的 位置 (x,y) 处的像素的值。 理解 P 一般来说,ffmpeg 中支持时间轴编辑的过滤器,都有t和n参数可以用在表达式中,其中t表示时间秒,n表示帧数。 但是 xfade 里却是用的 P ,它不是t或n。如果你理解错了,会发现自定义效果完全没效。 因为,它表示的是过渡效果的进度,而且,重要的是,它是个递减的数。 过渡动画开始的时候,P=1.0 ; 过渡动画结束的时候,P=0.0 ; 它的值是按帧线性递减的,例如,duration=4 ,fps=25 ,那么第二帧的时候,P=1.0-1/(4*25)=0.99 ; 可以通过数学函数来改变 P 的“线性”,例如 P*P*(3-2P),(Smoothstep,函数图)。 注意,P 是从 1.0 到 0.0 ,因此查看函数图的时候要注意从右往左看。 如果你觉得从右往左看不直观,把所有 P 都改成(1-P)吧。 win11 自带的计算器有一个“绘图”功能,能够很好的显示各种数学函数的图形,可以用来辅助理解。 理解 X,Y,W,H X,Y 表示坐标,是指“当前正在计算表达式的像素的坐标”,按照我们要实现的效果,决定该像素对应的颜色码。 W,H 是图像的宽高,这个在整个渐变过程是保持不变的。 理解 PLANE,A,B,a0(x,y),...,b0(x,y),... a0(x,y)表示第一个视频坐标 x,y 处的像素的第一个分量值。 PLANE 表示当前是计算的第几个分量值。 A 是一个简写,当 PLANE=0 时,A=a0(X,Y); PLANE=1 时,A=a1(X,Y); PLANE=2 时,A=a2(X,Y);以此类推。 b 和 B 同 a 和 A 。 注意,无法通过类似a(plane,x,y)的方法来获得指定坐标指定分量的值,因此在像素有位移的时候,表达式会比较长。如if(eq(PLANE,0),a0(X,Y),if(eq(PLANE,1),a1(X,Y),if(eq(PLANE,2),a2(X,Y),0))) 理解 expr xfade的expr,返回一个值,但是这个值是什么含义呢,一般人看文档很难理解。 以 300x200 的输入源为例,假设其像素格式是 yuv420p ,则其分量个数是 3 。( ffmpeg 支持的像素格式及格式信息,可以通过ffmpeg -pix_fmts查看)。 像素点是60000个,每一帧的像素分量总数就是60000*3=18 万个。 那么,过渡开始的第一帧,ffmpeg 会遍历每个像素点的每个分量,分别调用expr,并设置 X,Y,PLANE 等值。总共调用18 万次获得对应的值,来完成第一帧的渲染。 如果我们希望每一帧就是显示第一个视频的画面,那么可以写expr=A即可。A表示的就是第一个视频当前像素当前分量的值。 尝试 1 ,实现渐隐渐显效果 如果我们希望实现第一个视频渐渐变透明,第二个视频由透明渐渐显现,类似xfade默认的效果fade,那么可以写expr='A*P+B*(1-P)'。 因为 P 是从 1.0 线性变成 0.0 的。所以一开始 P=1 ,表达式计算结果=A,看到的就是只有第一个视频画面,到一半时,P=0.5 ,结果=0.5A+0.5B,画面就是两个视频分别半透明叠加在一起。最后 P=0.0 时,结果=B,就只剩下第二个视频的画面了。 尝试 2 ,实现擦除效果 同样的,如果我们希望实现一个从右往左擦除的效果(图片引用自https://trac.ffmpeg.org/wiki/Xfade): 分析一下,分割线在画面水平线上的位置 X ,除以宽度 W ,其实就是等于 P ,于是,我们可以让分割线左边的显示画面 A ,右边的显示画面 B 。 expr='if(lt(X/W,P),A,B)':当X/W<P的时候,说明 X 在分割线左边,于是显示 A ,否则显示 B 。 分割线上显示 A 还是 B ,影响不大。这里是显示了 B ,如果要显示 A ,可以用lte代替lt。 尝试 3 ,实现推走效果 从上面两个例子你大概能理解 expr 要返回什么内容了。我们接着第三个例子。 如果我们希望实现的是一个从右往左推走的效果: 你会发现,变得更复杂了。你可以先暂停试试自己能否写出来。 为什么更复杂了?以坐标(0,0)为例,他显示的像素时刻都在变化(因为画面在往左移动)。 例如,在 P=0.8 的时候,它(0,0)应该是视频 A X=W*0.2,Y=0 坐标处的像素值。(这里需要好好理解,参考下图帮忙理解) 在X/W>P的地方,应该显示视频 B 的画面,其坐标转换关系是(X-P*W,Y)。 注意,此时你没法再用值A和B了,因为它们是坐标(X,Y)的分量,而我们要在(X,Y)处显示别的坐标的像素,这个我们在上面理解 PLANE,A,B,a0(x,y),...,b0(x,y),...的地方说过了。 那么这个表达式要怎么写呢? expr='if(lt(X/W,P),^ if(eq(PLANE,0),a0(X+(1-P)*W,Y),^ if(eq(PLANE,1),a1(X+(1-P)*W,Y),^ if(eq(PLANE,2),a2(X+(1-P)*W,Y),0)))^ ,^ if(eq(PLANE,0),b0(X-P*W,Y),^ if(eq(PLANE,1),b1(X-P*W,Y),^ if(eq(PLANE,2),b2(X-P*W,Y),0)))^ )' 我测试的时候用的是 windows 的 bat 脚本,为了方便理解和修改,用^进行了换行。注意不要有空格,否则会报错。 测试的时候用的是 yuv420p 像素格式,因此表达式没有用到 a3 ,如果是用了 4 个分量的像素格式需要把 a3 按照上面的格式加进去。 其中,分割线左边显示视频 A 的画面,且 x 坐标左移了(1-P)*W 个像素,因此其 x 坐标表达式是X+(1-P)*W; 右边显示视频 B 的画面,且 x 坐标右移到了分割线右边,因此其 x 坐标表达式是X-P*W。 因为是水平移动,所以 y 坐标保持Y即可。 于是,随着 P 从 1.0 渐变到 0.0 ,视频 A 就像被视频 B 从右边推到了左边,完成了一个过渡效果。 小结 现在,你已经了解了 expr 要怎么编写来实现过渡效果了。我还实现了一些其它效果,包括示例里的,你可以在 GitHub 上查看。 性能 在 windows 下创建 2 个 bat 文件,分别输入测试命令: @echo off @REM 使用 custom 实现 slideleft 效果 ffmpeg -y -hide_banner ^ -f lavfi -i "pal100bars=r=1/1000" ^ -f lavfi -i "colorchart=r=1/1000" ^ -filter_complex ^ [0:v]format=yuv420p,scale=960:480,fps=25,trim=duration=40[v1];^ [1:v]format=yuv420p,scale=960:480,fps=25,trim=duration=40.04[v2];^ [v1][v2]xfade=duration=40:offset=0:transition=custom:^ expr='if(lt(X/W,P),^ if(eq(PLANE,0),a0(X+(1-P)*W,Y),^ if(eq(PLANE,1),a1(X+(1-P)*W,Y),^ if(eq(PLANE,2),a2(X+(1-P)*W,Y),0)))^ ,^ if(eq(PLANE,0),b0(X-P*W,Y),^ if(eq(PLANE,1),b1(X-P*W,Y),^ if(eq(PLANE,2),b2(X-P*W,Y),0)))^ )' ^ -crf 23 -c:v h264 -pix_fmt yuv420p -movflags +faststart -r 25 -aspect 960:480 ^ out1.mp4 @echo off @REM 使用内置的 slideleft 效果 ffmpeg -y -hide_banner ^ -f lavfi -i "pal100bars=r=1/1000" ^ -f lavfi -i "colorchart=r=1/1000" ^ -filter_complex ^ [0:v]format=yuv420p,scale=960:480,fps=25,trim=duration=40[v1];^ [1:v]format=yuv420p,scale=960:480,fps=25,trim=duration=40.04[v2];^ [v1][v2]xfade=duration=40:offset=0:transition=slideleft ^ -crf 23 -c:v h264 -pix_fmt yuv420p -movflags +faststart -r 25 -aspect 960:480 ^ out2.mp4 这里使用的动画时长是 40 秒,可以自行修改成 0~60 秒。 在我电脑上运行,耗时分别是:自定义17.514 秒,内置1.605 秒。 可以看出,使用自定义的效果,远比内置效果更耗时。原因我们在“理解 expr”有提过,因为每一帧需要调用 expr 次数=960×480×3=1,382,400 。一百多万次。而且是纯 CPU 运算,因此效率自然底下。 好在一般的过场时长是 3 、4 秒左右,影响还在可接受范围内。 如果你在寻找更高效的自定义效果,可以考虑使用xfade_opencl过滤器,或者自行编译 ffmpeg ,加入gl-transition过滤器。 其它转场过滤器 xfade_opencl 要使用xfade_opencl,需要编译的时候加入--enable-opencl,且运行的机器有支持 opencl 的设备(一般指显卡)。 要查看当前机器有哪些 opencl 的设备,可以运行以下命令: ffmpeg -v debug -init_hw_device opencl 打印出类似信息: [AVHWDeviceContext @ 0000027894f28400] 1 OpenCL platforms found. [AVHWDeviceContext @ 0000027894f28400] 1 OpenCL devices found on platform "NVIDIA CUDA". [AVHWDeviceContext @ 0000027894f28400] 0.0: NVIDIA CUDA / NVIDIA GeForce RTX ***** 其中0.0就是可用的 opencl 设备编号,在 ffmpeg 命令中指定使用该设备: ffmpeg -y -hide_banner -init_hw_device opencl=ocldev:0.0 -filter_hw_device ocldev ^ -f lavfi -r 25 -t 40 -i "pal100bars" ^ -f lavfi -r 25 -t 40.04 -i "colorchart" ^ -filter_complex ^ [0:v]format=yuv420p,scale=960:480,hwupload[v0];^ [1:v]format=yuv420p,scale=960:480,hwupload[v1];^ [v0][v1]xfade_opencl=duration=40:offset=0:transition=slideleft,hwdownload,format=yuv420p ^ -c:v h264_nvenc -pix_fmt yuv420p -movflags +faststart -r 25 -aspect 960:480 ^ out3.mp4 性能比自定义 xfade 效果好很多,唯一要求就是需要支持 opencl 的设备(一般指显卡)。 且,xfade_opencl也是支持自定义效果的,官方文档。 内置的几个效果的源码可以查看 GitHub 上 ffmpeg 的源码:https://github.com/FFmpeg/FFmpeg/blob/master/libavfilter/opencl/xfade.cl gl-transition gl-transitions是由开发者 Gilles Lamothe 创建的,它封装了大量的 GPU 加速过渡效果,包括但不限于溶解、推拉、旋转等多种类型。这些过渡效果可以轻松地整合到你的图形应用程序中,无论你是开发游戏、视频编辑软件还是实验性的艺术项目。 它使用 OpenGL 进行加速,因此,也需要支持 OpenGL 的设备(一般指显卡)。 它不是 ffmpeg 专属的,但是可以做为一个过滤器添加到 ffmpeg 中。参考这个 GitHub 项目transitive-bullshit/ffmpeg-gl-transition。 编译后,你将可以使用其官网上的所有效果,当然也可以自己编写自定义的效果。 性能方面,因为我没有自行编译测试,所以无法给出具体数据。 它使用 GLSL 语言编写,如果你看了上面 OpenCL 的部分,你会发现它们有很多共同点。 甚至,我在编写xfade自定义表达式的时候,也参考了它的 GLSL 代码。比如效果预览中的水滴,就是参考了WaterDrop。 结语 不知道是 ffmpeg 官方觉得 xfade 的 expr 编写太过容易,还是觉得性能不行不建议使用,反正官方文档及 wiki 都没有示例,也没有提及如何编写。 我自己基本上是自己看着文档猜测、尝试,慢慢的摸索出来一些门道。想着网上没有一个类似的教程,于是变写了这个文章。 如果你发现文章哪里有问题,欢迎指出,大家共同进步。 本文存档:https://github.com/jifengg/ffmpeg-script/blob/main/docs/ffmpeg.xfade.md
  16. 一到下午额头和鼻子上就会出很多油,还会有油颗粒,有推荐的护肤品吗
  17. 我能想到的一些问题: 0.心理建设,我不相信 web3 能改变世界这种宏大叙事,但是我对这方面的有探求心,至少我想知道为什么有人信画出来的大饼,如果遇到画大饼的,我该如何一边吃饼一边保持质疑? 1.需要哪些技术栈? 2.需要哪些辅助技能? 3.该关注哪些信息来进行决策?这里指行业方向相关的方向决策。 4.有没有一个明晰的 roadmap ?可以不保证成功,但是至少是有人成功过的路。 5.有没有低成本尝试的可能性?目标是全职,但是贸然下水还是怕淹死。 回到老家之后才发现只要是工作就会有不如意的地方,那不如痛并快乐,总比温水煮青蛙要好。
  18. 如题,更新完了就再也没连上过,使用手机投屏也找不到 watch ,但是手机上都能显示手表的电量啥的,手表也能通过手机获取天气
  19. 记得 10 几年前的时候自由门虽然速度比较慢 但是大部分时间还是可以访问的 现在上网基本是 v2ray xray 这种把流量伪装成 https 的软件 而像自由门感觉很久没有更新了 是不是现在已经基本不能用了
  20. 前天晚上睡觉前发现 AirPods Pro 右耳已经完全失灵了,无论在弹窗还是小组件中都看不到它的存在,蓝牙连接也没有一点声音。 这个一代的 AirPods 是 2021 年 618 入手的,花了 1228 块,用了三年也算值了,是我所有电子设备中使用频率仅次于手机的,比 MacBook Air 还要高。本来想借此机会入手二代,因为二代吸引我的一个点是宣传的降噪效果,是一代的两倍,很让我心动。 于是白天抢 1200 减 50 的京东 plus 100 元券,10 点,14 点,20 点都没有抢到,只好明天再战。 但是,就在昨天睡觉前,我惊讶地发现 AirPods Pro 一代的右耳又恢复了,开始一点点地充电了… 然而我还是想买二代,念头一旦勾起就很难打消。 那么问题来了,二代降噪效果有宣传的那么神奇,比 1 代真的有好 2 倍吗,用过的朋友怎么看? 今年会不会有新的耳机发布,现在是适合买二代的时间吗? 另外,在京东买用尽各种优惠仍然比 pdd 百亿补贴贵 100 块左右,去 PDD 合适吗?
  21. 手机也不用重启, 点一下就变了. 是怎么实现的啊? //背景: flutter 感知不到这种修改的字体, 会导致和原生写的 app 字体不一样, 看起来很突兀
  22. 最近收到简历投递回复问:在日本到底那种编程语言更好找工作!?? 根据 2023 年日本招聘平台的岗位数量分析,最缺人的编程语言 1 JavaScript 2 Java 3 PHP 4 Python 5 TypeScript 6 C# 7 Ruby 8 C++ 9 C 10 Kotolin 其中,JavaScript 占比 14.4%、Java 占比 12.8%、PHP 占比 11.8%、Python 占比 9.6%、TypeScript 占比 8.8% C#占比 8.3%、Ruby 占比 6.0%、C++占比 5.1%、Kotolin 占比 4.2% Java 加上 SpringBoot 绝对是市场上岗位最多的技术。 无论是日本的传统 IT 还是稍有规模的公司都会使用,特别是派遣外包行业,绝大多数工作都是这个。 如果你技术一般般,觉得只能近传统 IT 大厂、中厂、派遣,那 Java+SpringBoot 就是不二之选。 Java+SpringBoot 是后端技术,前端自然也有一些岗位。 前端用的是 html+css+JavaScript/TypeScript 三件套,再加个前端框架 React/Angular/Vue 。 但是纯前端岗位比后端要少,学了前端搞不好还要学后端才能找到工作。 框架方面传统日企还是用 Angular 偏多,但是其他天地 React 风头正盛,长远看学 React 更好。 Python 由于其可读性和简单性,是初学者的绝佳选择。 其广泛应用于各个领域,包括 Web 开发、数据分析、科学计算和自动化。拥有庞大且支持性的社区,可以轻松找到资源和帮助。这是一门无论是新手还是老手程序员都推荐掌握的一门语言。 如果对从事网络开发或数据科学职业感兴趣,Python 是一门值得学习的好语言。 大家觉得呢??
  23. 起因 最近一直看山地锁鞋( shimano spd ),真是挑花眼了,而且已经交了点学费(贪便宜买二手结果不合适) 都说遇事不决 shimano ,从¥500 入门款一直看到了¥1500 竞赛款,很难选择 之前骑行服都是买了入门款,最近换了迪卡侬的高阶款的确实舒服(价格还算好) 综上,我考虑是不是锁鞋也买个高阶,但又怕交学费,毕竟找到合适的鞋有点难 目前看中的有 shimano xc3/xc7/rx8 ,Fizik X4 我个人的水平属于休闲骑不追求速度,每月也就一两百公里,也拿小布环过千岛湖
  24. 今天注册成功了,但是不知道如何把这些个羊毛用好 Always Free 服务 免费使用。 两个 Oracle Autonomous Database ,其中包含 Oracle APEX 和 Oracle SQL Developer 等强大工具。 两个 AMD Compute VM 最多 4 个 ARM Ampere A1 Compute 实例,每月有 3000 个 OCPU 小时和 18000 GB 小时 Block Storage 、Object Storage 和 Archive Storage ; Load Balancer 和数据出口; Monitoring 和 Notifications 有懂得分享下吗?比如搭建梯子稳定吗?
×
×
  • 创建新的...