影视飓风得罪了谁?

news2024/11/25 21:44:02

影视飓风

近日,B 站知名 Up 主「影视飓风」发布了一期视频,名字为《清晰度不如4年前!视频变糊是你的错觉吗?》,但因为背后牵扯的利益太重,最终视频不得已全网下架。

alt

没有第一时间看过视频的你,相信一定和我一样好奇,视频到底讲了什么,背后牵扯到的蛋糕到底有多大。

互联网是有记忆的,发布过的东西就不可能毫无痕迹,即使发布者本身要全面下架,也不行。

我从海的那里找到了原视频,感兴趣的大家可以趁热观看:

播放地址

为了防止视频被动丢失,这里再简单总结一下视频内容:

国内所有视频平台,为了节省存储和带宽,都对发布者的作品进行"压缩",这很正常,其他视频网站也都这么干的。

但和其他视频网站不同的是,国内视频网站为了将成本压缩到极致,会采用一些不能确保用户体验的做法,最终为了"保能看"而"不保好看",甚至于发布者上传两种清晰度的视频,高清的版本经过平台处理后,最终的播放效果还不如低清的版本。

这已经严重违背了用户「选择高清格式,是为看品质更高的视频」(甚至还是付费实现的),以及 Up 主「运用更昂贵的拍摄设备,是为了给用户呈现更好的内容」等初衷。

这还不是最离谱的。

某些平台,除了运用影响观感的压缩算法,平台甚至还会对原视频"动手",例如增加视频的"锐度",使其"看起来"更加清晰,但实则会丢失了大量细节。

而这一切,都仅仅为了能够极致地压缩成本。

要知道,国内视频平台普遍都实现了年几十亿的盈利,但还要做到这个程度,属实不应该。

...

考虑到大多数网友和我一样,对影视行业的专业知识了解不深,也不知晓"行业标准"到底如何。

这里再大概分享一些著名视频平台的码率,以 4K 视频为例:

  • YouTube:15 Mbps ~ 18 Mbps
  • Netflix:20 Mbps ~25 Mbps(保守估计)
  • Amazon:20 Mbps ~25 Mbps(保守估计)
  • HBO: 20 Mbps ~25 Mbps(保守估计)
  • 某奇艺:2 Mbps ~ 5 Mbps(乐观估计)
  • 某讯视频:2 Mbps ~ 5 Mbps(乐观估计)
  • 某酷:2 Mbps ~ 5 Mbps(乐观估计)

简单来说,你可以将「码率」和「清晰度 + 流畅度」简单关联,如果一个视频码率过低,清晰度和流畅度都会大打折扣,通过和一些国际视频平台的码率对比,你应该知道视频说的"降低码率"有多离谱了。

...

回归主题。

来一道和 DP 相关的算法题。

题目描述

平台:LeetCode

题号:115

给定一个字符串 s 和一个字符串 t ,计算在 s 的子序列中 t 出现的个数。

字符串的一个 子序列 是指,通过删除一些(也可以不删除)字符且不干扰剩余字符相对位置所组成的新字符串。(例如,"ACE" 是 "ABCDE" 的一个子序列,而 "AEC" 不是)

题目数据保证答案符合 32 位带符号整数范围。

示例 1:

输入:s = "rabbbit", t = "rabbit"

输出:3

解释:
如下图所示, 有 3 种可以从 s 中得到 "rabbit" 的方案。
(上箭头符号 ^ 表示选取的字母)
rabbbit
^^^^ ^^
rabbbit
^^ ^^^^
rabbbit
^^^ ^^^

示例 2:

输入:s = "babgbag", t = "bag"

输出:5

解释:
如下图所示, 有 5 种可以从 s 中得到 "bag" 的方案。 
(上箭头符号 ^ 表示选取的字母)
babgbag
^^ ^
babgbag
^^    ^
babgbag
^    ^^
babgbag
  ^  ^^
babgbag
    ^^^

提示:

  • st 由英文字母组成

基本思路

有两个字符串 st,长度数量级都为 。

一个朴素的想法是,找出所有 s 的子序列,与 t 进行比较,找所有子序列的复杂度是 ,肯定会超时。

因此,我们放弃这种朴素思路。

