国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

視頻硬字幕提取方法(可完全離線),開(kāi)發(fā)個(gè)小工具輔助一下

這篇具有很好參考價(jià)值的文章主要介紹了視頻硬字幕提取方法(可完全離線),開(kāi)發(fā)個(gè)小工具輔助一下。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

最近博主閑下來(lái)了,思考人生接下來(lái)的方向,無(wú)聊時(shí)幫別人做了點(diǎn)小東西,貢獻(xiàn)出來(lái):

jre-17.0.7_win-x64的生成方式:

以管理員方式運(yùn)行PowerShell執(zhí)行命令:

cd $env:JAVA_HOME

jlink --no-header-files --no-man-pages --compress=2 --strip-debug --add-modules java.base,java.xml,java.desktop,jdk.management.agent --output E:\jre-17.0.7_win-x64

內(nèi)部參數(shù):

java -Dfile.encoding=UTF-8 -jar single-subtitle-text-1.0.0.jar

使用教程:

硬字幕提取工具,java,log4j,gradle

注意該圖片的兩個(gè)文件夾,都在下面這個(gè)軟件的安裝目錄中。

VideoSubFinderWXW 拿來(lái)做字幕圖片截取捕獲,這是下載地址:

VideoSubFinder download | SourceForge.net

硬字幕提取工具,java,log4j,gradle

下載安裝完成后,步驟:打開(kāi)視頻框選字幕位置,清空所有圖片(之前識(shí)別的圖片),開(kāi)始識(shí)別。

捕獲完在安裝目錄圖片所示的第一個(gè)文件夾RGBImages中,PearOCR可以安裝成瀏覽器應(yīng)用可以離線識(shí)別,pearOCR官網(wǎng)如下:

PearOCR,在線圖片轉(zhuǎn)文字,免費(fèi)OCR,在線圖片文字提取,本地運(yùn)算,無(wú)上傳

硬字幕提取工具,java,log4j,gradle

硬字幕提取工具,java,log4j,gradle

上傳RGBImages所有圖片識(shí)別完后導(dǎo)出為txt。(如果后續(xù)出現(xiàn)問(wèn)題,文件路徑及文件名不建議帶有中文)

接下來(lái)是我開(kāi)發(fā)的小工具(代碼已開(kāi)源到github上),下載地址如下,

Release single-subtitle-text · LCJamI/single-subtitle-text (github.com)

下載single-subtitle-text_win-x64.zip解壓,看到single-subtitle-text_win-x64.exe

安全無(wú)毒,下面是代碼:

package pers.lcj.tool;

import lombok.extern.log4j.Log4j2;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * Created by Aaron on 2023/4/28 0:29
 */
