1

I'm not sure if this is the right place to post this question,I googled a lot about this,but nothing turned up,. for a link of the form

http://www.youtube.com/watch?v=[video_id]

How do i get the link for the data stream?

4

4 回答 4

3

以下 bash 脚本将检索 youtube 流 url。我知道这已经过时了,但也许这会对某人有所帮助。

#!/bin/bash

[ -z "$1" ] && printf "usage: `basename $0` <youtube_url>\n" && exit 1

ID="$(echo "$1" | grep -o "v=[^\&]*" | sed 's|v=||')"
URL="$(curl -s "http://www.youtube.com/get_video_info?&video_id=$ID" | sed -e 's|%253A|:|g' -e 's|%252F|/|g' -e 's|%253F|?|g' -e 's|%253D|=|g' -e 's|%2525|%|g' -e 's|%2526|\&|g' -e 's|\%26|\&|g' -e 's|%3D|=|g' -e 's|type=video/[^/]*&sig|signature|g' | grep -o "http://o-o---preferred[^:]*signature=[^\&]*" | head -1)"

[ -z "$URL" ] && printf "Nothing was found...\n" && exit 2

echo "$URL"
于 2012-11-07T06:56:23.007 回答
1

这是对 YouTube 页面进行逆向工程以提取流数据的快速课程。

在 HTML 中,你会发现一个<script> 标签,它定义了一个变量“swfHTML”——它看起来像这样:“var swfHTML = (isIE) ?”...

该片段后面的引号中的文本是显示 Flash 对象的 HTML。请注意,此文本是一组被连接起来的分解字符串,因此您需要对其进行清理(即剥离 '" + "' 的实例并转义反斜杠以获取 HTML 字符串。)

清理后,您需要找到带有name="flashvars"的<param> 标记,该标记的值是一个 & 分隔的 URL。对 & 进行拆分,您将获得与该视频相关的所有数据的键值对。

您要查找的主键是“ fmt_url_map ”,它是逗号分隔值的 URL 编码字符串,以“35|”开头 或“34|” 或其他。(这些在另一个键“ fmt_list ”中定义为 35 分辨率为 854x480、34 分辨率为 640x360 等的文件。)

于 2010-12-30T15:52:41.060 回答
0

每个频道都提供 rss 数据,不会立即更新。

这是 Youtube RSS 文件的生成器。您应该能够根据 RSS 信息推断视频文件的位置。flv 文件应该是可流式传输的,但也提供其他格式。

编辑: http://www.referd.info/不再可用。它基本上是一项服务,您提供了 youtube 链接并取消引用它找到了该视频的所有可能下载源。我确信那些服务仍然存在……这个不再存在。

于 2010-12-30T13:50:16.403 回答
0

您需要像这样http://www.youtube.com/get_video_info?&video_id=OjEG808MfF4的打开链接 并找到您的流您的返回数据

于 2015-09-22T11:30:40.233 回答