运用fmpeg写一个背英文单词的demo带翻译

发布于:2025-05-09 ⋅ 阅读:(13) ⋅ 点赞:(0)


-男生会因为不配而离开那个深爱的她吗??

一,

fmpeg-7.0.1 是做什么用的??

FFmpeg 7.0.1 是 FFmpeg 的一个版本,FFmpeg 是一个开源的多媒体框架,用于处理音视频数据。FFmpeg 提供了强大的工具和库,可以用来录制、转换、流式传输和播放音视频。它广泛用于音视频编码、解码、转码、合并、拆分、流媒体处理等任务。

具体来说,FFmpeg 7.0.1(或者其他版本)可能包括以下功能:

  1. 视频和音频解码:支持几乎所有的视频和音频格式,如 MP4、AVI、MKV、MP3、AAC 等。

  2. 视频转码:将视频从一种格式转换为另一种格式。

  3. 音视频流处理:例如直播流的发送和接收。

  4. 音频和视频编辑:例如裁剪、合并、旋转、调整分辨率等。

  5. 支持不同的硬件加速:例如使用 NVIDIA GPU 加速视频处理。

  6. 命令行工具:FFmpeg 提供了如 ffmpegffplay 等命令行工具,用于执行各种音视频处理任务。

FFmpeg 的强大功能使其在音视频处理、直播、视频编辑、视频播放器等领域得到了广泛的应用。

你提到的 ffmpeg-7.0.1 版本具体可能包括了对某些编解码器的更新或修复,或者一些性能优化。

二,

 手写一个背单词的java方法,录入需要背诵的单词集合,随机弹出, 带读音翻译,然后拼写出来 对了就下一个,最后有个错误几个对几个,有错误循环模式一直到正确为止。

下面是demo↓

import java.util.*;
import java.net.*;
import java.io.*;

import javax.sound.sampled.*;

public class WordMemorizationApp1 {
    private static List<String> wordList = new ArrayList<>();
    private static Map<String, Boolean> results = new LinkedHashMap<>();
    private static final Scanner scanner = new Scanner(System.in);

    public static void main(String[] args) {
        if (!isFFplayInstalled()) {
            System.out.println("检测到 ffplay 未安装或未配置到环境变量,请先安装:");
            System.out.println("\nWindows: 下载 https://ffmpeg.org/download.html 并添加到 Path\n");
            System.out.println("Linux: sudo apt-get install ffmpeg\n");
            System.out.println("macOS: brew install ffmpeg\n");
            System.out.println("安装完成后请重启程序。");
            return;
        }

        System.out.println("请输入你要背诵的单词,用逗号分隔:");
        String input = scanner.nextLine();
        wordList.addAll(Arrays.asList(input.split("[,]")));
        System.out.println("准备开始背单词了!");

        while (!wordList.isEmpty()) {
            Collections.shuffle(wordList);
            Iterator<String> iterator = wordList.iterator();

            while (iterator.hasNext()) {
                String word = iterator.next();
                String hint = generateHint(word);
                String translation = getTranslation(word);
                System.out.println("提示(部分字母已隐藏):" + hint);
                System.out.println("中文释义: " + translation);

                new Thread(() -> playAudio(word)).start();

                System.out.println("请输入完整单词:");
                String answer = scanner.nextLine();
                System.out.println("你输入的是: " + answer);

                boolean isCorrect = word.equalsIgnoreCase(answer);
                System.out.println("判断结果: " + isCorrect);

                results.put(word, isCorrect);

                if (isCorrect) {
                    System.out.println("✅ 正确!");
                    System.out.println("——————下一个——————");
                    iterator.remove();
                } else {
                    System.out.println("❌ 错误!正确答案是:" + word + " (" + translation + ")");
                    System.out.println("——————下一个——————");
                }
            }

            if (!wordList.isEmpty()) {
                System.out.println("🔄 还有错误的单词,准备重新复习这些:" + wordList);
            }
        }

        showResults();
    }