@Log4j2
public class Main {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in, "GBK");

        System.out.println("請(qǐng)輸入導(dǎo)入文件路徑:");
        Path inputPath = getPath(scanner, "導(dǎo)入文件");
        System.out.println("請(qǐng)輸入導(dǎo)出目錄路徑:");
        Path outputPath = getPath(scanner, "導(dǎo)出目錄");

        Map<String, String> result = readFile(inputPath.toString());

        writeOutputFiles(outputPath, result);
    }

    public static Path getPath(Scanner sc, String pathType) {
        Path path;
        do {
            String inputPath = sc.nextLine().replaceAll("^\"+|\"+$", "");
            path = Paths.get(inputPath);
            if (pathType.equals("導(dǎo)入文件") && !Files.isRegularFile(path)) {
                System.out.println("輸入路徑不是一個(gè)有效文件路徑,請(qǐng)重新輸入:");
                path = null;
            } else if (pathType.equals("導(dǎo)出目錄") && !Files.isDirectory(path)) {
                System.out.println("輸入路徑不是一個(gè)有效文件路徑,請(qǐng)重新輸入:");
                path = null;
            }
        } while (path == null);
        return path;
    }

    private static final int BUFFER_SIZE = 8192;
    private static final Pattern REGEX_PATTERN = Pattern.compile("(?<=-\\s)([^.]+)(?=\\.jpeg)");

    private static Map<String, String> readFile(String inputFilePath) {
        Map<String, String> result = new HashMap<>();
        try (BufferedReader br = new BufferedReader(new FileReader(inputFilePath), BUFFER_SIZE)) {
            StringBuilder currentValueBuilder = new StringBuilder(1024); // 初始化StringBuilder大小,避免過(guò)多擴(kuò)容
            Matcher matcher;
            String key = null;
            String currentLine;
            while ((currentLine = br.readLine()) != null) {
                matcher = REGEX_PATTERN.matcher(currentLine);
                if (matcher.find()) {
                    if (key != null) {
                        String value = currentValueBuilder.toString().trim();
                        result.put(key, value.isEmpty() ? "null" : value); // 添加新的結(jié)果到Map中,并清空StringBuilder
                        currentValueBuilder.setLength(0);
                    }
                    key = matcher.group(1);
                } else if (key != null) { // 對(duì)currentValue進(jìn)行構(gòu)建
                    currentValueBuilder.append(currentLine.trim()).append(" "); // 添加空格,避免拼接相鄰字符串時(shí)出現(xiàn)語(yǔ)義混淆
                }
            }
            if (key != null) { // 處理最后一個(gè)結(jié)果
                result.put(key, currentValueBuilder.toString().trim().replace("  ------------ prower by PearOCR.com ------------", ""));
            }
        } catch (IOException e) {
            log.error("Error reading file:", e);
        }
        return result;
    }

    private static void writeOutputFiles(Path outputFolderPath, Map<String, String> result) {
        System.out.println("正在處理,請(qǐng)稍等......");
        result.entrySet().parallelStream().forEach(entry -> {
            String fileName = entry.getKey();
            Path txtFilePath = outputFolderPath.resolve(fileName + ".txt");
            try (BufferedWriter bw = Files.newBufferedWriter(txtFilePath, StandardCharsets.UTF_8)) {
                bw.write(entry.getValue());
            } catch (IOException e) {
                log.error("Error write file:", e);
            }
        });
        System.out.println("文件總計(jì)(個(gè)):" + result.size());
    }

}

Gradle 8.1.1引入的依賴(lài):

plugins {
    // Java插件,該插件提供了Java應(yīng)用和庫(kù)的基本功能
    id 'java'

    // lombok插件,該插件支持在Java項(xiàng)目中使用Lombok注解
    id 'io.freefair.lombok' version '8.0.1'
}

group = 'pers.lcj.tool'
version = '1.0.0'

repositories {
    mavenLocal {
        url 'file:///D:/m2/repository'
    }
    maven { url 'https://maven.aliyun.com/repository/public/' }
    mavenCentral()
}

dependencies {
    // Lombok
    compileOnly 'org.projectlombok:lombok:1.18.26'
    annotationProcessor 'org.projectlombok:lombok:1.18.26'

    // Log4j2
    implementation 'org.apache.logging.log4j:log4j-api:2.20.0'
    implementation 'org.apache.logging.log4j:log4j-core:2.20.0'
    implementation 'org.apache.logging.log4j:log4j-slf4j-impl:2.20.0'

    // JUnit 5
    testImplementation 'org.junit.jupiter:junit-jupiter:5.9.3'
}

jar {
    duplicatesStrategy = 'exclude'
    from {
        configurations.compileClasspath.collect { it.isDirectory() ? it : zipTree(it) }
    }
    manifest {
        attributes 'Main-Class': 'pers.lcj.tool.Main'
    }
}

test {
    useJUnitPlatform()
}

log4j2.properties log4j2 配置文件

# 設(shè)置日志級(jí)別為info
rootLogger.level = info

# 控制臺(tái)Appender的配置
appender.console.type = Console
appender.console.name = consoleLogger
appender.console.layout.type = PatternLayout
appender.console.layout.pattern = %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

# 根日志記錄器引用控制臺(tái)Appender
rootLogger.appenderRef.stdout.ref = consoleLogger

