利用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 ...
随机推荐
- Maven:org.apache.maven.archiver.MavenArchiver.getManifest错误
Eclipse导入maven多模块工程时报错org.apache.maven.archiver.MavenArchiver.getManifestorg.apache.maven.archiver.M ...
- 《C Primer Plus》- 第二章 C语言概述
本笔记写于2020年1月27日. 本系列文章参考的是<C Primer Plus>(第六版),其中里面会有笔者自己的相关补充. 以下示例均运行于macOS Catalina 10.15.2 ...
- 高级变量类型(列表,元组,字典,字符串,公共方法,变量高级)for循环
Python 中数据类型可以分为 数字型 和 非数字型 数字型 整型 (int) 浮点型(float) 布尔型(bool) 真 True 非 0 数 -- 非零即真 假 False 0 复数型 (co ...
- 关于WIN7系统,在运行pycharm时,老出现问题
今天在pycharm中写python代码的时候,一直跳出一个窗口: 后来经过上网查询,得出针对此类问题的解决办法如下: (1)在运行中输入“Regedit” (2)HKEY_CURRENT_USER— ...
- linux系统终端介绍
https://zhidao.baidu.com/question/174261014.html
- UML-如何进行对象设计?
之前的章节,学过了OOA,以及交互图+类图.本章主要讲述OOD.OOD就是面向对象设计,那如何进行对象设计? 概览 1.输入制品 注:这些制品并非都必要. 2.活动 1).针对输入的制品,采用什么样的 ...
- C++数组常用操作
1. 遍历数组 使用基于范围的for循环来遍历整个数组 用_countof()来得到数组中的元素个数 #include <iostream> #include <cstdio> ...
- 循环队列--忘记分配空间和如何用tag判断队空队满
#include<iostream> #define maxsize 100 using namespace std; struct CLqueue { int *Q; int front ...
- python代码实现购物车(django的redis与vue)
安装模块 pip install django-redis 后端代码 # 购物车 class CartView(APIView): # 初始化函数 def __init__(self): self.c ...
- 20190221 beautiful soup 入门
beautiful soup 入门 Beautiful Soup 是 python 的一个库,最主要的功能是从网页抓取数据. Beautiful Soup 自动将输入文档转换为 Unicode 编码, ...