字符串匹配也不具有二段性质,不可能有 级别的算法,那么复杂度再往下优化就是 的递推 DP 做法了。

动态规划

DP 的状态定义猜测通常是一门经验学科。

但是,对于两个字符串匹配,一个非常通用的状态定义如下:

定义 为考虑 s 中 个字符,t 中 个字符的匹配个数。

那么显然对于某个 而言,从「最后一步」的匹配进行分析,包含两类决策:

  • 不让 s[i] 参与匹配,也就是需要让 s 中 个字符去匹配 t 中的 字符。此时匹配值为
  • s[i] 参与匹配,这时候只需要让 s 中 个字符去匹配 t 中的 字符即可,同时满足 s[i]=t[j]。此时匹配值为

最终 就是两者之和。

Java 代码:

class Solution {
    public int numDistinct(String s, String t) {
        // 技巧:往原字符头部插入空格,这样得到 char 数组是从 1 开始
        // 同时由于往头部插入相同的(不存在的)字符,不会对结果造成影响,而且可以使得 f[i][0] = 1,可以将 1 这个结果滚动下去
        int n = s.length(), m = t.length();
        s = " " + s;
        t = " " + t;
        char[] cs = s.toCharArray(), ct = t.toCharArray();
        // f(i,j) 代表考虑「s 中的下标为 0~i 字符」和「t 中下标为 0~j 字符」是否匹配
        int[][] f = new int[n + 1][m + 1];
        // 原字符只有小写字符,当往两个字符插入空格之后,f[i][0] = 1 是一个显而易见的初始化条件
        for (int i = 0; i <= n; i++) f[i][0] = 1;
        for (int i = 1; i <= n; i++) {
            for (int j = 1; j <= m; j++) {
                // 包含两种决策:
                // 不使用 cs[i] 进行匹配,则有 f[i][j] = f[i - 1][j]
                f[i][j] = f[i - 1][j];
                // 使用 cs[i] 进行匹配,则要求 cs[i] == ct[j],然后有  f[i][j] += f[i - 1][j - 1]
                if (cs[i] == ct[j]) f[i][j] += f[i - 1][j - 1];
            }
        }
        return f[n][m];
    }
}

C++ 代码:

class Solution {
public:
    int numDistinct(string s, string t) {
        int n = s.length(), m = t.length();
        s = " " + s;
        t = " " + t;
        vector<vector<unsigned long long>> f(n + 1vector<unsigned long long>(m + 10));
        for (int i = 0; i <= n; i++) f[i][0] = 1;
        for (int i = 1; i <= n; i++) {
            for (int j = 1; j <= m; j++) {
                f[i][j] = f[i - 1][j];
                if (s[i] == t[j]) f[i][j] += f[i - 1][j - 1];
            }
        }
        return f[n][m];
    }
};

Python 代码:

