首页 文章 精选 留言 我的

精选列表

搜索[多媒体处理工具],共10016篇文章
优秀的个人博客,低调大师

Ampache 5.5.4 发布,多媒体应用与文件管理器

Ampache 是一款安装在服务端的、提供音乐管理、播放、更新服务的软件。用户可以通过网络使用该软件提供的各种功能。Ampache 还允许多帐户管理、保存播放列表和共享列表等,是一个优秀的在线音乐服务解决方案。 Ampache 5.5.4 是一个小版本发布,主要进行了一些修复。具体更新内容如下: 数据库 550005 将 song_artist 和 album_artist 地图添加到 catalog_map 改变 根据目录操作更新目录映射表 在 webplayer 中强制 b 和 n 按键为返回和下一个 修复 全新安装时缺少数据库表 不在 album_artist 浏览时过滤 song_artist 不要在没有有效用户的情况下使用 catalog_filter 和 rating_filter 标签更新时上传/手动专辑艺术家地图 从 catalog_map 中删除没有该目录的歌曲或专辑的艺术家 为调用 play_url 的歌曲设置正确的转码比特率和 mime 查看所有项目时保存跟踪订单 使用 cache_target 进行缓存歌曲清理(硬编码为 mp3) 搜索 用于艺术家目录搜索的 SQL 确保保存的规则与加载时的正确名称匹配 命令行界面 连接失败时不尝试更新数据库 API 5.5.4 修复 Api::ping 和 Api::handshake 中的用户数翻倍 Api3::stats 方法的参数不正确 确保为歌曲对象设置输出比特率和 mime 带有不良字符的 RSS Feed 生成 不向每首歌曲的艺术家描述发送垃圾邮件 更新公告:https://github.com/ampache/ampache/releases/tag/5.5.4

优秀的个人博客,低调大师

Ampache 5.5.3 发布,多媒体应用与文件管理器

Ampache 是一款安装在服务端的、提供音乐管理、播放、更新服务的软件。用户可以通过网络使用该软件提供的各种功能。Ampache 还允许多帐户管理、保存播放列表和共享列表等,是一个优秀的在线音乐服务解决方案。 Ampache 5.5.3 是一个小版本发布,主要进行了一些修复。具体更新内容如下: Changed 更新 footer.inc.php 中的copyright year Localplay status 和 instance_fields function 清理 更新一些 docker 文件以匹配当前images 允许将 streams 添加到播放列表(包括右栏) webplayer 另一个 code rework,删除旧的“original”列表 Shuffle 是一个 action 而不是播放列表的状态 Fixed Hidden Genres 不应该有一个catalog 使用某些参数的 Streaming 无法识别会话/用户 应该在统计数据中计算播客对象 wanted pages 上的Null artist->id Search Album 'other_user' 最爱搜索 SubSonic 如果你在使用 get_user_data 时没有数据,则会出错 Response data 可能会退回到 mp3 并且与输出格式不匹配 webplayer 重新排序列表可能会丢失项目的跟踪 从列表中删除单个项目可能会创建一个奇怪的列表 完成播放后删除最终曲目(如果你已设置该选项) 更新说明:https://github.com/ampache/ampache/releases/tag/5.5.3

优秀的个人博客,低调大师

Ampache 4.4.3 发布,多媒体应用与文件管理器

Ampache 是一款安装在服务端的、提供音乐管理、播放、更新服务的软件。用户可以通过网络使用该软件提供的各种功能。Ampache 还允许多帐户管理、保存播放列表和共享列表等,是一个优秀的在线音乐服务解决方案。 Ampache 4.4.3 已发布,更新内容如下: 新增: Catalog::update_counts 来管理目录变化; 从你的标签中收集更多的艺术文件; 允许 RatingMatch 插件对 ”专辑->艺术家“ 进行评级(原来是歌曲->专辑->艺术家); 改变: 在转码时计算 MP3 流的长度以避免提前切断它; 删除: 当专辑艺术家不明显时不要应用它 修复: CVE-2021-32644 识别一个独特的 album_artist 查询; 搜索文件标签时不要返回重复的艺术作品; random::advanced_sql 中的 SQL 查询有歧义; 过滤随机和搜索页面类型元素; 现在播放的统计数据在不需要的时候会被覆盖掉; SubSonic: getNowPlaying 无法返回正在播放的媒体或正确的时间; createShare 不能正确设置 object_id,并且忽略了 expires 值; 更多详情可查看:https://github.com/ampache/ampache/releases/tag/4.4.3

优秀的个人博客,低调大师

VLC 3.0.11 发布,跨平台多媒体播放器

VLC 3.0.11 已发布,此版本改进了 HLS 播放和 AAC 播放,可寻找特定的 m4a 文件,还解决了 macOS 上暂停播放时的音频渲染回归错误。此外还修复了一个安全问题。 修复 HLS 回归错误 修复在 macOS 上启动时可能出现的崩溃问题 修复m4a 文件中查找不明确的问题 修复 Android 出现的重采样问题 修复在 macOS 上列出蓝光挂载点时出现的崩溃问题 避免在 macOS 上出现不必要的权限警告 修复 macOS 上暂停播放后永久静音的问题 修复 AAC 回归错误 以及安全问题的修复 详情查看http://www.videolan.org/vlc/releases/3.0.11.html