    private static void playAudio(String word) {
        // System.out.println("🔊 正在获取发音:" + word);
        try {
            String url = "https://dict.youdao.com/dictvoice?type=2&audio=" + URLEncoder.encode(word, "UTF-8");
            URLConnection connection = new URL(url).openConnection();
            connection.setRequestProperty("User-Agent", "Mozilla/5.0");
            InputStream audioStream = connection.getInputStream();

            // 使用 ffplay 播放 MP3
            List<String> command = new ArrayList<>();
            command.add("ffplay");
            command.add("-nodisp");
            command.add("-autoexit");
            command.add("-");

            ProcessBuilder processBuilder = new ProcessBuilder(command);
            Process process;

            try {
                process = processBuilder.start();
            } catch (IOException e) {
                System.out.println("⚠️ ffplay 路径未找到,尝试使用默认路径 C:/ffmpeg/bin/ffplay.exe");
                command.set(0, "C:/ffmpeg/bin/ffplay.exe");
                processBuilder = new ProcessBuilder(command);
                process = processBuilder.start();
            }

            try (OutputStream os = process.getOutputStream()) {
                byte[] buffer = new byte[1024];
                int bytesRead;
                while ((bytesRead = audioStream.read(buffer)) != -1) {
                    os.write(buffer, 0, bytesRead);
                }
            }

            // System.out.println("🔊 发音播放完成");

        } catch (Exception e) {
            System.out.println("❌ 获取发音失败,请检查网络连接或 ffplay 是否安装。错误详情:" + e.getMessage());
        }
    }
    private static String getTranslation(String word) {
        try {
            String url = "https://dict.youdao.com/jsonapi?q=" + URLEncoder.encode(word, "UTF-8");
            URLConnection connection = new URL(url).openConnection();
            connection.setRequestProperty("User-Agent", "Mozilla/5.0");
            InputStream is = connection.getInputStream();
            BufferedReader br = new BufferedReader(new InputStreamReader(is));
            String line;
            StringBuilder response = new StringBuilder();
            while ((line = br.readLine()) != null) {
                response.append(line);
            }
            br.close();

            String translation = response.toString();
            int start = translation.indexOf("\"value\":\"");
            if (start != -1) {
                int end = translation.indexOf("\"", start + 9);
                return translation.substring(start + 9, end);
            }
            return "未找到翻译";
        } catch (Exception e) {
            return "❌ 获取翻译失败";
        }
    }

    private static boolean isFFplayInstalled() {
        try {
            Process process = new ProcessBuilder("ffplay", "-version").start();
            process.waitFor();
            return process.exitValue() == 0;
        } catch (Exception e) {
            return false;
        }
    }

    private static String generateHint(String word) {
        Random random = new Random();
        char[] hintArray = word.toCharArray();
        for (int i = 0; i < hintArray.length / 2; i++) {
            int index = random.nextInt(hintArray.length);
            hintArray[index] = '_';
        }
        return new String(hintArray);
    }

    private static void showResults() {
        System.out.println("\n📊 复习结果:");
        int correct = 0;
        for (Map.Entry<String, Boolean> entry : results.entrySet()) {
            System.out.println(entry.getKey() + ": " + (entry.getValue() ? "✔️ 正确" : "❌ 错误"));
            if (entry.getValue()) correct++;
        }
        System.out.println("✨ 总计正确:" + correct + " 个,错误:" + (results.size() - correct) + " 个");
    }
}

三,代码如果需要朗读读音需要加入 ffplay

安装方式:

FFmpeg 安装指南


🔹 Windows 安装步骤

  1. 下载:

    • 前往 FFmpeg 官方下载页面,选择 Windows 版本。

    • 或者直接从 gyaanipedia FFmpeg Builds 下载 ffmpeg-release-full.7z

  2. 解压:

    • 解压文件到一个路径,比如:C:\ffmpeg\.

  3. 配置环境变量:

    • 打开 控制面板 → 系统 → 高级系统设置 → 环境变量

    • 系统变量 中找到 Path,双击打开。

    • 新增一行,填写你刚才解压的路径:C:\ffmpeg\bin

    • 确认保存。

  4. 测试:
    打开命令行 (Win + R 输入 cmd,然后输入:

     

    bash

    复制编辑

    ffplay -version

    如果能看到版本信息,代表安装成功。


🔹 Linux 安装步骤


bash

复制编辑

sudo apt-get update sudo apt-get install ffmpeg

测试:


bash

复制编辑

ffplay -version


🔹 macOS 安装步骤

如果你有 Homebrew


bash

复制编辑

brew install ffmpeg

测试:


bash

复制编辑

ffplay -version


-已经2年了我还是忘不了你马晓静,但是我不敢开口问好。


网站公告

今日签到

点亮在社区的每一天
去签到