class Solution:
    def numDistinct(self, s: str, t: str) -> int:
        n, m = len(s), len(t)
        s = " " + s
        t = " " + t
        f = [[0]*(m + 1for _ in range(n + 1)]
        for i in range(n + 1):
            f[i][0] = 1
        for i in range(1, n + 1):
            for j in range(1, m + 1):
                f[i][j] = f[i - 1][j]
                if s[i] == t[j]:
                    f[i][j] += f[i - 1][j - 1]
        return f[n][m]

TypeScript 代码:

function numDistinct(s: string, t: string): number {
    const n: number = s.length, m: number = t.length;
    const f: number[][] = new Array(n + 1).fill(0).map(() => new Array(m + 1).fill(0));
    for (let i: number = 0; i <= n; i++) f[i][0] = 1;
    for (let i: number = 1; i <= n; i++) {
        for (let j: number = 1; j <= m; j++) {
            f[i][j] = f[i - 1][j];
            if (s.charAt(i - 1) === t.charAt(j - 1)) f[i][j] += f[i - 1][j - 1];
        }
    }
    return f[n][m];
};
  • 时间复杂度:
  • 空间复杂度:

总结

  1. 关于字符串匹配,通常有两种(你也可以理解为一种)通用的状态定义:
  • 表示「第一个字符 s 中 个字符」与「第二个字符 t 中 个字符」的匹配结果
  • 表示「第一个字符 s 中 个字符」与「第二个字符 t 中 个字符」且 「最后一个字符为 t[j]」的匹配结果
  1. 往两个字符串的头部追加「不存在」的字符,目的是为了能够构造出可以滚动(被累加)下去的初始化值

进阶

事实上,关于字符串匹配问题,还有一道稍稍不同的变形的题目。

也是利用了类似的「通用思路」(状态定义) &「技巧」,然后对匹配过程中的字符进行分情况讨论,学有余力的同学可以看看:如何利用的「等差」性质降低「正则字符串匹配」算法复杂度

最后

巨划算的 LeetCode 会员优惠通道目前仍可用 ~

使用福利优惠通道 leetcode.cn/premium/?promoChannel=acoier,年度会员 有效期额外增加两个月,季度会员 有效期额外增加两周,更有超大额专属 🧧 和实物 🎁 福利每月发放。

我是宫水三叶,每天都会分享算法知识,并和大家聊聊近期的所见所闻

欢迎关注,明天见。

更多更全更热门的「笔试/面试」相关资料可访问排版精美的 合集新基地 🎉🎉

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2205122.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

019 spu、sku 条件检索

文章目录 spuSpuInfoController.javaSpuInfoServiceImpl.java skuSkuInfoController.javaSkuInfoServiceImpl.java 没有做分类检索功能 spu SpuInfoController.java /*** 列表*/RequestMapping("/list")//RequiresPermissions("product:spuinfo:list")pub…

牛客SQL29详解 计算用户的平均次日留存率

牛客SQL29详解 计算用户的平均次日留存率 牛客SQL29详解 计算用户的平均次日留存率 叮嘟&#xff01;这里是小啊呜的学习课程资料整理。好记性不如烂笔头&#xff0c;今天也是努力进步的一天。一起加油进阶吧&#xff01; 牛客SQL29详解 计算用户的平均次日留存率 题目&#x…

一、安装VMWARE和CentOS

一、安装VMware 1、基本说明 学习Linux需要一个环境&#xff0c;我们需要创建一个虚拟机&#xff0c;然后在虚拟机上安装一个Centos系统来学习 先安装virtual machine 15.5再安装Linux(CentOS 7.6/centos8.1)原理示意图 2、vmware15.5下载 官方地址:https://www.vmware.com/…

Map的实现类:HashMap

在API获取HsahMap类的全部信息 实例代码&#xff1a;创建一个Student类和Demo02 package com.map;public class Student {private String name;private int stuNo;public Student(String name, int stuNo) {this.name name;this.stuNo stuNo;}public String getName() {retu…

springboot酒店在线预订系统

基于springbootvue实现的酒店在线预订系统 &#xff08;源码L文ppt&#xff09;4-082 4.2 系统结构设计 构图是系统的体系结构&#xff0c;体系结构是体系结构体系的一部分&#xff0c;体系结构体系是体系结…

模型案例:| 野生鸟类检测模型!

导读 2023年以ChatGPT为代表的大语言模型横空出世&#xff0c;它的出现标志着自然语言处理领域取得了重大突破。它在文本生成、对话系统和语言理解等方面展现出了强大的能力&#xff0c;为人工智能技术的发展开辟了新的可能性。同时&#xff0c;人工智能技术正在进入各种应用领…

24.4 基于consul服务发现模式

本节重点介绍 : consul 安装consul go代码注册服务&#xff0c;注销服务&#xff0c;获取服务node_exporter改造为consul服务发现在数量比较大时&#xff0c;在注册服务的时候&#xff0c;关闭check&#xff0c;可以降低consul的压力 consul 安装 准备工作 # 下载consul wge…

实践体验密集小目标检测,以小麦麦穗颗粒为基准,基于YOLOv9全系列【yolov9/t/s/m/c/e】参数模型开发构建智能精准麦穗颗粒检测计数系统

对于常规的目标检测任务来说&#xff0c;诸如&#xff1a;COCO、VOC这类基础的数据场景&#xff0c;涌现出来了一些列性能初衷的检测模型&#xff0c;YOLO系列就是其中的佼佼者&#xff0c;不断地刷榜取得了越来越好的效果&#xff0c;不过这些评测指标是基于COCO、VOC这类公开…

信息系统项目管理师(十大管理域、五大过程组)

前言&#xff1a;信息系统项目管理师重点掌握每个过程中的ITO&#xff0c;即输入(Inputs)、工具(Tools)、输出(Outputs)。还有每个过程属于哪个过程组。 十大管理&#xff1a;整体管理、范围管理、进度管理、成本管理、质量管理、人力资源管理、沟通管理、干系人管理、风险管理…

猫头虎分享:Python库 Django 的简介、安装、用法详解入门教程

猫头虎分享&#xff1a;Python库 Django 的简介、安装、用法详解入门教程 &#x1f680;&#x1f40d; 今天猫头虎收到了一位粉丝的问题&#xff1a;“猫哥&#xff0c;如何在项目中使用Django搭建一个Web应用呢&#xff1f;”。这可是很多刚接触Python开发的朋友常遇到的困惑…

C++和OpenGL实现3D游戏编程【连载14】——VBO、VAO和EBO应用

&#x1f525;C和OpenGL实现3D游戏编程【目录】 1、本节实现的内容 我们从一开始学OpenGL到现在&#xff0c;OpenGL的图形绘图必须在glBegin()和glEnd()函数之间完成&#xff0c;在此基础之上&#xff0c;才能进行后续操作功能。但是我们今天要讨论一下OpenGL图形绘制的模式&a…

前端父子传递属性值

1. Vue3.4.X之前 &#xfeff; 2. Vue3.4.X之后版本 defineModel 父页面 &#xfeff; 子页面 &#xfeff; &#xfeff; &#xfeff;

Python | Leetcode Python题解之第463题岛屿的周长

题目&#xff1a; 题解&#xff1a; class Solution:def islandPerimeter(self, grid: List[List[int]]) -> int:rowlen(grid)collen(grid[0])nums0c0gridgrid[[0]*col]for i in range(row):grid[i].append(0)for j in range(col):if grid[i][j]1:nums1if grid[i][j]1 and …

跨境独立站还能做多久?谈谈独立站的长期价值

这几年&#xff0c;品牌出海与跨境独立站成了商业圈子的热门话题。伴随而来的则是日益激烈的市场竞争&#xff0c;不少新入局的卖家纷纷抱怨&#xff1a;“现在做独立站已经赚不到钱了&#xff01;”都发出了灵魂拷问&#xff0c;**跨境独立站还能做几年&#xff1f;**跨境电商…

【hot100-java】合并 K 个升序链表

链表篇 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val val; }* ListNode(int val, ListNode next) { this.val val; this.next next; }* }*/ class Solu…

