利用VLC解码youtube视频链接
一、需求
现在有youtube视频播放链接(I),需要得到可以直接播放的视频链接(O)。
输入链接(I):
https://www.youtube.com/watch?v=xAsjRRMMg_Q
输出链接(O):
http://r14---sn-a5m7ln76.googlevideo.com/videoplayback?ip=199.231.215.246&key=yt5&expire=1425392524&mt=1425370849&mv=m&ms=au&sparams=cnrycms%2Cdur%2Cid%2Cinitcwndbps%2Cip%2Cipbits%2Citag%2Cmime%2Cmm%2Cms%2Cmv%2Cpl%2Cratebypass%2Csource%2Cupn%2Cexpire&id=o-APmt7eobtj9jn-nwJYcAfq33J8Hdpa1kJ61DKySGOmbQ&upn=NS5UYm0pT40&dur=60.116&itag=22&pl=24&source=youtube&fexp=905657%2C907263%2C917000%2C927622%2C930811%2C936100%2C9406921%2C9407524%2C943917%2C947225%2C947240%2C948124%2C951703%2C952302%2C952612%2C952901%2C955301%2C957201%2C958504%2C959701&mime=video%2Fmp4&signature=30CDD93C439D1674F444A45E7C4ADD1838D229CA.91BE6B1991640088E635B379664F4E7EF3DF6662&mm=31&sver=3&ratebypass=yes&cnrycms=yes&ipbits=0&initcwndbps=13583750
因为开源播放器VLC中有播放youtube视频的相关实现,因此希望直接利用VLC实现youtube的视频解码。
二、分析
VLC版本:vlc-2.1.5。
VLC通过lua脚本实现youtube视频解码,具体文件是/vlc-2.1.5/share/lua/playlist/youtube.lua。
而youtube.lua的相关解析函数和结果由VLC的lua模块通过demux.c文件调用。
因此思路便是在VLC的入口函数/vlc-2.1.5/bin/vlc.c中引入输入链接,将其传递给youtube.lua和demux.c实现解析,然后将解析结果从demux.c传回入口函数vlc.c,从而获得我们需要的youtube视频播放链接。
三、实现
改动了VLC的4个文件
/vlc-2.1.5/share/lua/playlist/youtube.lua
/vlc-2.1.5/modules/lua/demux.c
/vlc-2.1.5/bin/vlc.c
/vlc-2.1.5/bin/Makefile
新添加了7个依赖软件包
lua-5.1.5
gmp-4.3.1
gnupg-2.0.26
nettle-2.7.1
gnutls-3.3.12
libgcrypt-1.6.2
libgpg-error-1.17
四、流程
1、在VLC入口函数中添加输入链接,利用已有实例libvlc_instance_t *vlc,调用input_item_New 和 playlist_AddInput 将输入链接引入VLC;
2、VLC运行后,会在youtube.lua中得到视频链接的解析结果,将结果赋值给新添加的全局变量path_v;
3、在demux.c中利用C和lua混合编程提取出youtube.lua的path_v;
4、因为VLC的主线程与和demux模块分属不同的线程,因此在这里选择使用消息队列传递链接,在demux.c中建立消息队列,压入path_v值;
5、在vlc.c中使用与demux.c相同的消息队列获取path_v值,从而将最终结果返回至入口函数。
6、需要修改Makefile文件通过编译。
利用VLC解码youtube视频链接的更多相关文章
- python爬取youtube视频 多线程 非中文自动翻译
声明:我写的所有文章都是发在博客园的,我看到其他复制粘贴过去的 连个出处也不写,直接打上自己的水印...真是没的说了. 前言:前段时间搞了一些爬视频的项目,代码都写好了,这里写文章那就在来重新分析一遍 ...
- Python:使用youtube-dl+ffmpeg+FQ软件下载youtube视频
声明:本文所述内容都是从http://blog.csdn.net/u011475134/article/details/71023612博文中学习而来. 背景: 一同学想通过FQ软件下载一些youtu ...
- YouTube视频下载的12个软件(Win和Mac)
如今,观看视频已经成为人们生活中重要的一部分.很多时候,我们都需要用到视频,比如教育用途.会议报告.休闲娱乐以及广告宣传等.如果你觉得有时候资源不好找的话,不放去看下YouTube.YouTube是世 ...
- YouTube视频下载方法汇总
YouTube是一个视频共享网站,YouTuber们自己拍摄并制作视频,上传到YouTube,然后用户观看.分享并评论这些内容.虽然在线观看很方便,但是有些时候你却只能处于离线的状态,比如出差.旅游. ...
- 使用X264编码yuv格式的视频帧使用ffmpeg解码h264视频帧
前面一篇博客介绍在centos上搭建点击打开链接ffmpeg及x264开发环境.以下就来问个样例: 1.利用x264库将YUV格式视频文件编码为h264格式视频文件 2.利用ffmpeh库将h264格 ...
- python爬虫脚本下载YouTube视频
python爬虫脚本下载YouTube视频 爬虫 python YouTube视频 工作环境: python 2.7.13 pip lxml, 安装 pip install lxml,主要用xpath ...
- 下载的youtube视频
youtube 视频下载方法[详解] 1.打开网址: http://kej.tw/flvretriever/. 2.输入要下载的youtube视频的网址. 3.点击右侧RETRIEVE NOW ! ...
- python下载youtube视频
谷歌开源了一个新的数据集,BoundingBox,(网址在这里)这个数据集是经过人工标注的视频数据集,自然想将它尽快地运用在实际之中,那么首先需要将其下载下来:可以看到网址上给出的是csv文件,该文件 ...
- Mac电脑如何快速下载YouTube视频
如果你想下载一些教育类的视频资源,或者是一些学习的教程,那么YouTube是一个很好的视频资源平台.YouTube上面各种各样的资源都有,而且质量都很有保证,尤其是那些订阅量很多的人.可惜的是,You ...
随机推荐
- .NET技术-5.0. NETCORE设置返回数据字段的大小写
.NET技术-5.0. NETCORE设置返回数据字段的大小写 问题来源于我写了一个接口,接口的返回类型是JsonResult,但是对接之后反应返回结果的首字母全小写了, 后来查了写资料返现.net ...
- 题解 P1317 【低洼地】
题目 这题挺简单的,没必要用数组 [分析] 需要判断的是低洼地的数量 通过对题目中图进行分析,显然可以发现低洼地的定义: 若数组中存在一个数值相同的连续区间,这个区间端点外相邻两点的数值都大于该区间的 ...
- 对PHP-GC(垃圾回收)的一点理解
一直对php的垃圾回收机制不明不白故自己开贴记录下. 首先,说到垃圾回收,得先知道什么情况下才能产生垃圾. 如果一个变量refcount在增加,说明在被使用,不是垃圾. 如果一个变量的refcount ...
- 2.react 基础 - create-react-app 目录结构 及 组件应用
1. react-app 脚手架的 目录结构 node_modules -d 存放 第三方下载的 依赖的包 public -d 资源目录 favicon.ico - 左上角的图标 index.h ...
- 股票数据的原始数据形态&数据驱动来设计金融股票业务场景
1. 数据源 其实金融数据没大家想象的那麽复杂,只需要最原始状态的数据,保存到本地即可以. 那麽,怎样才是股票数据的原始状态呢.那就看看1920's年代的道氏理论,他是怎样计算道琼斯指数,那麽他采用的 ...
- ZJNU 2235 - EnDlEsS ChAsE
因为速度值保证各不相同 所以n只战斗人形会出现 n! 种不同情况 可以用不同id表示不同人形的速度 比如1 2 3三只人形 他们可能的排列有 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 ...
- ios ktvhttpcache 音视频缓存插件使用
1.PodFile 文件增加 pod 'KTVHTTPCache', '~> 2.0.0' 2.在终端 需要先cd到podfile文件所在目录 执行pod install 3.在header ...
- Python笔记_第一篇_面向过程_第一部分_5.Python数据类型之集合类型(set)
集合!Python中的集合数据基本上是为了方便数学计算使用的. 什么是集合? 集合就是“确定的一堆东西”.集合里面的东西叫做元素. 特点:1. 集合里面是没有重复的元素的. 2. ...
- Windows10配置Jmeter环境
注:在安装Jmeter之前,请先检查下电脑有没有装JDK:[Win+R]然后输入cmd->进入命令行界面,输入java -version 出现以下信息就是此电脑已安装了JDK.由于jmeter要 ...
- 多标签图像分类任务的评价方法-mAP
http://blog.sina.com.cn/s/blog_9db078090102whzw.html 多标签图像分类(Multi-label Image Classification)任务中图片的 ...