# 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. ```