基于Python的在线音乐平台

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…

qemu启动busybox虚拟机网络连接配置

一、busybox文件系统网络问题 由于根文件是用busybox构建&#xff0c;所以很多配置文件是没有的&#xff0c;包括部分网络的默认设置。启动虚拟机后只能使用ip命令和ifconfig命令查看网络状态。 二、开启qemu网络支持 想要使虚拟机上网&#xff0c;最简单的方式可以使用 -netde…

javaweb 文件存储

文件上传&#xff0c;是指将本地图片、视频、音频等文件上传到服务器&#xff0c;供其他用户浏览或下载的过程。 文件上传在项目中应用非常广泛&#xff0c;我们经常发微博、发微信朋友圈都用到了文件上传功能。 上传文件的原始form表单&#xff0c;要求表单必须具备以下三点…

双十一买些提高幸福感的生活单品!五款精选好物推荐~

双十一购物狂欢即将来临&#xff0c;这是一年一度的购物盛宴&#xff0c;家电和数码产品通常会在这个时期提供诱人的折扣。但品牌众多&#xff0c;每款产品又各有千秋&#xff0c;让人难以抉择。今天&#xff0c;我将分享一些在双十一期间值得考虑的高品质好物&#xff0c;让我…

【视频笔记】408新增知识点信号——里昂视频

文章目录 **2.信号****3.信号的实现**4.信号的处理**①忽略信号****②执行信号的默认操作****③捕获井处理信号**几个Linux支持的典型信号&#xff1a; **5.信号的产生**① **通过终端按键(键盘)产生信号**例如&#xff0c;CtrlC发送2号信号SIGINT、Ctrl\发送3号信号SIGQUIT② …