使用ffmpeg concat连接多个文件似乎导致音频的时间戳或偏移不匹配.我尝试了几个视频,并注意到h.264/MP4的相同问题.
使用concat
和编码视频似乎工作正常.音频保持同步,因为ffmpeg执行完整的转换计算,似乎可以使一切正常.
但是,简单地连接视频而不进行任何转换或编码会导致同步问题缓慢增加.显然,对视频进行编码而不是简单地加入它们将导致信息/质量的损失,所以我宁愿找到解决这个问题的方法.
我已经尝试了几个标志来解决这个似乎基于时间戳的问题.但这些似乎都没有解决问题.
ffmpeg -f concat -fflags +genpts -async 1 -i segments.txt test.mov
ffmpeg -auto_convert 1 -f concat -fflags +genpts -async 1 -i segments.txt -c copy test2.mov
ffmpeg -f concat -i segments.txt -c copy -fflags +genpts test3.mp4
ffmpeg -f concat -fflags +genpts -async 1 -i segments.txt -copyts test4.mov
ffmpeg -f concat -i segments.txt -copyts test5.mov
ffmpeg -f concat -i segments.txt -copyts -c copy test6.mov
ffmpeg -f concat -fflags +genpts -i segments.txt -copyts …
Run Code Online (Sandbox Code Playgroud) 如果我将一堆事件附加到某些DOM元素 - 然后删除它们 - 是否仍会使用用于其事件处理程序或其他属性的内存?
我问,因为我想知道如果我继续使用来自AJAX请求的新元素重新填充页面区域并将事件绑定到它们,我是否会使用一堆内存 - 只删除它们并在新的AJAX结果出现时重复该过程在.
我想知道是否有完整的事件驱动框架用于PHP,它们基于依赖注入进行解耦.我知道有一些框架可以利用这些模式 - 但最终应用程序的整个生命周期仍然是预先定义的并且是线性的.
例如,大多数框架都是为了接收,处理和返回HTTP请求的结果而构建的.事件驱动器框架将具有处理程序,但也可以用于新目的,如后台处理,命令行交互或其他非标准用例.
我想开始尝试识别数据模式的算法.我处理许多类型的序列(图像像素,文本输入,用户移动),使用模式识别尝试从不同的数据集中提取有意义的数据会很有趣.与大多数网站一样,我的数据主要是基于文本或整数键的.
他们的任何类都提供了检查/创建PHP或Nodejs模式的基本框架吗?
我一直在使用CodeIgniter系统一段时间 - 但它有它的缺点.我很感激它教给我的东西,但现在我需要一个新的非codeigniter项目的库,所以我正在寻找关于哪些库有正确而哪些没有的想法.我可能不得不从几个图书馆拿走一些东西来获得我需要的一切.
我只是看了一下Kohana PHP会话库,我喜欢它如何返回使用$ _SESSION超全局的本地PHP方式,而不是强制更改$ this-> session进行数据访问.
无论如何,我想知道是否有其他好的会话库,我可能会搞乱.除了CRUD功能之外,还有很多必须在会话中处理.
我花了一些时间来讨论CodeIgniter和Kohana会话库的逻辑,然后我想出了关于每个页面的每个开始和结束会话的内容.
/**************
** Kohana Sessions
**************/
If not native file storage {
session_set_save_handler to the storage type (DB, cache, cookie...)
}
set the session_name() so php knows what cookie value to check
start session
/****** Saving ******/
session_write_close() which calls the given handler
/**************
** CI Sessions
**************/
Try to read_session() -> …
Run Code Online (Sandbox Code Playgroud) 大多数网站都可以使用哪些标准用户角色名称?下面是我能想到的最佳角色列表(按重要性排序),但我希望为我正在处理的用户系统找到至少十个角色名称.
admin: Manage everything
manager: Manage most aspects of the site
editor: Scheduling and managing content
author: Write important content
contributors: Authors with limited rights
moderator: Moderate user content
member: Special user access
subscriber: Paying Average Joe
user: Average Joe
Run Code Online (Sandbox Code Playgroud)
我感兴趣的另一件事是这些名称是否正确翻译成其他语言.
我想构建一个可以处理获取区域设置字符串以支持国际化的CMS.我计划将字符串存储在数据库中,然后在数据库和应用程序之间放置一个键/值缓存(如memcache),以防止性能下降,从而使每个页面的数据库都能进行翻译.
这比使用带有字符串数组的PHP文件更复杂 - 但是当你有2,000个翻译行时,这种方法效率非常低.
我想过使用gettext,但我不确定CMS的用户是否会习惯使用gettext文件.如果字符串存储在数据库中,那么可以设置一个不错的管理系统,允许它们随时进行更改,RAM中的缓存将确保获取这些字符串的速度比gettext快或快.考虑到甚至zend框架都没有使用它,我也觉得使用PHP扩展并不安全.
这种方法有什么问题吗?
我想也许我会增加更多的思考.字符串翻译的一个问题是它们不支持日期,金钱或条件语句.但是,感谢intl PHP现在有了MessageFormatter,无论如何都需要使用它.
// Load string from gettext file
$string = _("{0} resulted in {1,choice,0#no errors|1#single error|1<{1, number} errors}");
// Format using the current locale
msgfmt_format_message(setlocale(LC_ALL, 0), $string, array('Update', 3));
Run Code Online (Sandbox Code Playgroud)
另一方面,我不喜欢gettext的一个原因是文本被嵌入到整个应用程序中.这意味着负责主要翻译的团队(通常是英语)必须能够访问项目源代码,以便在默认语句的所有位置进行更改.它几乎与遍布SQL意大利面条代码的应用程序一样糟糕.
因此,使用这样的键是有意义的_('error.404_not_found')
,然后允许内容编写者和翻译者只是担心PO/MO文件而不会弄乱代码.
但是,如果给定键不存在 gettext转换,则无法回退到默认值(就像使用自定义处理程序一样).这意味着您要么在代码中使用写入器 - 或者向没有语言环境转换的用户显示"error.404_not_found"!
另外,我不知道任何使用PHP的gettext的大型项目.我很感激任何链接到使用良好(因此经过测试)的系统,这些系统实际上依赖于本机PHP gettext扩展.
我有一个字符串值数组,有时会形成重复值模式('a','b','c','d')
$array = array(
'a', 'b', 'c', 'd',
'a', 'b', 'c', 'd',
'c', 'd',
);
Run Code Online (Sandbox Code Playgroud)
我想根据数组顺序找到重复的模式,并按相同的顺序对它们进行分组(以维护它).
$patterns = array(
array('number' => 2, 'values' => array('a', 'b', 'c', 'd')),
array('number' => 1, 'values' => array('c'))
array('number' => 1, 'values' => array('d'))
);
Run Code Online (Sandbox Code Playgroud)
请注意,[a,b],[b,c]和[c,d]本身不是模式,因为它们位于较大的[a,b,c,d]模式和最后的[c,d]集合中只出现一次因此它也不是一种模式 - 只是个别值'c'和'd'
另一个例子:
$array = array(
'x', 'x', 'y', 'x', 'b', 'x', 'b', 'a'
//[.......] [.] [[......] [......]] [.]
);
Run Code Online (Sandbox Code Playgroud)
哪个产生
$patterns = array(
array('number' => 2, 'values' => array('x')),
array('number' => 1, 'values' => array('y')),
array('number' => …
Run Code Online (Sandbox Code Playgroud) 我想确保使用自定义PHP错误处理程序不会引入竞争条件.为此,我想知道我是否可以依赖于error_log()或者是否需要使用其他一些文件锁定方法来确保正确记录错误.
默认的PHP错误处理程序如何工作?在竞争条件下安全吗?
例如,我是否必须锁定文件(这可能会导致在此简单版本中丢失错误)
function log_error($message)
{
if(! $fp = @fopen('/path/to/error.log', 'a'))
{
return FALSE;
}
flock($fp, LOCK_EX);
fwrite($fp, $message);
flock($fp, LOCK_UN);
fclose($fp);
return TRUE;
}
Run Code Online (Sandbox Code Playgroud)
或者我可以只调用error_log?
error_log($message, 0);
Run Code Online (Sandbox Code Playgroud) 为了防止中间人攻击(假装是其他人的服务器),我想验证我通过SSL连接的SMTP服务器是否有一个有效的SSL证书,证明它是我认为的.
例如,在端口25上连接到SMTP服务器后,我可以切换到安全连接,如下所示:
<?php
$smtp = fsockopen( "tcp://mail.example.com", 25, $errno, $errstr );
fread( $smtp, 512 );
fwrite($smtp,"HELO mail.example.me\r\n"); // .me is client, .com is server
fread($smtp, 512);
fwrite($smtp,"STARTTLS\r\n");
fread($smtp, 512);
stream_socket_enable_crypto( $smtp, true, STREAM_CRYPTO_METHOD_TLS_CLIENT );
fwrite($smtp,"HELO mail.example.me\r\n");
Run Code Online (Sandbox Code Playgroud)
但是,没有提到PHP检查SSL证书的位置.PHP有一个内置的根CA列表吗?它只是接受任何东西吗?
什么是验证证书有效的正确方法,以及SMTP服务器真的是我认为的那个?
根据PHP.net上的这条评论,似乎我可以使用一些流选项进行SSL检查.最好的部分是stream_context_set_option接受上下文或流资源.因此,在TCP连接的某个时刻,您可以使用CA证书捆绑包切换到SSL .
$resource = fsockopen( "tcp://mail.example.com", 25, $errno, $errstr );
...
stream_set_blocking($resource, true);
stream_context_set_option($resource, 'ssl', 'verify_host', true);
stream_context_set_option($resource, 'ssl', 'verify_peer', true);
stream_context_set_option($resource, 'ssl', 'allow_self_signed', false);
stream_context_set_option($resource, 'ssl', 'cafile', __DIR__ . '/cacert.pem'); …
Run Code Online (Sandbox Code Playgroud) php ×7
algorithm ×1
arrays ×1
audio ×1
codeigniter ×1
dom ×1
ffmpeg ×1
frameworks ×1
icu ×1
javascript ×1
kohana ×1
memory-leaks ×1
nlp ×1
node.js ×1
session ×1
smtp ×1
starttls ×1
user-roles ×1
video ×1