# 日志文件存放路徑
property.basePath = logs

# 組件Appender的名稱(chēng)、模式、路徑和滾動(dòng)策略
appender.rolling.type = RollingFile
appender.rolling.name = fileLogger
appender.rolling.fileName= ${basePath}/sst.log
appender.rolling.filePattern= ${basePath}/sst_%d{yyyyMMdd}.log.gz
appender.rolling.layout.type = PatternLayout
appender.rolling.layout.pattern = %d{yyyy-MM-dd HH:mm:ss.SSS} %level [%t] [%l] - %msg%n
appender.rolling.policies.type = Policies

# 組件Appender的滾動(dòng)策略,包括按大小滾動(dòng)和按時(shí)間滾動(dòng)兩種策略。
appender.rolling.policies.size.type = SizeBasedTriggeringPolicy
# 按大小滾動(dòng)策略大小限制
appender.rolling.policies.size.size = 310MB
appender.rolling.policies.time.type = TimeBasedTriggeringPolicy
# 按時(shí)間滾動(dòng)策略間隔時(shí)間(單位:天)
appender.rolling.policies.time.interval = 1
# 按時(shí)間滾動(dòng)策略是否調(diào)整時(shí)區(qū)
appender.rolling.policies.time.modulate = true

# 組件Appender的滾動(dòng)策略,包括按大小滾動(dòng)和按時(shí)間滾動(dòng)兩種策略。
appender.rolling.strategy.type = DefaultRolloverStrategy

# 組件Appender的刪除策略。
appender.rolling.strategy.delete.type = Delete
# 刪除文件所在目錄路徑。
appender.rolling.strategy.delete.basePath = ${basePath}
# 刪除最舊的文件之前可以在目錄中保留的最大文件數(shù)。默認(rèn)值為0,這意味著不會(huì)刪除任何文件。
appender.rolling.strategy.delete.maxDepth = 92
# 用于指定刪除文件的條件類(lèi)型,按最后修改時(shí)間刪除。
appender.rolling.strategy.delete.ifLastModified.type = IfLastModified
# 刪除所有早于92天的文件。
appender.rolling.strategy.delete.ifLastModified.age = 92d

# 配置根日志記錄器,引用組件Appender。
rootLogger.appenderRef.rolling.ref = fileLogger

打開(kāi)single-subtitle-text_win-x64.exe,根據(jù)提示輸入該txt文本文件路徑和輸入安裝目錄圖片所示的第二個(gè)文件夾TXTResults的路徑,生成相應(yīng)的TXTResults后

硬字幕提取工具,java,log4j,gradle

硬字幕提取工具,java,log4j,gradle

硬字幕提取工具,java,log4j,gradle

點(diǎn)擊軟件ocr菜單中的這個(gè)即可生成你想要的視頻字幕了,貢獻(xiàn)給所有做視頻的朋友,市面上做這個(gè)的基本都收費(fèi),特別視頻多且視頻時(shí)長(zhǎng) 長(zhǎng)的工作,可以帶來(lái)助力,大大縮短工作時(shí)長(zhǎng),但畢竟ocr識(shí)別不是完全準(zhǔn)確的,還是需要一些人工審核。雖然意義不是很大但是對(duì)同聲傳譯的視頻提取字幕,新聞傳播類(lèi)等的二次制作等有幫助,以及博主不知道的領(lǐng)域等有幫助。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-740693.html

