小编Fel*_*arz的帖子

HTML5视频:如何测试HLS播放功能?(video.canPlayType)

我有通过HLS传送的视频.现在我想在JavaScript中测试该设备是否真的可以在HTML5中播放HLS视频.

通常在Javascript中我做了类似的事情 document.createElement('video').canPlayType('video/mp4') 然而我无法弄清楚哪种'类型'是正确的HLS.

Apple的Safari HTML5音频和视频指南似乎建议使用"vnd.apple.mpegURL"("清单1-7回归到IE的插件")

<video controls>
    <source src="HttpLiveStream.m3u8" type="vnd.apple.mpegURL">
    <source src="ProgressiveDowload.mp4" type="video/mp4">
....
Run Code Online (Sandbox Code Playgroud)

canPlayType("vnd.apple.mpegURL")即使在iOS设备上也能返回一个空字符串,它可以完美地播放实际的HLS流.

有没有办法检查没有"外部知识"的播放功能(例如"检查iOS用户代理并假设它可以播放hls")?

我知道我可以在元素中指定多个源,浏览器将使用第一个可播放的源.但是在我的情况下,我需要向JW Player提供一个我无法修改的URL.所以我需要从一组视频编码中找到"最佳可播放URL".(处理源选择的开源JS库虽然是一个很好的解决方法.)

javascript html5 http-live-streaming

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

如何在Python中更改所有模块的日期/时间?

当我使用业务逻辑编写时,我的代码通常取决于当前时间.例如,查看每个未完成订单并检查是否应发送发票的算法(这取决于作业结束后的天数).在这些情况下,创建发票不是由显式用户操作触发,而是由后台作业触发.

现在,在测试方面,这给我带来了一个问题:

  • 我可以轻松地测试发票创建本身
  • 但是,很难在测试中创建订单并检查后台作业是否在正确的时间识别正确的订单.

到目前为止,我找到了两个解

  • 在测试设置中,计算相对于当前日期的作业日期.缺点:代码变得非常复杂,因为没有明确的日期.有时,业务逻辑对于边缘情况非常复杂,因此由于所有这些相对日期而变得难以调试.
  • 我有自己的日期/时间访问器功能,我在整个代码中都使用它.在测试中我只设置了一个当前日期,所有模块都得到了这个日期.因此,我可以在二月份模拟订单创建,并检查发票是否在四月轻松创建.缺点:第三方模块不使用此机制,因此很难集成+测试这些.

毕竟,第二种方法对我来说更成功.因此,我正在寻找一种方法来设置Python的datetime + time模块返回的时间.设置日期通常就足够了,我不需要设置当前小时或秒(即使这样会很好).

有没有这样的实用工具?是否有可以使用的(内部)Python API?

python testing time datetime unit-testing

20
推荐指数
2
解决办法
9050
查看次数

在针对WSDL(xsd架构)验证xml时理解elementFormDefault限定/不合格

我试图理解elementFormDefault="qualified/unqualified"嵌入在WSDL(SOAP 1.1,WSDL 1)中的XML模式的含义.

例如,我在WSDL中有这个模式:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    elementFormDefault="qualified"
    targetNamespace="http://www.example.com/library">
    <xsd:element name="person">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="name" type="xsd:string"/>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>
</xsd:schema>
Run Code Online (Sandbox Code Playgroud)

在纯XML中,这显然是无效的,因为"name"没有指定的命名空间:

<lib:person xmlns:lib="http://www.example.com/library">
    <name>XML Schema</name>
</lib:person>
Run Code Online (Sandbox Code Playgroud)

虽然这显然是有效的,因为所有元素都是合格的:

<lib:person xmlns:lib="http://www.example.com/library">
    <lib:name>qualified xml</lib:name>
</lib:person>
Run Code Online (Sandbox Code Playgroud)

但令人惊讶的是libxml说以下内容也是有效的:

<person xmlns="http://www.example.com/library">
    <name>XML Schema</name>
</person>
Run Code Online (Sandbox Code Playgroud)

问题1:我认为qualified意思<person>应该是这个样子<lib:person xmlns:lib="...">.但结果似乎表明该xmlns属性是一样的?

现在假设上面的XML是SOAP请求的一部分,例如

...
<s:Body>
    <person xmlns="http://www.example.com/library">
        <name>XML Schema</name>
    </person>
</s:Body>
...
Run Code Online (Sandbox Code Playgroud)

问题2:如果WSDL包含qualified上面显示的模式,请求上面的请求是否有效?(普通SOAP,无视WS-I基本配置文件)

问题3当我考虑WS-I Basic配置文件(特别是4.1.13 SOAP Body和Namespaces)时上述请求是否仍然有效?(被person认为是"命名空间合格"?)

xml xsd soap wsdl xml-namespaces

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

SQLAlchemy 中 JSON 列的自定义 json 序列化器

我有以下 ORM 对象(简化):

import datetime as dt

from sqlalchemy import create_engine, Integer, Column, DateTime
from sqlalchemy.dialects.postgresql import JSONB
from sqlalchemy.orm import Session, declarative_base

Base = declarative_base()

class Metrics(Base):
    __tablename__ = 'metrics'

    id = Column(Integer, primary_key=True)
    ts = Column(DateTime, default=dt.datetime.now())
    computed_values = Column(JSONB)
    dates = Column(JSONB)


entry = Metrics(computed_values={'foo': 12.3, 'bar':45.6},
                dates=[dt.date.today()])

engine = create_engine('postgresql://postgres:postgres@localhost:5432/my_schema')
with Session(engine, future=True) as session:
    session.add(entry)
    session.commit()
Run Code Online (Sandbox Code Playgroud)

