# youtube-jextractor
**Repository Path**: chinasoft2_ohos/youtube-jextractor
## Basic Information
- **Project Name**: youtube-jextractor
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: GPL-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 1
- **Created**: 2021-05-08
- **Last Updated**: 2021-09-30
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# youtube-jextractor
#### 项目介绍
- 项目名称: youtube-jextractor
- 所属系列:openharmony的第三方组件适配移植
- 功能:从任何youtube视频中提取视频和音频以及其他一些数据,例如视频标题,说明,作者,缩略图等。
- 项目移植状态:主功能完成
- 调用差异:无
- 开发版本:sdk6,DevEco Studio2.2 Beta1
- 基线版本:Release v0.3.4
#### 效果演示
#### 安装教程
1.在项目根目录下的build.gradle文件中,
```
allprojects {
repositories {
maven {
url 'https://s01.oss.sonatype.org/content/repositories/releases/'
}
}
}
```
2.在entry模块的build.gradle文件中,
```
dependencies {
implementation('com.gitee.chinasoft_ohos:youtubejextractor:1.0.0')
......
}
```
在sdk6,DevEco Studio2.2 Beta1下项目可直接运行
如无法运行,删除项目.gradle,.idea,build,gradle,build.gradle文件,
并依据自己的版本创建新项目,将新项目的对应文件复制到根目录下
#### 使用说明
**YoutubeVideoData**是一个对象,其中包含请求的视频的数据,这些数据分为两个主要对象:**VideoDetails**和**StreamingData**。
- **VideoDetails**包含各种视频数据,例如标题,描述,作者,等级,观看次数等。
- **StreamingData**包含两个带有自适应流(视频和音频)列表的字段,**muxedStreams**顾名思义是包含**多路复用的**流(包含音频和视频的流)**dashManifestUrl**和**hlsManifestUrl**字段,其中包含指向DASH和HLS清单的链接(如果您处理的是实时流),**expiresInSeconds**表示链接有效的时长。
```xml
YoutubeJExtractor youtubeJExtractor = new YoutubeJExtractor();
YoutubeVideoData videoData;
try {
videoData = youtubeJExtractor.extract(videoId);
}
catch (ExtractionException e) {
// Something really bad happened, nothing we can do except just show some error notification to the user
}
catch (YoutubeRequestException e) {
// Possibly there are some connection problems, ask user to check the internet connection and then retry
}
```
获取所有视频流:
```java
List videoStreamsList = videoData.getStreamingData().getAdaptiveVideoStreams()
```
每个StreamItem对象都包含描述流的字段,例如:
- 它是**扩展名**(例如mp4,ogg等),
- **编解码器**,**比特率**,**网址**等。
检查`AdaptiveVideoStream.class`和`AdaptiveAudioStream.class`获取详细信息
**即时串流**
**YoutubeJextractor**也支持实时流,但是您必须与常规视频区别对待,才能使用**DASH**或**HLS**清单播放实时内容。您的代码将如下所示:
```
YoutubeVideoData videoData = youtubeJExtractor.extract("stream_video_id");
if (videoData.getVideoDetails().isLiveContent()) {
String dashManifest = videoData.getStreamingData().getDashManifestUrl();
// or use HLS manifest via getHlsManifestUrl() method
}
else {
...
}
```
然后,您必须决定如何处理清单网址,这取决于您如何播放媒体内容。
**字幕**
字幕提取非常简单:
```java
youtubeJExtractor.extractSubtitles(videoId)
```
该行将返回一个地图,其中键是语言,值是带有时间码的字幕行列表。**请注意**,当前不支持自动生成的字幕。
#### 测试信息
CodeCheck代码测试无异常
CloudTest代码测试无异常
病毒安全检测通过
当前版本demo功能与原组件基本无差异
三方库使用时需确保网络可以正常访问Youtube官网
#### 版本迭代
- 1.0.0
#### 版权和许可信息
```
Distributed under the GPL v2 License. See [LICENSE.md](https://gitee.com/chinasoft2_ohos/youtube-jextractor/blob/master/LICENSE) for terms and conditions.
```