优秀的个人博客,低调大师

VLC 3.0.10 发布,跨平台多媒体播放器

VLC 3.0.10 已发布,此版本改进了对 DVD、macOS Catalina、自适应流媒体、SMB 和 AV1 格式的支持,并修复了一些严重的安全问题。 针对 DVD 的多项修复和改进 更好的自适应流媒体支持 修复 macOS 上视频渲染的问题 对 MP4 的各种改进 对 macOS Catalina 更好的支持 增加对 SMB2/3 共享的支持 修复安全问题,尤其是 microDNS 服务发现中的各种 DOS 问题 …… 详情查看更新日志 下载地址:http://www.videolan.org/vlc/releases/3.0.10.html

优秀的个人博客,低调大师

自然语言处理工具hanlp关键词提取图解TextRank算法

看一个博主(亚当-adam)的关于hanlp关键词提取算法TextRank的文章,还是非常好的一篇实操经验分享,分享一下给各位需要的朋友一起学习一下! TextRank是在Google的PageRank算法启发下,针对文本里的句子设计的权重算法,目标是自动摘要。它利用投票的原理,让每一个单词给它的邻居(术语称窗口)投赞成票,票的权重取决于自己的票数。这是一个“先有鸡还是先有蛋”的悖论,PageRank采用矩阵迭代收敛的方式解决了这个悖论。本博文通过hanlp关键词提取的一个Demo,并通过图解的方式来讲解TextRank的算法。 1//长句子 2String content = "程序员(英文Programmer)是从事程序开发、维护的专业人员。" + 3"一般将程序员分为程序设计人员和程序编码人员," + 4"但两者的界限并不非常清楚,特别是在中国。" + 5"软件从业人员分为初级程序员、高级程序员、系统" + 6"分析员和项目经理四大类。"; 最后提取的关键词是:[程序员, 程序, 分为, 人员, 软件] 下面来分析为什么会提取出这5个关键词 第一步:分词 把content 通过一个的分词算法进行分词,这里采用的是Viterbi算法也就是HMM算法。分词后(当然首先应把停用词、标点、副词之类的去除)的结果是: [程序员, 英文, Programmer, 从事, 程序, 开发, 维护, 专业, 人员, 程序员, 分为, 程序, 设计, 人员, 程序, 编码, 人员, 界限, 并不, 非常, 清楚, 特别是在, 中国, 软件, 从业人员, 分为, 程序员, 高级, 程序员, 系统分析员, 项目经理, 四大] 第二步:构造窗口 hanlp的实现代码如下: Map<String, Set<String>> words = new TreeMap<String, Set<String>>(); Queue<String> que = new LinkedList<String>(); for (String w : wordList) { if (!words.containsKey(w)) { words.put(w, new TreeSet<String>()); } // 复杂度O(n-1) if (que.size() >= 5) { que.poll(); } for (String qWord : que) { if (w.equals(qWord)) { continue; } //既然是邻居,那么关系是相互的,遍历一遍即可 words.get(w).add(qWord); words.get(qWord).add(w); } que.offer(w); } 这个代码的功能是为分个词构造窗口,这个词前后各四个词就是这个词的窗口,如词分词后一个词出现了多次,像[程序员],那就是把每次出现取一次窗口,然后把各次结果合并去重,最后结果是:程序员=[Programmer, 专业, 中国, 人员, 从业人员, 从事, 分为, 四大, 开发, 程序, 系统分析员, 维护, 英文, 设计, 软件, 项目经理, 高级]。最后形成的窗口: 1 Map<String, Set<String>> words = 2 3 {Programmer=[从事, 开发, 程序, 程序员, 维护, 英文], 专业=[人员, 从事, 分为, 开发, 程序, 程序员, 维护], 中国=[从业人员, 分为, 并不, 清楚, 特别是在, 程序员, 软件, 非常], 人员=[专业, 分为, 并不, 开发, 清楚, 界限, 程序, 程序员, 维护, 编码, 设计, 非常], 从业人员=[中国, 分为, 清楚, 特别是在, 程序员, 软件, 高级], 从事=[Programmer, 专业, 开发, 程序, 程序员, 维护, 英文], 分为=[专业, 中国, 人员, 从业人员, 特别是在, 程序, 程序员, 系统分析员, 维护, 设计, 软件, 高级], 四大=[程序员, 系统分析员, 项目经理, 高级], 并不=[中国, 人员, 清楚, 特别是在, 界限, 程序, 编码, 非常], 开发=[Programmer, 专业, 人员, 从事, 程序, 程序员, 维护, 英文], 清楚=[中国, 人员, 从业人员, 并不, 特别是在, 界限, 软件, 非常], 特别是在=[中国, 从业人员, 分为, 并不, 清楚, 界限, 软件, 非常], 界限=[人员, 并不, 清楚, 特别是在, 程序, 编码, 非常], 程序=[Programmer, 专业, 人员, 从事, 分为, 并不, 开发, 界限, 程序员, 维护, 编码, 英文, 设计], 程序员=[Programmer, 专业, 中国, 人员, 从业人员, 从事, 分为, 四大, 开发, 程序, 系统分析员, 维护, 英文, 设计, 软件, 项目经理, 高级], 系统分析员=[分为, 四大, 程序员, 项目经理, 高级], 维护=[Programmer, 专业, 人员, 从事, 分为, 开发, 程序, 程序员], 编码=[人员, 并不, 界限, 程序, 设计, 非常], 英文=[Programmer, 从事, 开发, 程序, 程序员], 设计=[人员, 分为, 程序, 程序员, 编码], 软件=[中国, 从业人员, 分为, 清楚, 特别是在, 程序员, 非常, 高级], 非常=[中国, 人员, 并不, 清楚, 特别是在, 界限, 编码, 软件], 项目经理=[四大, 程序员, 系统分析员, 高级], 高级=[从业人员, 分为, 四大, 程序员, 系统分析员, 软件, 项目经理]} 第三步:迭代投票 每个词最后的投票得分由这个词的窗口进行多次迭代投票决定,迭代的结束条件就是大于最大迭代次数这里是200次,或者两轮之前某个词的权重小于某一值这里是0.001f。看下代码: Map<String, Float> score = new HashMap<String, Float>(); //依据TF来设置初值 for (Map.Entry<String, Set<String>> entry : words.entrySet()){ score.put(entry.getKey(),sigMoid(entry.getValue().size())); } System.out.println(score); for (int i = 0; i < max_iter; ++i) { Map<String, Float> m = new HashMap<String, Float>(); float max_diff = 0; for (Map.Entry<String, Set<String>> entry : words.entrySet()) { String key = entry.getKey(); Set<String> value = entry.getValue(); m.put(key, 1 - d); for (String element : value) { int size = words.get(element).size(); if (key.equals(element) || size == 0) continue; m.put(key, m.get(key) + d / size * (score.get(element) == null ? 0 : score.get(element))); } max_diff = Math.max(max_diff, Math.abs(m.get(key) - (score.get(key) == null ? 0 : score.get(key)))); } score = m; if (max_diff <= min_diff) break; } System.out.println(score); return score; } 投票的原理拿Programmer=[从事, 开发, 程序, 程序员, 维护, 英文],这个词来说明,Programmer最后的得分是由[从事, 开发, 程序, 程序员, 维护, 英文],这6个词依次投票决定的,每个词投出去的分数是和他本身的权重相关的。 1、投票开始前每个词初始化了一个权重,score.put(entry.getKey(),sigMoid(entry.getValue().size())),这个权重是0到1之间,公式是 1 //value是每个词窗口的大小 2public static float sigMoid(float value) { 3return (float)(1d/(1d+Math.exp(-value))); 4} 这个函数的公式和图像如下,因为value一定是大于0的,所以sigMod值属于(0,1) 初始化后的分词是:{特别是在=0.99966466, 程序员=0.99999994, 编码=0.99752736, 四大=0.98201376, 英文=0.9933072, 非常=0.99966466, 界限=0.99908894, 系统分析员=0.9933072, 从业人员=0.99908894, 程序=0.99999774, 专业=0.99908894, 项目经理=0.98201376, 设计=0.9933072, 从事=0.99908894, Programmer=0.99752736, 软件=0.99966466, 人员=0.99999386, 清楚=0.99966466, 中国=0.99966466, 开发=0.99966466, 并不=0.99966466, 高级=0.99908894, 分为=0.99999386, 维护=0.99966466} 进行迭代投票,第一轮投票,[Programmer, 专业, 中国, 人员, 从业人员, 从事, 分为, 四大, 开发, 程序, 系统分析员, 维护, 英文, 设计, 软件, 项目经理, 高级]依给次*程序员*投票,得分如下: [Programmer]给[程序员]投票后,[]程序员]的得分: [专业]给[程序员]投票 这样[Programmer, 专业, 中国, 人员, 从业人员, 从事, 分为, 四大, 开发, 程序, 系统分析员, 维护, 英文, 设计, 软件, 项目经理, 高级]依次给[程序员]投票,投完票后,再给其它的词进行投票,本轮结束后,判断是否达到最大迭代次数200或两轮之间分数差值小于0.001,如果满足则结束,否则继续进行迭代。 最后的投票得分是:{特别是在=1.0015739, 程序员=2.0620303, 编码=0.78676623, 四大=0.6312981, 英文=0.6835063, 非常=1.0018439, 界限=0.88890904, 系统分析员=0.74232763, 从业人员=0.8993066, 程序=1.554001, 专业=0.88107216, 项目经理=0.6312981, 设计=0.6702926, 从事=0.9027207, Programmer=0.7930236, 软件=1.0078223, 人员=1.4288887, 清楚=0.9998723, 中国=0.99726284, 开发=1.0065585, 并不=0.9968608, 高级=0.9673803, 分为=1.4548829, 维护=0.9946941},分数最高的关键词就是要提取的关键词

资源下载

更多资源
Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册