到了這里,關(guān)于視頻硬字幕提取方法(可完全離線),開(kāi)發(fā)個(gè)小工具輔助一下的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Python - 利用 OCR 技術(shù)提取視頻臺(tái)詞、字幕

    Python - 利用 OCR 技術(shù)提取視頻臺(tái)詞、字幕

    目錄 一.引言 二.視頻處理 1.視頻樣式 2.視頻截取 ◆ 裁切降幀 ◆ 處理效果 3.視頻分段 三.OCR 處理 1.視頻幀處理 2.文本識(shí)別結(jié)果 3.后續(xù)工作與優(yōu)化 ◆ 識(shí)別去重 ◆ 多線程提效 ◆ 片頭片尾優(yōu)化 四.總結(jié) 視頻經(jīng)常會(huì)配套對(duì)應(yīng)的臺(tái)詞或者字幕,通過(guò)文本與字幕可以更好地理解視頻

    2024年02月03日
    瀏覽(83)
  • 人工智能——離線情況下自動(dòng)給視頻添加字幕,支持中文,英文,日文等等

    人工智能——離線情況下自動(dòng)給視頻添加字幕,支持中文,英文,日文等等

    最近打開(kāi)百度網(wǎng)盤(pán),看到播放視頻有一個(gè)AI字幕功能,心情非常激動(dòng),看視頻的同時(shí)可以看自動(dòng)生成的字幕,防止聽(tīng)不清視頻中人物的話語(yǔ) 然而不是SVIP,我試用過(guò)了之后就沒(méi)有這個(gè)功能選項(xiàng)了 我在想,如果隨便哪一個(gè)“免費(fèi)”播放器,都可以一邊播放視頻,一邊生成字幕,外

    2024年02月13日
    瀏覽(22)
  • 使用剪映提取視頻中的字幕并導(dǎo)出(txt或srt格式)

    使用剪映提取視頻中的字幕并導(dǎo)出(txt或srt格式)

    需要使用 剪映電腦版 ,打開(kāi)之后 第一步:選擇“音頻”—“音頻提取”—“導(dǎo)入” 在彈出的界面中選擇需要的導(dǎo)入的視頻,或者直接將視頻拖入到“導(dǎo)入”框中 第二步:將導(dǎo)入的視頻拖到下方的音頻軌道 第三步:識(shí)別字幕 依次選擇“文本”—“智能字幕”—“開(kāi)始識(shí)別”

    2024年02月06日
    瀏覽(23)
  • python 視頻硬字幕去除 內(nèi)嵌字幕去除工具 vsr

    python 視頻硬字幕去除 內(nèi)嵌字幕去除工具 vsr

    開(kāi)源地址:https://github.com/YaoFANGUK/video-subtitle-remover Video-subtitle-remover (VSR) 是一款基于AI技術(shù),將視頻中的硬字幕去除的軟件。 主要實(shí)現(xiàn)了以下功能: 無(wú)損分辨率 將視頻中的硬字幕去除,生成去除字幕后的文件 通過(guò)超強(qiáng)AI算法模型,對(duì)去除字幕文本的區(qū)域進(jìn)行填充(非相鄰像

    2024年02月05日
    瀏覽(25)
  • 怎么去除視頻字幕清理視頻字幕或水印的幾種方法

    怎么去除視頻字幕清理視頻字幕或水印的幾種方法

    大家好,我是七天變小白,歡迎來(lái)到我的視頻剪輯小課堂,今天給大家分享幾種去除視頻字幕的方法,我認(rèn)為第三種方法效果最好,先點(diǎn)個(gè)小關(guān)注,接下來(lái)講教程。 將視頻放大至字幕移出屏幕,只保留視頻中沒(méi)有字幕的區(qū)域,這樣字幕就去除了,這種也是大家最常用的方法,

    2024年02月16日
    瀏覽(20)
  • 怎么去除視頻字幕清理視頻字幕或水印的四種方法

    怎么去除視頻字幕清理視頻字幕或水印的四種方法

    大家好,我是七天變小白,歡迎來(lái)到我的視頻剪輯小課堂,今天給大家分享幾種去除視頻字幕的方法,軟字幕可以用很多博主推薦的方法來(lái)刪除,通常就是關(guān)閉播放器里的字幕選項(xiàng)或者移除SRT字幕文件即可. 但如果你的字幕已經(jīng)嵌入某個(gè)視頻中成為了硬字幕,我們通常使用另

    2024年02月15日
    瀏覽(17)
  • 完全離線的OCR圖片轉(zhuǎn)文字識(shí)別工具Umi-OCR

    完全離線的OCR圖片轉(zhuǎn)文字識(shí)別工具Umi-OCR

    OCR圖片轉(zhuǎn)文字識(shí)別軟件,完全離線。截屏/批量導(dǎo)入圖片,支持多國(guó)語(yǔ)言、合并段落、豎排文字??膳懦^(qū)域,提取干凈的文本?;?PaddleOCR 。 免費(fèi):本項(xiàng)目所有代碼開(kāi)源,完全免費(fèi)。 方便:解壓即用,離線運(yùn)行,無(wú)需網(wǎng)絡(luò)。 批量:可批量導(dǎo)入處理圖片,結(jié)果保存到本

    2024年02月03日
    瀏覽(23)
  • 借用AI工具為視頻添加中文字幕,消除語(yǔ)言障礙,母語(yǔ)環(huán)境最快速地學(xué)習(xí)

    借用AI工具為視頻添加中文字幕,消除語(yǔ)言障礙,母語(yǔ)環(huán)境最快速地學(xué)習(xí)

    由于chatgpt的啟動(dòng),感覺(jué)語(yǔ)言已經(jīng)完全不會(huì)成為學(xué)習(xí)的障礙,突發(fā)奇想,在我們查看youtube視頻的時(shí)候,有沒(méi)有方便的工具能夠?qū)⑵渥帜环g為中文。這樣能夠極大提高在youtube學(xué)習(xí)的效率,于是順手問(wèn)了一下ChatGPT,這里使用了一個(gè)工具: 1. chrome 瀏覽器插件里面有一個(gè)DeepL翻譯

    2024年02月07日
    瀏覽(23)
  • 完全離線環(huán)境下安裝配置Vscode Python開(kāi)發(fā)環(huán)境及離線包文件的下載與安裝實(shí)戰(zhàn)

    完全離線環(huán)境下安裝配置Vscode Python開(kāi)發(fā)環(huán)境及離線包文件的下載與安裝實(shí)戰(zhàn)

    一般在進(jìn)行項(xiàng)目開(kāi)發(fā)時(shí),都是在有網(wǎng)絡(luò)的環(huán)境下進(jìn)行的,此時(shí)的開(kāi)發(fā)工作,由于有網(wǎng)絡(luò)的支持,我們需要什么安裝包、模塊、或者工具,下載安裝比較方便,缺少依賴(lài)環(huán)境時(shí),有些系統(tǒng)和安裝包會(huì)自動(dòng)下載補(bǔ)齊。但在一些特情況境下,需要配置完全獨(dú)立于網(wǎng)絡(luò)的開(kāi)發(fā)環(huán)境,這

    2024年02月04日
    瀏覽(31)
  • 圖片坐標(biāo)提取軟件/圖片坐標(biāo)點(diǎn)和像素點(diǎn)顏色提取軟件/圖片坐標(biāo)獲取工具/Python圖片坐標(biāo)獲取源碼/圖片像素坐標(biāo)獲取軟件/查看圖片點(diǎn)XY坐標(biāo)(完全開(kāi)源)

    圖片坐標(biāo)提取軟件/圖片坐標(biāo)點(diǎn)和像素點(diǎn)顏色提取軟件/圖片坐標(biāo)獲取工具/Python圖片坐標(biāo)獲取源碼/圖片像素坐標(biāo)獲取軟件/查看圖片點(diǎn)XY坐標(biāo)(完全開(kāi)源)

    該軟件使用python寫(xiě)的,可以提取像素點(diǎn)的坐標(biāo)還有也能獲取像素點(diǎn)的16進(jìn)制數(shù)據(jù)RGB565和RGB888(RGB888僅最新的源碼才支持),可以單點(diǎn)坐標(biāo)也可以按鍵坐標(biāo),甚至可以使用簡(jiǎn)單的左右鍵配合使用,自動(dòng)復(fù)制到粘貼板,如果圖片太大或者太小,也支持圖片縮小放大,但是軟件會(huì)對(duì)像素

    2024年02月15日
    瀏覽(25)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包