利用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

新添加了6个依赖软件包

lua-5.1.5
gmp-4.3.1
gnupg-2.0.26
nettle-2.7.1
gnutls-3.3.12
libgcrypt-1.6.2

四、流程

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文件通过编译。

时间: 2024-10-10 13:47:56

利用VLC解码youtube链接的相关文章

利用vlc插件将IP摄像头嵌入网页和网页播放RTSP流

1. 描述 最近有一个项目需要将IP摄像机的画面嵌入到web网页中,考虑到减少开发成本,使用vlc插件播放摄像头提供的RTSP流.在videolan wiki的官网详细介绍了关于vlc web plugin的使用方法. 有一点需要注意的是,vlc2.2.0以前的版本,wiki上提供的方法却不再适用.原因是vlc的last一个版本中没有axvlc.cab文件了,最新的的一个在0.9.2版本对应的目录中.而且在IE中还回应为这个cab文件没有签名而无法安装此插件. 2. 解决办法 使用2.2.0以后

python利用django实现简单的登录和注册,并利用session实现了链接数据库

利用session实现与数据库链接,登录模块(在views.py) def login(request): # return HttpResponseRedirect('/') # 判断是否post方式,如果是则进行下面的表单处理 if request.method == 'POST': rs = Users.objects.filter(email=request.POST.get('email'), #django的filter方法是从数据库的取得匹配的结果,返回一个对象列表,如果记录不存在

如何利用开源解码项目开发js视频解码的web应用 系列

介绍web上开发视频业务相关程序的技术演变历程 https://www.cnblogs.com/maoliangwu/articles/12046495.html 介绍ffmpeg asm.js webassembly emsdk等技术背景 https://www.cnblogs.com/maoliangwu/articles/12114364.html 指导如果利用emsdk 编译ffmpeg的解码模块,得到webassembly的wasm文件,并调用wasm文件的解码接口视频视频解码业务 h

t.cn短网址怎么生成?利用新浪短链接转化器生成永久短网址的几种方法

不管是在短信中,还是社交软件中(如微信.QQ等),经常能看到开头为t.cn格式的链接出现,其实这是新浪微博提供的短网址服务,下面详谈t.cn短链接的前世今生,并附上几种短网址制作方法. 1.新浪短网址的来历 t.cn新浪短网址,格式为http://t.cn/xxxxx ,是新浪微博与2011年3月23日启用t是新浪微博与2011年3月23日启用t.cn作为微博内容中的网址链接跳转的缩短服务,不再使用原来的短链接域名sinaurl.cn. 新的短网址域名比原来的sinaurl.cn缩短6个字符,这

利用ffmpeg将H264流 解码为RGB

利用H264解码分为几个步骤: 注意一点在添加头文件的时候要添加extern "C",不然会出现错误 [cpp] view plaincopy extern "C" { #include <avcodec.h> #include <avformat.h> #include <avutil.h> #include <swscale.h> }; 这里申明了几个全局变量 [cpp] view plaincopy AVCode

VLC说明

一.简介 vlc的全名是Video Lan Client,是一个开源的.跨平台的视频播放器.VLC支持大量的音视频传输.封装和编码格式,完整的功能特性列表可以在这里获得http://www.videolan.org/vlc/features.html,下面给出一个简要的不完整的列表: 操作系统:Windows.WinCE.Linux.MacOSX.BEOS.BSD 访问形式:文件.DVD/VCD/CD.http.ftp.mms.TCP.UDP.RTP.IP组播.IPv6.rtsp 编码格式:MP

VLC框架分析

功能部份:VLC媒体播放器的核心是libvlc ,它提供了界面,应用处理功能,如播放列表管理,音频和视频解码和输出,线程系统.所有libvlc源文件设在的/src目录及其子目录:# config/ :从命令行和配置文件加载配置,提供功能模块的读取和写入配置 # control/: 提供动作控制功能,如播放/暂停,音量管理,全屏,日志等. # extras/: 大多是平台的特殊代码 # modules/: 模块管理 # network/: 提供网络接口(socket管理,网络错误等) # osd/

H.264视频在android手机端的解码与播放(转)

随着无线网络和智能手机的发展,智能手机与人们日常生活联系越来越紧密,娱乐.商务应用.金融应用.交通出行各种功能的软件大批涌现,使得人们的生活丰富多彩.快捷便利,也让它成为人们生活中不可取代的一部分.其中,多媒体由于其直观性和实时性,应用范围越来越广,视频的解码与播放也就成为研究的热点. H.264标准技术日渐成熟,采用了统一的VLC符号编码,高精度.多模式的位移估计,基于4×4块的整数变换.分层的编码语法等.这些措施使得H.264算法具有很高的编码效率,在相同的重建图像质量下,能够比H.263节

命令行利用ffmpeg实现rtmp推流《转》

ffmpeg在以前介绍过,是一个相当强大的工具,我们这次利用它实现rtmp推流(最终推流地址统一为rtmp://127.0.0.1:1935/live/123). 1.首先下载ffmpeg和ffplay http://ffmpeg.org/ 官方下载链接为:http://ffmpeg.org/ 2.cmd进入ffmpeg所在目录 cmd进入ffmpeg.exe所在目录 3.ffmpeg查看电脑设备 输入下面的语句即可列出电脑的设备 ffmpeg -list_devices true -f dsh