SpringBoot 实现大文件视频转码(转码基于FFMPEG实现)(1)

本文展示了如何在SpringBoot应用中使用FFmpeg进行大文件视频转码。详细介绍了转码过程,包括文件操作、FFmpeg命令构建,并提到了DockerFile和Kubernetes编排文件的应用。
摘要由CSDN通过智能技术生成

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!

  • @param filePath

  • @return com.openailab.oascloud.common.model.ResponseResult

  • @author zxzhang

  • @date 2019/12/10

*/

public int transcode(String filePath) {

//1、获取文件名和后缀

String ext = getExt(filePath);

String fileDir = getFileDir(filePath);

String fileName = getFileName(filePath);

//2、删除同名文件

File originFile = new File(fileDir + fileName + BootstrapConst.SPOT + ext);

if (originFile.exists()){

originFile.delete();

}

//3、视频转码

LinkedList ffmpegCmds = new LinkedList<>();

ffmpegCmds.add(“ffmpeg”);

ffmpegCmds.add(“-i”);

ffmpegCmds.add(bootstrapConfig.getFileRoot() + filePath);

ffmpegCmds.add(“-c:v”);

ffmpegCmds.add(“libx264”);

ffmpegCmds.add(“-strict”);

ffmpegCmds.add(“-2”);

ffmpegCmds.add(bootstrapConfig.getFileRoot() + fileDir + BootstrapConst.PATH_SEPARATOR + fileName + “.mp4”);

ProcessBuilder builder = new ProcessBuilder();

builder.command(ffmpegCmds);

Process ffmpeg = null;

try {

ffmpeg = builder.start();

} catch (IOException e) {

e.printStackTrace();

}

String cmdStr = Arrays.toString(ffmpegCmds.toArray()).replace(“,”, “”);

LOG.info(“—开始执行FFmpeg指令:— 执行线程名:” + builder.toString());

LOG.info(“—已执行的FFmepg命令:—” + cmdStr);

// 取出输出流和错误流的信息

// 注意:必须要取出ffmpeg在执行命令过程中产生的输出信息,如果不取的话当输出流信息填满jvm存储输出留信息的缓冲区时,线程就回阻塞住

PrintStream errorStream = new PrintStream(ffmpeg.getErrorStream());

PrintStream inputStream = new PrintStream(ffmpeg.getInputStream());

errorStream.start();

inputStream.start();

// 等待ffmpeg命令执行完

int exit = 0;

try {

exit = ffmpeg.waitFor();

} catch (InterruptedException e) {

e.printStackTrace();

}

LOG.info(“—执行结果:—” + (exit == 0 ? “【成功】” : “【失败】”));

if (exit == 0) {

originFile = new File(filePath);

if(originFile.exists()){

originFile.delete();

}

}

return exit;

}

/

  • 18
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 文件转码为txt utf-8 是指将一个文件的编码格式转换为 UTF-8 编码,以便可以正确地在各种操作系统和软件中进行读取和处理。下面是实现这个转码过程的步骤: 1. 确定原始文件的编码格式:在转码之前,需要确定原始文件的编码格式。可以通过打开文件并查看文件属性或使用专门的工具来确定编码格式。 2. 创建一个新的空白文本文件:打开一个文本编辑器或记事本软件,并创建一个新的空白文本文件。 3. 打开原始文件:使用文本编辑器或记事本软件打开原始文件。 4. 将原始文件的内容复制到新文件中:选中原始文件中的所有内容,复制并粘贴到新的空白文件中。 5. 将新文件的编码格式设置为 UTF-8:在文本编辑器或记事本软件中,找到文件编码选项,并将它设置为 UTF-8。 6. 保存新文件:使用新的文件名保存新文件,确保文件后缀为 .txt。 7. 关闭原始文件和新文件:关闭原始文件和新文件,以确保更改保存。 8. 文件转码完成:经过上述步骤,原始文件已经成功转码为 UTF-8 编码的新文本文件。 通过这些步骤,我们可以将原始文件转码为 UTF-8 编码的 txt 文件,这样可以确保文件在不同操作系统和软件中的可读性和兼容性。 ### 回答2: 文件转码为UTF-8格式,可以使用各种文本编辑器或编程语言实现。下面以Python代码示例进行说明。 假设我们有一个名为input.txt的文本文件,编码为其他格式(例如GBK),我们希望将其转码为UTF-8格式,然后保存为output.txt。 首先,我们需要读取原始文件的内容。可以使用Python的open函数打开文件,并指定相应的编码格式,例如: ```python with open('input.txt', 'r', encoding='GBK') as f: content = f.read() ``` 然后,我们可以将读取到的内容以UTF-8编码进行编码,使用encode方法即可实现: ```python content_utf8 = content.encode('utf-8') ``` 接下来,我们可以将编码后的内容写入新的文件output.txt中,同样使用open函数,并指定编码为UTF-8: ```python with open('output.txt', 'w', encoding='utf-8') as f: f.write(content_utf8.decode('utf-8')) ``` 以上代码将原始文件内容以UTF-8编码格式写入output.txt中,完成了文件转码过程。 需要注意的是,在转码过程中,我们首先读取原始文件的内容时,要确保使用的编码格式与实际格式一致;在写入编码后的内容时,也要确保所指定的编码格式与输出文件的要求一致。 以上就是将文件转码为UTF-8格式的过程,你可以根据实际需求进行相应的更改和调整。 ### 回答3: 文件转码为UTF-8是一种常见的操作,用于将文件的编码格式从其他编码转换为UTF-8编码。UTF-8是一种通用的编码格式,能够支持几乎所有的字符和符号。 文件转码的过程可以通过多种方式完成,其中一种简单的方法是使用文本编辑软件。首先,打开需要转码文件,然后选择“另存为”或者“导出”选项。在保存文件的对话框中,一般会出现编码格式的选项,选择UTF-8作为新的编码格式,然后保存文件即可。 除了使用文本编辑软件,还可以使用命令行工具进行文件转码。在命令行中,使用类似以下的命令可以实现文件转码: ``` iconv -f old_encoding -t utf-8 input_file -o output_file ``` 其中,old_encoding表示原始文件的编码格式,input_file表示需要转码文件,output_file表示转码后保存的文件文件转码为UTF-8的过程可以处理多种文件类型,包括文本文件、代码文件、配置文件等。转码后,文件中的内容将会以UTF-8编码的形式进行存储,确保了文件的可读性和兼容性。 文件转码为UTF-8非常重要,因为UTF-8编码可以在不同的操作系统和平台上被广泛支持。同时,UTF-8编码也能够处理各种不同语言的字符和符号,确保了文件中内容的正确显示和处理。 综上所述,文件转码为UTF-8是一种常见的操作,可以使用文本编辑软件或者命令行工具实现转码后的文件使用UTF-8编码,能够支持各种字符和符号,提高了文件的可读性和兼容性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值