分类
科技文章

php intval的一个小坑

var_dump(intval('19.90' * 100)); // 1989
var_dump(intval(floatval(1990))); // 1990

计算得来的float 1990和直接声明得来的 float 1990,在intval取整的时候结果会不一样的

跟float存储方式有关,一不小心可能就掉坑了。

// 解决办法
var_dump(intval(round('19.90' * 100))); // 1990
分类
科技文章

FLAC标签编辑器

FLAC代表免费无损音频编解码器,它是一种类似于MP3的音频格式,但是无损,这意味着音频在FLAC中进行了压缩而没有任何质量损失。

FLAC音频支持音乐作者、专辑、封面等媒体标签,但是市面上少见能自主编辑这些标签的软件。

FLAC标签编辑器,是一款免费的在线标签编辑器。可以让你实现编辑标签,添加封面图片等功能。

分类
科技文章

使用shell命令删除指定时间前的文件

显示20分钟前的文件

find /home/prestat/bills/test -type f -mmin +20 -exec ls -l {} \;

删除20分钟前的文件

find /home/prestat/bills/test -type f -mmin +20 -exec rm {} \;

显示20天前的文件

find /home/prestat/bills/test -type f -mtime +20 -exec ls -l {} \;

删除20天前的文件

find /home/prestat/bills/test -type f -mtime +20 -exec rm {} \;
分类
科技文章

html input九宫格数字键盘

<input type="number">

这种用法,在安卓系统上可以调出九宫格,但是iOS系统需要加上pattern=”\d*”

<input type="number" pattern="\d*">
分类
科技文章

App交付AppStoreConnect之后消失的坑

使用Transporter或者其他方式上传App到AppStoreConnect之后,在Transporter中会显示已经交付,这时在App Store Connect的“活动”列表中也会看到上传的版本

但是:有可能过一会儿列表中的版本就会消失…

原因是如果上传的二进制文件有问题,列表里就会直接消失,可以查看一下开发者账号的邮箱,成功失败,苹果都会给你发一封邮件。

这个交互,真的让新手摸不到头脑…

分类
山竹图片浏览器 支持

如何设置图片格式关联

此文说明如何在Mac系统中,把图片默认打开程序设置为山竹图片浏览器。

首先选中图片文件,点击右键,在菜单中选择“显示简介”。

之后会有简介窗口展现,在窗口中“打开方式”中,选择山竹图片浏览器。

然后点击“全部更改”,即可将此类图片格式默认使用山竹图片浏览器打开。

分类
科技文章

electron的一个小坑

const pkg = require('../package.json');
const something = pkg.build.something;

以上这段代码,在dev状态是不会报错的,但是build之后的包,运行起来就会报错。原因是electron-builder在打包时把package.json的内容精简了,只留了name, version等少数内容,所以以下代码是不会报错的:

const pkg = require('../package.json');
const version = pkg.version;

这个问题只在打包后才会报错,还挺不好排查的。

分类
新闻动态

草莓音频1.0发布

草莓音频是一款音频转码软件,可已在多种音频格式之间实现互相换换。例如本软件可以将WAV、FLAC、MP3、APE、AAC、OGG等格式的音频转换为WAV、FLAC、MP3、APE、AAC、OGG等任意一种格式。本软件支持的音频编码格式非常广泛,支持多达上百种格式。本软件的编解码速度非常快,软件界面便捷易用,用户体验优秀。

软件支持Windows和Mac两大操作系统。

查看产品页面

分类
科技文章

nodejs文件md5

const fs = require('fs');
const crypto = require('crypto');

module.exports = (filename) => {
    return new Promise((resolve) => {
        const hash = crypto.createHash('md5');
        const input = fs.createReadStream(filename);
        input.on('readable', () => {
            const data = input.read();
            if (data)
                hash.update(data);
            else {
                resolve(hash.digest('hex'));
            }
        });
    });
};
分类
科技文章

ffmpeg使用说明

概要

ffmpeg [global_options] {[input_file_options] -i input_url} ... {[output_file_options] output_url} ...

描述

ffmpeg是一种非常快速的视频和音频转换器,也可以从实时音频/视频源中获取。 它还可以在任意采样率之间转换,并使用高质量的多相滤波器即时调整视频大小。

ffmpeg读取由-i选项指定的任意数量的输入“文件”(可以是常规文件,管道,网络流,抓取设备等),并写入任意数量的输出“文件”, 由输出URL指定。 在命令行上找到的所有不能解释为选项的内容都被视为输出URL。

每个输入或输出URL原则上都可以包含任意数量的不同类型的流(视频/音频/字幕/附件/数据)。 流的允许数量和/或类型可能会受到容器格式的限制。 自动或使用-map选项选择要从哪个输入流进入哪个输出。

要在选项中引用输入文件,必须使用其索引(从0开始)。 例如: 第一个输入文件为0,第二个输入文件为1,依此类推。类似地,文件中的流由其索引引用。 例如。 2:3引用第三个输入文件中的第四个流。

通常,选项将应用于下一个指定的文件。 因此,顺序很重要,您可以在命令行上多次使用相同的选项。 然后,将每次出现都应用于下一个输入或输出文件。 此规则的例外是全局选项(例如,详细级别),应首先指定。

不要混合输入文件和输出文件–首先指定所有输入文件,然后指定所有输出文件。 也不要混用属于不同文件的选项。 所有选项仅适用于下一个输入或输出文件,并且在文件之间重置。

将输出文件的视频比特率设置为64 kbit / s

ffmpeg -i input.avi -b:v 64k -bufsize 64k output.avi

强制输出文件的帧速率为24 fps

ffmpeg -i input.avi -r 24 output.avi

将输入文件的帧速率(仅适用于原始格式)强制为1 fps,将输出文件的帧速率强制为24 fps

ffmpeg -r 1 -i input.m2v -r 24 output.avi