小编Xeo*_*oss的帖子

FFmpeg concat视频和音频不同步

使用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)

audio video ffmpeg concatenation

22
推荐指数
3
解决办法
1万
查看次数

Javascript是否删除已删除DOM元素的事件处理程序?

如果我将一堆事件附加到某些DOM元素 - 然后删除它们 - 是否仍会使用用于其事件处理程序或其他属性的内存?

我问,因为我想知道如果我继续使用来自AJAX请求的新元素重新填充页面区域并将事件绑定到它们,我是否会使用一堆内存 - 只删除它们并在新的AJAX结果出现时重复该过程在.

javascript dom memory-leaks

20
推荐指数
1
解决办法
4239
查看次数

事件驱动的PHP框架?

我想知道是否有完整的事件驱动框架用于PHP,它们基于依赖注入进行解耦.我知道有一些框架可以利用这些模式 - 但最终应用程序的整个生命周期仍然是预先定义的并且是线性的.

例如,大多数框架都是为了接收,处理和返回HTTP请求的结果而构建的.事件驱动器框架将具有处理程序,但也可以用于新目的,如后台处理,命令行交互或其他非标准用例.

php frameworks design-patterns dependency-injection

20
推荐指数
3
解决办法
9014
查看次数

Node.js或PHP中的模式识别算法?

我想开始尝试识别数据模式的算法.我处理许多类型的序列(图像像素,文本输入,用户移动),使用模式识别尝试从不同的数据集中提取有意义的数据会很有趣.与大多数网站一样,我的数据主要是基于文本或整数键的.

他们的任何类都提供了检查/创建PHP或Nodejs模式的基本框架吗?

php algorithm nlp pattern-recognition node.js

20
推荐指数
1
解决办法
6100
查看次数

PHP会话的最佳库

我一直在使用CodeIgniter系统一段时间 - 但它有它的缺点.我很感激它教给我的东西,但现在我需要一个新的非codeigniter项目的库,所以我正在寻找关于哪些库有正确而哪些没有的想法.我可能不得不从几个图书馆拿走一些东西来获得我需要的一切.

我只是看了一下Kohana PHP会话库,我喜欢它如何返回使用$ _SESSION超全局的本地PHP方式,而不是强制更改$ this-> session进行数据访问.

无论如何,我想知道是否有其他好的会话库,我可能会搞乱.除了CRUD功能之外,还有很多必须在会话中处理.

  • 支持基于非cookie的会话传递(即Facebook或Flash上​​传者)
  • "Flash数据"仅持续下一页加载,然后自动删除.
  • 使用$ _SESSION或$ this-> session,以便程序员不必更改现有代码.
  • 支持设置新的会话ID(即session_id('new id')),以防您想要在页面中途更改id.
  • 在页面请求结束时保存所有数据,而不是每次添加或删除数据时(保存额外的数据库查询).
  • 支持使用文件,cookie或数据库进行存储.(或memcached会很好)
  • 在会话劫持的情况下尝试拒绝访问.(IP,使用者或指纹)

我花了一些时间来讨论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)

php session codeigniter kohana

19
推荐指数
1
解决办法
8590
查看次数

标准网站用户角色的名称是什么?

大多数网站都可以使用哪些标准用户角色名称?下面是我能想到的最佳角色列表(按重要性排序),但我希望为我正在处理的用户系统找到至少十个角色名称.

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)

我感兴趣的另一件事是这些名称是否正确翻译成其他语言.

user-roles

19
推荐指数
1
解决办法
1万
查看次数

在PHP应用程序中实现国际化(语言字符串)

我想构建一个可以处理获取区域设置字符串以支持国际化的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扩展.

php globalization internationalization icu

19
推荐指数
2
解决办法
7045
查看次数

PHP - 如何在数组中找到重复的值分组

我有一个字符串值数组,有时会形成重复值模式('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 arrays pattern-matching

18
推荐指数
3
解决办法
1240
查看次数

PHP函数error_log()是否可以安全使用?

我想确保使用自定义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)

php error-handling

17
推荐指数
1
解决办法
3738
查看次数

如何在PHP中验证TLS SMTP证书是否有效?

为了防止中间人攻击(假装是其他人的服务器),我想验证我通过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 smtp ssl-certificate starttls

17
推荐指数
2
解决办法
9282
查看次数