跳转到内容

小天管理

管理员
  • 注册日期

  • 最后上线

小天管理 发表的所有内容

  1. 本文无任何推广,请放心阅读。 本文无任何推广,请放心阅读。 本文无任何推广,请放心阅读。 前前言 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
  2. 一到下午额头和鼻子上就会出很多油,还会有油颗粒,有推荐的护肤品吗
  3. 我能想到的一些问题: 0.心理建设,我不相信 web3 能改变世界这种宏大叙事,但是我对这方面的有探求心,至少我想知道为什么有人信画出来的大饼,如果遇到画大饼的,我该如何一边吃饼一边保持质疑? 1.需要哪些技术栈? 2.需要哪些辅助技能? 3.该关注哪些信息来进行决策?这里指行业方向相关的方向决策。 4.有没有一个明晰的 roadmap ?可以不保证成功,但是至少是有人成功过的路。 5.有没有低成本尝试的可能性?目标是全职,但是贸然下水还是怕淹死。 回到老家之后才发现只要是工作就会有不如意的地方,那不如痛并快乐,总比温水煮青蛙要好。
  4. 如题,更新完了就再也没连上过,使用手机投屏也找不到 watch ,但是手机上都能显示手表的电量啥的,手表也能通过手机获取天气
  5. 记得 10 几年前的时候自由门虽然速度比较慢 但是大部分时间还是可以访问的 现在上网基本是 v2ray xray 这种把流量伪装成 https 的软件 而像自由门感觉很久没有更新了 是不是现在已经基本不能用了
  6. 前天晚上睡觉前发现 AirPods Pro 右耳已经完全失灵了,无论在弹窗还是小组件中都看不到它的存在,蓝牙连接也没有一点声音。 这个一代的 AirPods 是 2021 年 618 入手的,花了 1228 块,用了三年也算值了,是我所有电子设备中使用频率仅次于手机的,比 MacBook Air 还要高。本来想借此机会入手二代,因为二代吸引我的一个点是宣传的降噪效果,是一代的两倍,很让我心动。 于是白天抢 1200 减 50 的京东 plus 100 元券,10 点,14 点,20 点都没有抢到,只好明天再战。 但是,就在昨天睡觉前,我惊讶地发现 AirPods Pro 一代的右耳又恢复了,开始一点点地充电了… 然而我还是想买二代,念头一旦勾起就很难打消。 那么问题来了,二代降噪效果有宣传的那么神奇,比 1 代真的有好 2 倍吗,用过的朋友怎么看? 今年会不会有新的耳机发布,现在是适合买二代的时间吗? 另外,在京东买用尽各种优惠仍然比 pdd 百亿补贴贵 100 块左右,去 PDD 合适吗?
  7. 手机也不用重启, 点一下就变了. 是怎么实现的啊? //背景: flutter 感知不到这种修改的字体, 会导致和原生写的 app 字体不一样, 看起来很突兀
  8. 最近收到简历投递回复问:在日本到底那种编程语言更好找工作!?? 根据 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 是一门值得学习的好语言。 大家觉得呢??
  9. 起因 最近一直看山地锁鞋( shimano spd ),真是挑花眼了,而且已经交了点学费(贪便宜买二手结果不合适) 都说遇事不决 shimano ,从¥500 入门款一直看到了¥1500 竞赛款,很难选择 之前骑行服都是买了入门款,最近换了迪卡侬的高阶款的确实舒服(价格还算好) 综上,我考虑是不是锁鞋也买个高阶,但又怕交学费,毕竟找到合适的鞋有点难 目前看中的有 shimano xc3/xc7/rx8 ,Fizik X4 我个人的水平属于休闲骑不追求速度,每月也就一两百公里,也拿小布环过千岛湖
  10. 今天注册成功了,但是不知道如何把这些个羊毛用好 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 有懂得分享下吗?比如搭建梯子稳定吗?
  11. 想知道现在土区还有哪些有价格优势的软件
  12. https://gematria-calculator.com/ 为了快速上线,只有一个静态页面 功能如下: gematria 计算器网站 在我们生活的每一天,数字无处不在,它们不仅仅是简单的计量工具,更隐藏着深奥的秘密和意义。是否曾好奇过,您的名字、生日或某个特定词语在数字世界中的独特含义?欢迎来到 Gematria 计算器网站,这里将为您揭开这些数字背后的神秘面纱。 什么是 Gematria ? Gematria 是一种古老的数字系统,通过将字母转换为数字来揭示词语和短语的深层含义。这种方法起源于犹太教传统,但在现代,它已经被广泛应用于各种文化和研究领域。无论您是出于好奇心、研究目的,还是寻找灵感,Gematria 都能为您提供新的视角 开发过程 在 Cloudflare 做域名解析 代码托管在 github 上 最后在 vercel 发布部署 从发现这个需求到开发,3 、4 天左右,整个开发过程,后面继续完善 包括添加谷歌统计等等
  13. 不挑号,盲发。走闲鱼,非偏远包普快 原封带卡板全新未激活,有需要的朋友可以联系我 V:Ranger7hero V:Ranger6hero 或者 Telegram: @haisenbergor 相关文档: https://www.yuque.com/u33641174/lp0fcn/fptse35ohsfsmz5e 现货不议价,只要链接还在就可以直接拍,圆通包非偏远地区。 [闲鱼] https://m.tb.cn/h.5DSG6Qm?tk=AiWrWnGqVX8 CZ3456 「我在闲鱼发布了 [ skinny 安迪斯马斯特原厂金属面盖 有线款无线款均适用的金] 」 点击链接直接打开 或闲鱼搜用户:请叫偶达文西 飞机换绑不成功的话就更换节点,或者下载最新版本重新注册。 激活后一年内免费接码,截止日前充值 5NZD 或者转入转出 1NZD 即可续期一年,可以加我 V 我后期空了会拉群方便互转
  14. 前提: 有一个项目,Android 客户端使用 Java 开发,iOS 客户端使用 OC 开发,目前这个项目想打包成系统提供给多个不同客户使用,同时根据客户需求定制开发一些个性化功能,由我们来维护。API 层面对接后端系统基本一致,但是 UI 层面根据客户需求可能有所不同。 目前我的想法是:客户端分离成 UI 层 + API 数据层,API 数据层可以封装成一个库,不管维护多少个客户、多少套系统都可以统一维护,减少维护成本。 有考虑过使用 Rust 、Go 等开发成 so 库,可以同时给到 Android 、iOS 两端使用,有没有人有过类似经验可以分享? Rust 好些还是 Go 好些?
  15. 有的时候工作忙起来没得看;有的时候有空,可是 v 站当天有趣的帖子 差不多半小时就看完了😑 最好是有趣的或者能学点东西的
  16. 目前公司在做的服务都是单独的 sprintboot ,包括鉴权都是独立鉴权,现在随着越做越大,想要升级成 springcloud 做微服务,求推荐架构 主要是注册服务的选型:nacos 、console ? 其次,配套的网关服务的选型(网关可能需要支持一定的扩展,因为公司的服务后续面相客户会有收费场景,可能会对某个客户请求 api 接口做限流、网关后续需要支持统计类的能力,比如高峰场景主要的接口压力在哪里,热点接口是哪些等) 或者大家有没有那种成套的服务可以推荐,我这边借鉴参考下,感谢🙏
  17. 二十多岁,被裁了失业在家。 前几天看本站的帖子有人说半夜口渴,我也有这症状。一直以为是吃咸了。 一检查,啥毛病都来了。 今天去查血糖,空腹都 8.7 了。貌似已经是糖尿病了?怎么搞? 尿酸也高,还有脂肪肝,严重骨质疏松……… 🥲辛苦赚点点钱还不够看病………
  18. 需求:看设备树文件时,能点击跳转、有 outline 、有代码高亮
  19. 1 )轻的眼镜架除了诗乐还有其他选择吗? 2 )不能无框的,全框和半框的这方面的差异大吗? 高度数的眼镜架,是不是镜腿要越长越好?
  20. 有个私活,还在谈,原型确认过了,也就是功能定了,没有难度。就差开发时间和报价了,老板可能有点急。 我做后台,找个 Android 开发,比较闲的。 留个联系方式, v 、q 、电报都可,可以 base64 。先看下原型,估下时间和费用。 有疑问可以在评论区留言。
  21. 省流:IPV6 还不如直接给我 NAT1 得了 起码还能打洞 目前运营商各种操作,不给公网 V4 地址,改 NAT4 ,然后给 V6 搪塞说这个也能用 我就想说 V6 现阶段到底有啥用 就拿手机来说吧,双栈访问,说的是优先 V6 ,结果呢,很多时候 V6 地址访问不了,必须开一下飞行模式才行。 电脑就更别说了,V6 对于很多家用路由器都是新鲜玩意,默认基本都不会开。运营商提供的光猫带 wifi 的,倒是都能拿到,这也改变不了 V6 在目前状态下难用的境地。 我之前前前后后用了 cf 的代理,找还有公网 V4 的朋友 FRP 开几个端口,垃圾云主机的代理转发。都用的不是很满意。 最后研究一下网络情况,发现垃圾联通居然还有点良心,是 NAT1 ,用 tailscale 的打洞功能,直连回家的感觉真的爽。 目前我大致准备了几套方案做备选: 1.V6 还是用起来,那天打洞不稳定了,就用手机使用 DDNS 回去看看啥情况。 2.使用朋友的 FRP 做分享,有些时候在不方便安装 tailscale 的地方,临时使用朋友的 frp 中转一下 3.CF 代理转换,这个只能说做实验,网络稳定性很差。 总的来说,V6 在 V4 公网缺失的情况下做替代方案真的难搞,还不如 NAT1 稳定打洞呢 另:有没有哪位有更好玩的技术可以解决这个问题?在此请教