每行有:

  • id首要的关键
  • ts插入行时的时间戳
  • computed_values要存储的实际 JSONB 数据
  • datesJSONB 用于存储计算数据的日期列表。

虽然我对该列没有任何问题computed_values,但默认 SQLAlchemy JSON 序列化程序无法序列化列datetime.date …

python serialization json sqlalchemy

10
推荐指数
1
解决办法
3486
查看次数

是否有Python库为各种文档文件格式创建缩略图?

我想从各种"文档"文件格式生成缩略图,例如odt,doc(x)和ppt(x),还有来自Python应用程序的mp4,psd,tiff(以及可能的其他).据我所知,对于这些格式中的每一种,至少有一个开源应用程序可以生成预览图像/缩略图(例如LibreOffice,ffmpeg)或者至少提取嵌入的缩略图(例如imagemagick).

我的主要问题是这些应用程序/库中的每一个都使用不同的命令行选项,因此我正在寻找一个Python库(或统一的CLI工具),它提供了一个高级API来生成具有指定维度的缩略图,给出质量级别文件名并调用适当的外部工具(理想情况下包括捕获异常,段错误和超时).如果请求可以生成多个缩略图,则奖励点数(例如,每页一页,页面XY,每Z秒,但最多N个图像).

有谁知道这样的库/实用程序?(边界条件:文件可能包含敏感材料或可能非常大,因此必须在没有任何网络通信的情况下工作,使用外部Web服务是不可能的.)

如果在Python中没有这样的东西,那么本地可安装的Web服务也可以.

python imaging image thumbnails

7
推荐指数
1
解决办法
3328
查看次数

Python:检测视频容器中使用的编解码器

我有几个视频容器文件,其中包含各种编解码器中的音频和视频.现在,我想从Python脚本检查容器,以了解哪个编解码器用于音频+视频.这是在一个linux盒子上,所以我必要时可以使用所有工具.

我想也许gstreamer可以帮助我,但我无法找到一个可以帮助我的API.

有任何想法吗?我也对任何建议持开放态度,只要它是免费软件就不需要gstreamer :-) fs

python video gstreamer

6
推荐指数
2
解决办法
4046
查看次数

如何拦截表格可靠地提交?

我正在尝试拦截网页上特定表单的所有表单提交.使用jQuery看起来非常简单:form.submit(function(e) {…})如果单击"提交"按钮,它的工作效果非常好.

但是在select字段上还有一个onChange属性,this.form.submit()看起来这个调用绕过了我的监听器(在Chromium/Firefox中):

<script type="text/javascript">
    function submitForm(e) {
        window.alert('submitted');
        e.preventDefault();
        return false;
    }

    $(document).ready(function() {
        $('#bar').submit(submitForm);
    });
</script>

<form id="bar">
    <select name="name" onChange="this.form.submit()">
        <option>Foo</option>
        <option>Bar</option>
    </select>
    <br/>
    <input type="submit"/>
</form>
Run Code Online (Sandbox Code Playgroud)

显然在上面的代码中我可以更改this.form.submit()为我的提交监听器的特定引用.然而,在我的真实应用程序中,它并不那么简单,所以我正在寻找不需要修改onChange属性的方法.

如果我没有做一个愚蠢的错误,但这实际上是预期的浏览器行为,如果你能解释事件流程以及为什么会导致上述症状,我会很高兴.

jquery onsubmit

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

SQLAlchemy:如何以编程方式创建关系

我想动态创建两个表之间的 1:n 关系。我的数据库模型是通过 SQLAlchemy 映射的,但由于我的应用程序的一些特殊功能,我无法使用默认的声明方式。

例如

class Foo(Base):
    id = Column(Integer, autoincrement=True, primary_key=True)
    flag = Column(Boolean)

class Bar(Base):
    id = Column(Integer, autoincrement=True, primary_key=True)
    foo_id = Column(Integer, ForeignKey('foo.id'))
    # declarative version:
    # foo = relationship(Foo)
Run Code Online (Sandbox Code Playgroud)

因此,我想在定义 Bar后将名为“foo”的关系添加到映射类“Bar” ,并且 SQLAlchemy 完成了定义映射器等工作。

2017-09-05 更新:为什么这对我来说是必要的?(我想我可以忽略这一点,因为我认为它主要分散了要解决的实际问题的注意力,但因为有关于它的评论......)

首先,我没有一个数据库,而是数百个/数千个。旧数据库中的数据不得以任何方式更改,但我希望使用单个源代码来访问旧数据(即使数据结构和计算规则发生显着变化)。

目前我们使用多个模型定义。后来的定义扩展/修改了以前的定义。我们经常动态地操作 SQLAlchemy 模型。我们尽量不在映射类中包含代码,因为我们认为多次更改表后确保代码的正确性会更加困难(代码必须在每个中间步骤中工作)。

在许多情况下,我们在模型 X-1 中最初定义表(映射类)后,会在模型 X 中以编程方式扩展表(映射类)。向现有 SQLAlchemy ORM 类添加列是可以管理的。现在,我们在现有表中添加一个新的参考列,并relationship()提供更好的 Python API。

python sqlalchemy

5
推荐指数
1
解决办法
2729
查看次数

如何在 Angular 中@import CSS 文件?

我有一个文件需要在另一个 css 文件中使用。

为此,我已将此添加到 angular.json 文件中:

   "styles": ["src/assets/css/theme.scss"],
Run Code Online (Sandbox Code Playgroud)

然后我尝试在 css 文件中使用它:

@import "theme.scss";
Run Code Online (Sandbox Code Playgroud)

Angular 找不到这条路径。

angular angular6 angular8

3
推荐指数
2
解决办法
9327
查看次数