- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
快速提问
youtube 如何对他们的 url 进行编码?采取下面
http://www.youtube.com/watch?v=MhWyAL2hKlk
他们正在做什么来获得值 MhWyAL2hKlk
他们是否使用某种加密然后在他们最后解密
我想要一个与我正在处理的网站类似的东西,下面看起来很糟糕。
http://localhost:8888/example/account_player/?playlist=drum+and+bass+music
我想对 url 进行编码,使其表现得像 youtube 不知道他们是怎么做到的一样。
任何建议
最佳答案
嗯,从技术上讲,YouTube 使用一种算法生成视频 ID。老实说,我不知道。它可以是整个视频文件的哈希和 + 使用当前 UNIX 时间的盐,也可以是视频独有内容的 base64 编码。但我知道这很可能不是随机的,因为如果是的话,碰撞的风险就太高了。
不过,为了举例,我们假设 YouTube 会生成随机 ID。请记住,当使用随机生成的值存储某些内容时,通常最好实现碰撞检查以确保新对象不会覆盖现有对象。但在实践中,我建议使用哈希算法,因为它们是单向的并且在防止冲突方面非常有效。
所以,我对PHP不是很熟悉。我必须先用 JavaScript 写它。然后,我将它移植到 PHP,事实证明这相对简单:
function randch($charset){
return $charset[rand() % strlen($charset)];
}
function randstr($len, $charset = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-"){
$out = [];
for($i = 0; $i < $len; $i++){
array_push($out, randch($charset));
}
return join("", $out);
}
它的作用是通过给定的 charset
生成一个长度为 len
个字符的随机字符串。
这是一些示例输出:
randstr(5) -> 1EWHd
randstr(30) -> atcUVgfhAmM5bXz-3jgyRoaVnnY2jD
randstr(30, "asdfASDF") -> aFSdSAfsfSdAsSSddFFSSsdasDDaDa
虽然使用这么短的字符集不是一个好主意。
randstr(30, "asdf")
sdadfaafsdsdfsaffsddaaafdddfad
adaaaaaafdfaadsadsdafdsfdfsadd
dfaffafaaddfdddadasaaafsfssssf
randstr(30)
r5BbvJ45HEN6dWtNZc5ZvHGLCg4Qyq
50vKb1rh66WWf9RLZQY2QrMucoNicl
Mklh3zjuRqDOnVYeEY3B0V3Moia9Dn
现在假设您已经告诉页面使用此函数为刚刚上传的视频生成一个随机 ID,现在您想将此 key 存储在一个表中,并带有相关数据的链接以显示正确的页面.如果通过 $_GET
(例如 /watch?v=02R0-1PWdEf
)请求 ID,您可以告诉页面根据包含视频 ID 的数据库检查此 key ,如果找到匹配项,则从该键中获取数据,否则给出 404。
如果您不希望它是随机的,您也可以直接编码为 base 64 字符串。这可以通过 base64_encode()
和 base64_decode()
来完成。例如,假设您出于某种原因将视频数据放在一个字符串 $str="filename=apples.avi;owner=coolpixlol124"
中。 base64_encode($str)
将为您提供 ZmlsZW5hbWU9YXBwbGVzLmF2aTtvd25lcj1jb29scGl4bG9sMTI0
。
稍后使用 base64_decode($new_str)
对其进行解码,这将返回原始字符串。
不过,正如我之前所说,使用像 SHA
这样的散列算法可能是更好的主意。
希望对您有所帮助。
编辑:我忘记说了,YouTube 的视频 ID 目前是 11 个字符长,所以如果你想使用同样的东西,你会想要使用 randstr(11)
来生成一个 11 位随机字符串,就像我得到的这个样本 ID:6AMx8N5r6cg
编辑 2 (2015.12.17):完全重写了答案。原版是废话,我写的时候都不知道自己在想什么。
关于php - youtube 如何对他们的 url 进行编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12111744/
是否有任何解决方案来禁用右键单击选项并从 Youtube 视频中删除右下角水印 Logo ?我在搜索 GOOGLE 后尝试过。谁能告诉我? 谢谢你。 最佳答案 试试 modestbranding范围:
我想使用 YouTube API (v3) 来启用仅音乐轨道的搜索(没有猫或藤蔓或任何其他非音乐视频)。我查看了 API Explorer 和文档以获取有关该问题的任何指示,但找不到任何有用的信息。
我需要为网站使用YouTube视频缩略图的maxresdefault版本,但是在开发实现此目的的代码后,我发现并非所有视频都具有这些缩略图,尽管这些视频均为1080p。 有没有一种方法可以自动为我的所
我想通过“iframe”嵌入youtube视频,但YouTube在我国禁止使用,建议我如何在我的网站上嵌入视频! [1]:以下图片显示了在我的国家/地区无法访问youtube 最佳答案 该视频将被嵌入
我正在为myBB使用一个名为Profile Music Plugin的插件,可以在此处找到http://community.mybb.com/mods.php?action=view&pid=75 我
Youtube IFRAME API中是否有可以执行命令的功能,例如在播放的视频结尾处打开网站? (我相信有一个功能可以在旧的Java API下执行此操作,但该功能已于去年弃用。) 最佳答案 您可以引
我试图在Videos.insert和Videos.update查询中设置3d尺寸标志。但是标志不会改变。 更新查询示例: 请求: PUT https://www.googleapis.com/yout
使用此获取评论 评论主题:列表 GET https://www.googleapis.com/youtube/v3/commentThreads?part=snippet { "error": {
最近,我尝试使用OEmbed服务通过播放列表查询参数获取视频网址的iframe代码,但是OEmbed为我们提供了与我要求的视频不同的iframe代码。 这是带有播放列表查询参数的视频网址: https
我正在使用此代码: https://www.googleapis.com/youtube/v3/search?q=global+warming&part=id&maxResults=50&key=MY
我有一个LiveBroadcast,并且将来会添加一个scheduledStartTime。据我所知,这次测试不会对LiveBroadcast的整体状态产生影响,即广播是否具有准备就绪/测试的life
YouTube API是否支持在特定时间后关闭浏览器的参数? 这需要使用链接在不同位置共享来推广促销视频。视频播放结束后关闭浏览器。 最佳答案 您可以使用Youtube API监控视频是否播放完毕,然
如果没有表单上的透明面板,YouTube Player将可以正常播放视频,或者可以全屏播放视频,透明面板中有一些图像没有什么特别的。如果我取出透明面板,则YouTube播放器会按需工作,并嵌入到应用程
我正在通过Google进行身份验证,以尝试获取YouTube分析数据,但我的问题是我不知道在查询YouTube时如何向您填充参数 在这里,我正在提供一项新服务:然后尝试查询它 我不确定要在“ids”参
我想添加youtube视频列表,但不添加视频播放器。所以我需要的是 视频标题 视频缩略图 视频时长 我以某种方式设法通过使用此http://img.youtube.com/vi/4wew2uWoARw
我正在使用youtube api和python库gdata 我遵循了文档,但似乎没有出路。 问题是 - How do i get the size of the youtube video fil
使用Youtube API,我如何获得评论或顶过youtube视频的用户ID /处理列表? 提前致谢 最佳答案 在这里,您可以了解如何使用YouTube API v2(v3尚不支持此注释)获取评论:h
我正在为所有相关数据构建一个仪表板(以php为单位),我还想在YouTube“稍后观看”播放列表中显示我的商品数量。 我知道无法使用YouTube API来解决这个问题,但是也许有人想出一种解决方法?
我尝试使用YouTube API,但存在引号问题。 SearchResource.ListRequest searchListRequest = yt.Search.List("sni
我想为我的Android应用程序的用户构建视频推荐器。我有Google OAuth可以登录我的应用程序。我可以获取有关我的应用程序用户在YouTube上观看的视频的数据吗? 最佳答案 v3 API分为
我是一名优秀的程序员,十分优秀!