源代码备份

This commit is contained in:
TC999
2024-08-20 16:54:35 +08:00
parent c4db18da39
commit e2a5f92e23
791 changed files with 90314 additions and 2 deletions

View File

@ -0,0 +1,275 @@
/*
* Copyright (C) 2016 AriaLyy(https://github.com/AriaLyy/Aria)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.arialyy.aria.m3u8;
import com.arialyy.aria.core.inf.ITaskOption;
import com.arialyy.aria.core.processor.IBandWidthUrlConverter;
import com.arialyy.aria.core.processor.IKeyUrlConverter;
import com.arialyy.aria.core.processor.ILiveTsUrlConverter;
import com.arialyy.aria.core.processor.ITsMergeHandler;
import com.arialyy.aria.core.processor.IVodTsUrlConverter;
import java.lang.ref.SoftReference;
import java.util.List;
/**
* m3u8任务配信息
*/
public final class M3U8TaskOption implements ITaskOption {
/**
* 所有ts文件的下载地址
*/
private List<String> urls;
/**
* #EXTINF 标签信息处理器
*/
private SoftReference<IVodTsUrlConverter> vodUrlConverter;
/**
* 缓存目录
*/
private String cacheDir;
/**
* 是否合并ts文件 {@code true} 合并ts文件为一个
*/
private boolean mergeFile = true;
/**
* 合并处理器
*/
private SoftReference<ITsMergeHandler> mergeHandler;
/**
* 已完成的ts分片数量
*/
private int completeNum = 0;
/**
* 视频时长单位s
*/
private long duration;
/**
* 码率
*/
private int bandWidth = 0;
/**
* 码率url转换器
*/
private SoftReference<IBandWidthUrlConverter> bandWidthUrlConverter;
/**
* 码率地址
*/
private String bandWidthUrl;
/**
* 直播下载ts url转换器
*/
private SoftReference<ILiveTsUrlConverter> liveTsUrlConverter;
/**
* 直播的m3u8文件更新间隔
*/
private long liveUpdateInterval = 10 * 1000;
/**
* 同时下载的分片数量
*/
private int maxTsQueueNum = 4;
/**
* 指定的索引位置
*/
private int jumpIndex;
/**
* 生成索引占位字段
*/
private boolean generateIndexFile = false;
/**
* 加密密钥的解密处理器
*/
private SoftReference<IKeyUrlConverter> keyUrlConverter;
/**
* 忽略下载失败的ts切片。
* true即使有失败的切片下载完成后也要合并所有切片并进入complete回调
*/
private boolean ignoreFailureTs = false;
/**
* 密钥文件保存路径
*/
private String keyPath;
/**
* 是否使用默认的码率转换器和Ts转换器
*/
private boolean useDefConvert = false;
public boolean isUseDefConvert() {
return useDefConvert;
}
public void setUseDefConvert(boolean useDefConvert) {
this.useDefConvert = useDefConvert;
}
public String getKeyPath() {
return keyPath;
}
public boolean isIgnoreFailureTs() {
return ignoreFailureTs;
}
public void setIgnoreFailureTs(boolean ignoreFailureTs) {
this.ignoreFailureTs = ignoreFailureTs;
}
public IKeyUrlConverter getKeyUrlConverter() {
return keyUrlConverter == null ? null : keyUrlConverter.get();
}
public void setKeyUrlConverter(IKeyUrlConverter keyUrlConverter) {
this.keyUrlConverter = new SoftReference<>(keyUrlConverter);
}
public boolean isGenerateIndexFile() {
return generateIndexFile;
}
public void setGenerateIndexFile(boolean generateIndexFile) {
this.generateIndexFile = generateIndexFile;
}
public int getJumpIndex() {
return jumpIndex;
}
public void setJumpIndex(int jumpIndex) {
this.jumpIndex = jumpIndex;
}
public int getMaxTsQueueNum() {
return maxTsQueueNum == 0 ? 4 : maxTsQueueNum;
}
public void setMaxTsQueueNum(int maxTsQueueNum) {
this.maxTsQueueNum = maxTsQueueNum;
}
public long getLiveUpdateInterval() {
return liveUpdateInterval == 0 ? 10 * 1000 : liveUpdateInterval;
}
public void setLiveUpdateInterval(long liveUpdateInterval) {
this.liveUpdateInterval = liveUpdateInterval;
}
public ILiveTsUrlConverter getLiveTsUrlConverter() {
return liveTsUrlConverter == null ? null : liveTsUrlConverter.get();
}
public void setLiveTsUrlConverter(ILiveTsUrlConverter liveTsUrlConverter) {
this.liveTsUrlConverter = new SoftReference<>(liveTsUrlConverter);
}
public String getBandWidthUrl() {
return bandWidthUrl;
}
public void setBandWidthUrl(String bandWidthUrl) {
this.bandWidthUrl = bandWidthUrl;
}
public IBandWidthUrlConverter getBandWidthUrlConverter() {
return bandWidthUrlConverter == null ? null : bandWidthUrlConverter.get();
}
public void setBandWidthUrlConverter(IBandWidthUrlConverter bandWidthUrlConverter) {
this.bandWidthUrlConverter = new SoftReference<>(bandWidthUrlConverter);
}
public int getBandWidth() {
return bandWidth;
}
public void setBandWidth(int bandWidth) {
this.bandWidth = bandWidth;
}
public long getDuration() {
return duration;
}
public void setDuration(long duration) {
this.duration = duration;
}
public int getCompleteNum() {
return completeNum;
}
public void setCompleteNum(int completeNum) {
this.completeNum = completeNum;
}
public boolean isMergeFile() {
return mergeFile;
}
public void setMergeFile(boolean mergeFile) {
this.mergeFile = mergeFile;
}
public ITsMergeHandler getMergeHandler() {
return mergeHandler == null ? null : mergeHandler.get();
}
public void setMergeHandler(ITsMergeHandler mergeHandler) {
this.mergeHandler = new SoftReference<>(mergeHandler);
}
public IVodTsUrlConverter getVodUrlConverter() {
return vodUrlConverter == null ? null : vodUrlConverter.get();
}
public void setVodUrlConverter(IVodTsUrlConverter vodUrlConverter) {
this.vodUrlConverter = new SoftReference<>(vodUrlConverter);
}
public List<String> getUrls() {
return urls;
}
public void setUrls(List<String> urls) {
this.urls = urls;
}
public String getCacheDir() {
return cacheDir;
}
public void setCacheDir(String cacheDir) {
this.cacheDir = cacheDir;
}
}