当前位置: 首页 > news >正文

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


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

一,

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 播放 MP3List<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年了我还是忘不了你马晓静,但是我不敢开口问好。

相关文章:

  • UE5.3 C++ 房屋管理系统(一)
  • 在线caj转换word
  • 机器人运动控制技术简介
  • Rust 官方文档:人话版翻译指南
  • 动态规划-62.不同路径-力扣(LeetCode)
  • YOLO目标检测算法
  • 大模型——Trae IDE 指南:轻松配置自定义 AI 规则 (Trae Rules)
  • OR算法+ML模型混合推理框架架构演进
  • 智慧农业运维平台养殖—传感器管理监控设计—仙盟创梦IDE
  • 英伟达Blackwell架构重构未来:AI算力革命背后的技术逻辑与产业变革
  • Typora+PicGo+Gitee图床配置教程 自动图片上传
  • k8s监控方案实践(二):集成Alertmanager告警与钉钉Webhook通知
  • 公开模型一切,优于DeepSeek-R1,英伟达开源Llama-Nemotron家族
  • RT-THREAD RTC组件中Alarm功能驱动完善
  • MindSpore框架学习项目-ResNet药物分类-构建模型
  • 卷积神经网络实战(4)代码详解
  • 把Excel数据文件导入到Oracle数据库
  • k8s之statefulset
  • 低成本自动化改造的18个技术锚点深度解析
  • go语言封装、继承与多态:
  • 三大猪企4月生猪销量同比均增长,销售均价同比小幅下降
  • 时隔14个月北京怀柔区重启供地,北京建工以3.59亿元摘得
  • 我驻苏丹使馆建议在苏中国公民尽快撤离
  • 马新民卸任外交部条约法律司司长
  • 广州下调个人住房公积金贷款利率
  • 从黄土高原到黄浦江畔,澄城樱桃品牌推介会明日在上海举办