精华内容
参与话题
问答
  • DASH简介及使用方法(FFmpeg, MP4Box)

    万次阅读 热门讨论 2017-11-07 11:55:40
    DASH fMP4: 1. 切换画质(1080P/高清/标清)时,播放器会黑屏,并回退到关键帧重新播放。 2. 不能根据网络状况自适应调整码率(YouTube默认启用自适应码率,对照画质选项中的“Auto”)要解决以上问题,需要引入...

    DASH:简介及使用方法(本文)
    DASH:FFmpeg muxer参数说明


    引入XXXX后,(对照竞品)网页端的视频观看体验存在以下问题:
    1. 切换画质(1080P/高清/标清)时,播放器会黑屏,并回退到关键帧重新播放。
    2. 不能根据网络状况自适应调整码率(YouTube默认启用自适应码率,对照画质选项中的“Auto”)

    要解决以上问题,需要引入流媒体解决方案。

    DASH

    为什么选择DASH

    YouTube采用DASH!其网页端及移动端APP都使用了DASH。DASH的其他采用者包括:Netflix, Hulu, …

    什么是DASH

    一种服务端、客户端的流媒体解决方案:
    服务端:
    将视频内容分割为一个个分片,每个分片可以存在不同的编码形式(不同的codec、profile、分辨率、码率等);
    播放器端:
    就可以根据自由选择需要播放的媒体分片;可以实现adaptive bitrate streaming技术。不同画质内容无缝切换,提供更好的播放体验。

    DASH中的重要概念

    • MPD
      媒体文件的描述文件(manifest),作用类似HLS的m3u8文件。MPD文件以XML格式组织,其层次结构参图1。

    • Representation
      对应一个可选择的输出(alternative)。如,480p video,720p video, 44100采样 audio,22050采样audio,都使用Representation描述。

    • Segment(分片)
      每个Representation会划分为多个Segment。Segment分为4类,其中,最重要的是:Initialization Segment(每个Representation都包含1个Init Seg),Media Segment(每个Representation的媒体内容包含若干Media Seg)!

    这里写图片描述
    图1. MPD的层次示意图 (每个Rrepresentation使用fMP4文件格式)

    fMP4

    fMP4(fragmented MP4),可以简单理解为分片化的MP4,是DASH采用的媒体文件格式,文件扩展名通常为(.m4s或直接用.mp4)。

    fMP4
    图2. 普通MP4与fMP4组织结构对比,fMP4与DASH 分片概念对照

    图2说明:

    普通MP4 由索引文件头文件moov box和媒体数据mdat box组成。

    fMP4 由分片组成,可以按整个文件存储,也可以按分片存储:

    • 如果按照单个文件存储,每个输出是一个m4s文件。 完整的fMP4视频可以描述为如下形式:
      moov + (moof + mdat) * N
      其中moof box是分片(fragment)的标识, mdat box存放的是当前分片的媒体数据;

    • 如果按照分片存储,每个分片是一个m4s文件,输出对应了多个m4s。

    fMP4中的第一个分片,对应了DASH协议中Initialization Segment;其后的分片,则对应Media Segment。

    YouTube调研

    一段15’ 720分辨率视频,YouTube有如下Representation:
    1. audio1 id:139 codec:HE-AAC 采样率22050 分片:5
    2. audio2 id:140 codec:AAC-LC 采样率44100 分片:5
    3. video1 id:133 codec:264 main profile level1.2 240p 分片:4
    4. video2 id:134 codec:264 main profile level2.0 360p 分片:4
    5. video3 id:135 codec:264 main profile level2.0 480p 分片:4
    6. video4 id:160 codec:264 main profile level1.1 144p 分片:4
    7. video5 id:136 codec:264 main profile level3.0 720p 分片:4

    关注视频部分,4个分片包含:1个Init Seg,3个Media Seg,视频内容部分分别为5.12s 5.12s 4.76s。

    正常顺序播放
    PastedGraphic-11.png
    图3. 正常顺序播放的时序图

    1. 下载MPD
    2. 下载Init Seg
    3. 下载Media Seg(s)
      在第6s已经完成所有视频分片的下载。

    切换行为
    PastedGraphic-12.png
    图4. 发生switch的时序图

    切换前,Representation 0的所有分片已经下载完成,交互流程同上,
    第8s进行画质切换:
    1. 下载Representation 1的Init Seg # 每次切换都会先下载Init Seg
    2. 下载Representation 1 当前所在分片!Seg2
    3. 下载后续分片。

    说明:YouTube在播放Rep0 Seg2期间发生切换,会下载Repr1的Seg2,这属于YouTube的播放策略。很多DASH播放器,此时会直接请求Repr1的Seg3。

    DASH应用

    1)FFmpeg 转码

    FFmpeg支持DASH封装,仿YouTube格式的命令:

    ffmpeg -hide_banner -y -threads 0 -i INPUT_VIDEO -filter_complex 'split=2[s0][s1];[s0]scale=480:-2[480s];[s1]scale=360:-2[360s]' -map '[480s]' -c:v:0 libx264 -crf 25 -preset veryslow -map '[360s]' -c:v:1 libx264 -crf 27 -preset veryslow -map a -c:a:0 libfdk_aac -ar:a:0 22050 -map a -c:a:1 libfdk_aac -ar:a:1 44100 -g 150 -sc_threshold 0 -b_strategy 0 -min_seg_duration 5000 -use_timeline 0 -use_template 1 -single_file  1 -window_size 5 -adaptation_sets "id=0,streams=v id=1,streams=a" -f dash OUTPUT.mpd

    输出:

    • mpd描述文件
    • m4s 输出文件
      视频两个文件分别是480p crf25 和360p crf 27。
      音频两个文件分别是22050采样率和44100采样率。
      独立文件内部每个分片时长5s。

    2)FFmpeg 转封装

    若存在兼容普通mp4转码的需求,可以直接对已编码视频转封装得到DASH文件,避免重复编码。
    要点在于保证编码命令中的GOP length与DASH要求匹配,否则会发生卡顿问题,需要在播放器端做额外处理。

    3) MP4Box 转封装

    mp4box -dash 5000 -frag 5000 -rap -frag-rap -profile dashavc264:onDemand ld.mp4 hd.mp4 audio.m4a -out OUTPUT.mpd

    4)DASH播放

    使用开源的网页端DASH player dash.js可以播放,如下图。
    这里写图片描述
    图5. 后台转码的实际播放效果


    展开全文
  • Dash入门

    千次阅读 2018-11-25 19:35:06
    1. 说明  大数据开发过程中,我们常常需要向别人展示一些统计结果,有时候还是实时的统计结果。...而Dash能帮我们实现以上所有的工作。  Dash是Python的一个库,使用pip即可安装。用它可以启动一个ht...

    1. 说明

     大数据开发过程中,我们常常需要向别人展示一些统计结果,有时候还是实时的统计结果。最好能以网页方式提供,让别人在他的机器上,使用浏览器也能访问。这时候统计工具往往使用Python,而把分析图表画出来使用JavaScript,需要搭建web服务,还涉及中间过程的数据衔接。而Dash能帮我们实现以上所有的工作。

     Dash是Python的一个库,使用pip即可安装。用它可以启动一个http server, python调用它做图,而它内部将这些图置换成JavaScript显示,进行数据分析和展示。

    2. 安装

    $ pip install dash
    $ pip install dash-renderer
    $ pip install dash-html-components
    $ pip install dash-core-components
    

     其中html与网页相关,比如用它实现Title显示及一些与用户的交互操作,core是绘图部分,像我们常用的柱图,饼图,箱图,线图,都可以用它实现。

    3. 简单demo

    (1) 代码

    # -*- coding: utf-8 -*-
    
    import dash
    import dash_core_components
    import dash_html_components
    import numpy
    
    x = numpy.linspace(0, 2 * numpy.pi, 100)
    y = 10 * 2 * numpy.cos(t)
    
    app = dash.Dash()
    app.layout = dash_html_components.Div(children=[
     dash_html_components.H1(children='Testme'),
     dash_core_components.Graph(
     id='curve',
     figure={
     'data': [
     {'x': x, 'y': y, 'type': 'Scatter', 'name': 'Testme'},
     ],
     'layout': {
     'title': 'Test Curve'
     } } )
    ])
    
    if __name__ == '__main__':
     app.run_server(debug=True, host='0.0.0.0', port=8051)
    

    (2) 运行结果

    图片.png

    (3) 注意事项
     需要注意的是最后一句中的宿主机host='0.0.0.0',默认是127.0.0.1,这样在其它机器访问本机启动的dash以及在docker启动dash时可能遇到问题,设置成0.0.0.0后,通过本机上的任意一个IPV4地址都能访问到它。

    4. 与Flask相结合支持显示多个页面

     用上述方法,可以提供单个网页显示,但如果需要展示的内容很多,或者需要分类展示时,就需要提供多个界面以及在各个界面间跳转。Flask是一个使用 Python 编写的轻量级 Web 应用框架,Dash的Web框架就是调用它实现的,在程序中结合二者,即可以显示一网页,还能实现Dash画图功能,还能相互调用,具体见下例。

    # -*- coding: utf-8 -*-
    
    import numpy as np
    import pandas as pd
    
    from flask import Flask
    import dash
    import dash_core_components as dcc
    import dash_html_components as html
    
    server = Flask(__name__)
    app1 = dash.Dash(__name__, server=server, url_base_pathname='/dash/')
    app1.layout = html.Div([
        html.Div(
            children=[html.H1(children='趋势 1'),]
        )    
        ])
    
    @server.route('/test')
    def do_test():
        return "aaaaaaaaaaaaaaaaa"
    
    @server.route('/')
    def do_main():
        return "main"
    
    if __name__ == '__main__':
        server.run(debug=True, port=8501, host="0.0.0.0")
    

     此时,在浏览器中分别打开:http://0.0.0.0:8501/, http://0.0.0.0:8501/testhttp://0.0.0.0:8501/dash,这时可以分别看dash生在网页和普通网页。

    5. 各种常用图

    (1) 环境
     三个例中使用的数据库中sklearn自带的iris数据集的前30个实例,以test*方式调用每种绘图函数

    import dash
    import dash_core_components
    import dash_html_components
    import numpy as np
    from sklearn import datasets
    import pandas as pd
    import plotly.figure_factory as ff
    
    iris=datasets.load_iris()
    data = pd.DataFrame(iris.data, columns=['SpealLength', 'Spealwidth',
                                            'PetalLength', 'PetalLength'])
    data = data[:30]
    
    app = dash.Dash()
    test4(app, data)
    app.run_server(debug=True)
    

    (2) 线图

    def test1(app, data):
        y = np.array(data['SpealLength'])
        x = range(len(y))
        app.layout = dash_html_components.Div(children=[
            dash_html_components.H1(children='Demo'),
            dash_core_components.Graph(
                id='line',
                figure={
                    'data': [
                        {'x': x, 'y': y, 'type': 'Scatter', 'name': 'Line'},
                    ],
                    'layout': {
                        'title': '线图'
                    }
                }
            )
        ])
    

    (3) 柱图

    def test2(app, data):
        y = np.array(data['SpealLength'])
        x = range(len(y))
        app.layout = dash_html_components.Div(children=[
            dash_html_components.H1(children='Demo'),
            dash_core_components.Graph(
                id='bar',
                figure={
                    'data': [
                        {'x': x, 'y': y, 'type': 'bar', 'name': 'Bar'},
                    ],
                    'layout': {
                        'title': '柱图'
                    }
                }
            )
        ])
    

    (4) 直方图

    def test3(app, data):
        y = np.array(data['SpealLength'])
        app.layout = dash_html_components.Div(children=[
            dash_html_components.H1(children='Demo'),
            dash_core_components.Graph(
                id='hist',
                figure={
                    'data': [
                        dict(
                            type='histogram', x=y, name='Hist'
                        )
                    ],
                    'layout': {
                        'title': '直方图'
                    }
                }
            )
        ])
    

    (5) 箱图

    def test4(app, data):
        data['group1'] = data['SpealLength'].apply(lambda x: int(x * 4) / 4.0)
        x = data['group1'] # 按length分类,统计width
        y = np.array(data['Spealwidth'])
        app.layout = dash_html_components.Div(children=[
            dash_html_components.H1(children='Demo'),
            dash_core_components.Graph(
                id='box',
                figure={
                    'data': [
                        dict(
                            type='box', x=x, y=y, name='Box'
                        )
                    ],
                    'layout': {
                        'title': '箱图'
                    }
                }
            )
        ])
    

    箱图比较特殊,它是按x的unique统计y的分布。

    (6) 饼图

    def test5(app, data):    
        data['group1'] = data['SpealLength'].apply(lambda x: int(x))
        tmp = data.groupby('group1').size().to_frame()
        tmp = tmp.rename(columns={0: 'num'})
        tmp = np.round(tmp, 4).reset_index(drop=False)
    
        app.layout = dash_html_components.Div(children=[
            dash_html_components.H1(children='Demo'),
            dash_core_components.Graph(
                id='pie',
                figure={
                  'data': [
                        dict(
                            type='pie', name='Pie',
                            labels=tmp['group1'].tolist(),
                            values=tmp['num'].tolist(),
                        )                  
                    ],
                    'layout': {
                        'title': '饼图'
                    }
                }
            )
        ])
    

    (7) 图表

    def test6(app, data):
        table = ff.create_table(data.head()) 
        for i in range(len(table.layout.annotations)):
            table.layout.annotations[i].font.size = 15
        app.layout = dash_html_components.Div(children=[
            dash_html_components.H1(children='Demo'),
            dash_core_components.Graph(
                id='table',
                figure=table
            )
        ])
    

    6. 参考

    (1) 官方demo
    https://dash.plot.ly/gallery

    (2) 支持多个网页的另一种方法
    https://stackoverflow.com/questions/51946300/setting-up-a-python-dash-dashboard-inside-a-flask-app

    (3) 最常用例程
    https://dash.plot.ly/getting-started

    (4) dash各种界面交互(最后边)
    https://dash.plot.ly/getting-started

    (5) dash交互中各种callback处理
    https://dash.plot.ly/getting-started-part-2

     

    展开全文
  • DASH.js使用demo

    参考:

    https://github.com/sanlengjingvv/mpeg-dash-sample

    ubuntu安装ffmpeg,三行命令

    Ubuntu下GPAC(MP4Box)的安装 | 基于MP4Box搭建DASH视频系统

    在 ubuntu 上安装最新的 node

    -------------------------------------------------------------------------------------------------------

    环境 ubuntu 18.04

    一、首先按照以上链接安装ffmpeg、MP4Box、node和npm

    ffmpeg:一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。此处用其得到不同质量的视频和分离音频

    MP4Box:用 mp4box 得到 MPEG-Dash 需要的音视频和 .mpd 文件。

    二、使用ffmpeg、MP4Box

    视频链接:https://github.com/sanlengjingvv/mpeg-dash-sample/blob/master/input.mp4

    # 用 ffmpeg 转码得到不同质量的视频
    ffmpeg -i input.mp4 -s 160x90 -c:v libx264 -b:v 250k -g 90 -an input_video_160x90_250k.mp4
    ffmpeg -i input.mp4 -s 320x180 -c:v libx264 -b:v 500k -g 90 -an input_video_320x180_500k.mp4
    ffmpeg -i input.mp4 -s 640x360 -c:v libx264 -b:v 750k -g 90 -an input_video_640x360_750k.mp4
    ffmpeg -i input.mp4 -s 640x360 -c:v libx264 -b:v 1000k -g 90 -an input_video_640x360_1000k.mp4
    ffmpeg -i input.mp4 -s 1280x720 -c:v libx264 -b:v 1500k -g 90 -an input_video_1280x720_1500k.mp4
    # 用 ffmpeg 得到音频
    ffmpeg -i input.mp4 -c:a aac -b:a 128k -vn input_audio_128k.mp4

    -i # 选择输入文件
             -s #选择分辨率
             -c;v #选择codec编码器
             -b:v # 选择码率
             -an # audio no 不要编码audio
             -g  # 图像组大小(GOP length) 

    # 用 mp4box 得到 MPEG-Dash 需要的音视频和 .mpd 文件
    MP4Box -dash 5000 -rap -frag-rap -profile dashavc264:onDemand -frag 5000 input_audio_128k.mp4 input_video_160x90_250k.mp4 input_video_320x180_500k.mp4 input_video_640x360_750k.mp4 input_video_640x360_1000k.mp4 input_video_1280x720_1500k.mp4 -out main.mpd

             运行之后的界面如下,包含原视频,音频,切片和mpd文件

    三、使用npm安装http-server

    npm install http-server -g
    npm install grunt-cli -g

        打开http-server服务器

    # --cors 代表接受任意域名的跨域资源共享,-c-1 代表不启用缓存
    http-server -a 127.0.0.1 -p 9999 --cors -c-1

        打开浏览器,输入http://127.0.0.1:9999/,显示如下

                                                          

    四,下载dash.js,并启动

    找另一个目录dash.js文件夹中下载构建 dash.js,一个开源的支持 MPEG-Dash 协议的播放器
    git clone https://github.com/Dash-Industry-Forum/dash.js.git
    cd dash.js
    npm install  //下载需要的模块
    grunt dev   //启动

    之后出现如下界面,点击“DASH IF Reference player

                 

              

    五、打开切片的视频。

            右击http-server页面的mpd文件,选择复制链接,然后复制到上图播放器界面上面的链接处,点击load加载视频。如图所示,视频右下角可以选取视频画质。

            下面也会显示缓存,延迟,码率等信息

     

     

     

    展开全文
  • Linux之shell以及bash、dash的详解

    万次阅读 多人点赞 2018-07-17 15:47:25
    Linux之shell、sh、bash、dash详解 首先,我们先借用两张图来简单概括一下Linux系统的结构: 好的,下面我们来分别来解释其中的一些概念和作用: Shell与Shell script 何为linux的shell? 人们总是...

    Linux之shell以及bash、dash的详解


    首先,我们先借用一张图来简单概括一下Linux系统的结构:

    这里写图片描述

    好的,下面我们来分别来解释其中的一些概念和作用:


    Shell与Shell script

    • 何为linux的shell?

      人们总是形象的把Linux系统比作一个“蛋”,那么组成的硬件(Hardware)就好比是这个蛋的蛋核(蛋黄);
      Linux-Kernel(Linux内核)系统好比是这个蛋的蛋清(哟。。不会吧~~不是才说了是内核吗?怎么又成蛋清了呢?请理解哈,谁叫人家硬件硬实力强呢!所以我们的Kernel还是暂且委屈一下咯~_~,不过在软件层面,咱们的Kernel是核心没错的哦!!);
      这里写图片描述
      我们都知道各类程序或解释过后命令是通过Kernel(Linux内核)与Hardware(计算机硬件)交流,驱动硬件设备完成相关的行为;那么我们又通过什么与系统内核交流呢?没错的,是Shell,Shell 英文名叫“壳”,是一个处理用户请求工具或接口,它负责解释用户输入的命令调用用户希望使用的程序。

    • Shell Script(Shell脚本)与命令

      我们很容易知道“Shell Script”指的是针对shell所写的脚本。我们将一些shell规定的语法与命令,再搭配正则表达式、管道命令与数据流重定向等功能,写成一个纯文本文件以达到我们想要的处理目的,再配以“.sh”的扩展名,这便是“Shell script”了。懂了吧!

      简言之,我们只有通过Shell 这个工具来解释我们的命令等请求,我们才能成功实现与计算机的交流,同时再搭配Shell script可以批量处理命令的“程序”,我们就可以与计算机更优雅的交流哟!


    Bash与Dash的概念及区别

    • Shell的多样性下的bash与dash

      我们可能会问:既然shell是解释命令的工具,那么这个工具可不可以多样化呢?不同的解释工具可不可以遵从不同的规则呢?
      这是必然的咯,何况是像Linux这种开源的好东西,怎么会缺乏多样性呢?!
      所以,我们不难就理解Linux中的shell有多种类型了吧,这其中最常用的几种是Bourne shell(sh)、C shell(csh)和Korn shell(ksh)。其中三种shell各有优缺点:

      Bourne shell是UNIX最初使用的shell,并且在每种UNIX上都可以使用。Bourne shell在shell编程方面相当优秀,但在处理与用户的交互方面做得不如其他几种shell。

      Bourne Again shell,它是Linux操作系统缺省的shell,是Bourne shell的扩展,简称Bash,与Bourne shell完全向后兼容,并且在Bourne shell的基础上增加、增强了很多特性。Bash放在/bin/bash中,它有许多特色,可以提供如命令补全、命令编辑和命令历史表等功能,它还包含了很多C shell和Korn shell中的优点,有灵活和强大的编程接口,同时又有很友好的用户界面。
      所以在GNU/Linux 操作系统中的 /bin/sh 是 bash(Bourne-Again Shell)的符号链接(但是这只是比较原始的做法,现在开始有了新的做法了),也就是若脚本第一行为“#!/bin/bash”,我们使用命令:”sh script_name.sh“时是调用的bash去解释脚本;

      下面我们接着来看看所谓的新的改变
      Dash,GNU/Linux操作系统中的/bin/sh本是bash (Bourne-Again Shell) 的符号链接,但鉴于bash过于复杂,有人把bash从NetBSD移植到Linux并更名为dash (Debian Almquist Shell),并建议将/bin/sh指向它,以获得更快的脚本执行速度。Dash Shell 比Bash Shell小的多,符合POSIX标准。也就是若脚本第一行为“#!/bin/sh”,我们使用命令:”sh script_name.sh“时是调用的dash去解释脚本;

      Ubuntu继承了Debian,所以从Ubuntu 6.10开始默认是Dash Shell。

      我使用的是Ubuntu 18.04的版本,所以我的系统默认sh符号链接dash,如下:

      root@Richard:~/scripts# ls -l /bin/sh /bin/bash
      -rwxr-xr-x 1 root root 1113504 45 02:30 /bin/bash
      lrwxrwxrwx 1 root root       4 73 20:04 /bin/sh -> dash
      

    • 解决一个我们时常会遇到的shell script执行问题

      我们参照鸟个的书写第一个shell script时也许会遭遇下面的尴尬:
      我们编写一个名为sh01.sh 的脚本

      
      #!/bin/bash
      
      
      # Program:
      
      
      #       This program shows "Hello World!" in your screen.
      
      
      # History:
      
      
      # 2018/7/17 Richard     First release
      
      PATH=/bin;/sbin/;/usr/bin;/usr/sbin;/usr/local/bin;/usr/local/sbin;~/bin
      export PATH
      
      echo -e "Hello world! \a \n"
      
      exit 0

      运行

      root@Richard:~/scripts# sh sh01.sh 
      -e Hello world! 

      为什么把参数-e都输出了呢?这不是我们想要的啊!

      原来是我的Ubuntu 默认的sh命令调用dash去解释一个改用bash去解释的shell script,因为dash 对echo命令的解释标准中不支持 -e 参数,固出错!

      解决方案

      方案1
      如果我们一定要使用 -e 这个参数,那我们可以这样做
      脚本不变,运行命令改变为bash

      root@Richard:~/scripts# bash sh01.sh 
      Hello world! 

      方案2
      脚本中去掉 -e 参数

      
      #!/bin/bash
      
      
      # Program:
      
      
      #       This program shows "Hello World!" in your screen.
      
      
      # History:
      
      
      # 2018/7/17 Richard     First release
      
      PATH=/bin;/sbin/;/usr/bin;/usr/sbin;/usr/local/bin;/usr/local/sbin;~/bin
      export PATH
      
      echo "Hello world! \a \n"
      
      exit 0
      

      运行命令不变

      root@Richard:~/scripts# sh sh01.sh 

      至此:问题以解决,顺便我们还懂了shell的相关知识

    最后,鸣谢博客(https://blog.csdn.net/liudsl/article/details/79213390

    展开全文
  • DashDash相关领域知识总结

    万次阅读 2017-03-15 15:16:25
    1.DASH介绍 DASH,又叫MPEG DASHDASH:Dynamic Adaptive Streaming over HTTP ,是一种在互联网上传送动态码率的Video Streaming技术,类似于苹果的HLS,DASH会通过media presentation description (MPD)将视频...
  • dash入门

    2020-03-21 23:15:43
    之前一直是使用R语言的shiny,今天就来写一些dash,因为感觉plotly的dash比shiny更加强大,可能是因为语言的本身的原因,python就是比R语言灵活,强大 先介绍如何安装吧, 安装包 我使用的就是win10上的anaconda的...
  • python dash

    千次阅读 2019-06-27 22:50:31
    # -*- coding: utf-8 -*- import dash import dash_core_components as dcc import dash_html_components as html external_stylesheets = ['...app = dash.Dash(__nam...
  • Dash(达世币)

    千次阅读 2018-10-23 20:01:39
    达世币(Dash),是一种开源的点对点(P2P)加密火币,能够提供即时交易、匿名交易和替代火币功能。 Dash 网络是通过 PoW 机制负责保护的,使用的是基于 11 种不同哈希函数的 X11 算法,主节点是一种服务证明层。 ...
  • 关于dash的基础学习

    千次阅读 2018-04-25 01:26:58
    关于dash的基础学习研究了有关dash的一篇论文,此文的研究重点在于自适应码率切换算法,传统的算法单独考虑网络的状态或者播放缓冲的状态,并不能很好的把二者结合起来。切换视频码率的效果并不理想。因此,提出一个...
  • Ubuntu切换默认sh为bash或者dash

    万次阅读 2016-08-06 15:06:00
    1 bash与dash从Ubuntu 6.10开始,默认使用dash(theDebian Almquist Shell)而不是bash(the GNUBourne-Again Shell).但Login Shell还是bash. 原因是dash更快、更高效,而且它符合POSIX规范。Ubuntu在启动的时候会运行...
  • 一、简介  ROS是一种基于匿名发布/订阅机制的中间件,允许不同ROS进程之间的消息传递。  在任何ROS 2系统的核心是ROS图。ROS图是指ROS系统中的节点网络和它们之间的连接。  所以,对于使用过ROS的人来说,在...
  • 文章目录前言方案一:Zeal优点缺点方案二:Velocity优点缺点方案三:devdocs.io优点缺点将devdocs应用...因此想要个像Dash那样的替代方案在linux和win上离线也能用。 方案一:Zeal 链接:https://github.com/zeald...
  • Dash币资料

    2019-04-17 21:14:01
    Dash学习资料 github-达世币白皮书 Dash英文白皮书 达世币-中文帮助文档 privateSend(匿名支付) Dash github 源代码 PrivateSend on MYCRYPTOPEDIA PrivateSend Dash 匿名性分析 Battle of the ...
  • 自适应流媒体传输(一)——DASH媒体内容的生成

    万次阅读 热门讨论 2016-01-02 23:01:07
    DASH(Dynamic Adaptive Streaming over HTTP)即自适应流媒体传输,典型的系统框图如下 简单概括来说,就是在服务器端提前存好同一内容的不同码率、不同分辨率的多个分片以及相应的描述文件MPD,客户端在播放时...
  • DASH

    千次阅读 2012-10-29 09:26:08
    DASH MP4Box can be used to generate content conformant to the MPEG-DASH specification, aka ISO/IEC 23009-1 available in ISO Publicly Available Standards. For more details on what is DASH ...
  • Dash Based On Plotly

    千次阅读 2017-08-02 10:41:44
    官方文档:https://plot.ly/dash...Dash is a productive Python framework for building web applications. Written on top of Flask, Plotly.js, and React.js, Dash is ideal for building data visualization apps
  • 在 Anaconda3 5.0.0 中安装 Plot.ly Dash。导入 dash。导入 dash_core_components,本例中会用到 dash_core_components.Graph 用于显示数据图, dash_core_components.Slider 用于显示滑块。导入 dash_...
  • Dash 4 系列许可 license.dash-license . Dash 4.1.2 亲测可用
  • MPEG-DASH介绍

    万次阅读 2016-06-06 20:59:30
    MPEG-DASH介绍 前言:从接触MPEG-DASH到现在大概也有3个多月了,前几天需要在课上总结下这半年的工作,大概做了一个ppt,现在想进一步总结下,写一个关于DASH入门的文章,供后人参考。
  • Dash是一款构建web应用的Python框架,建立在 Plotly.js, React 和 Flask 之上,将现代UI元素(如下拉框、滑块和图形)直接与Python代码绑定

空空如也

1 2 3 4 5 ... 20
收藏数 51,336
精华内容 20,534
关键字:

Dash