五分钟JAVA代码教会你:FFmpeg实现视频试看(window版本)「建议收藏」

大家好,又见面了,我是你们的朋友全栈君。

五分钟JAVA代码教会你:FFmpeg实现视频试看1. 业务场景2. 实现思路3.FFmpeg开源框架介绍4. windows环境实现4.1 windows安装FFmpeg4.1.1 下载并解压4.1.2 配置环境变量4.1.3 测试配置成功4.2 Java调用ffmpeg实现视频截取4.2.1 命令行视频截取4.2.2 截取成功4.3 Java调用FFmpeg实现4.3.1 代码Demo4.3.2 处理cmd权限4.3.3 效果展示4.3 整合到项目中效果5. 技术点分析1. 业务场景

随着知识付费时代的到来,现在在线学习平台如雨后春笋般到来,各种大大小小的公司都在开发在线学习平台,因此会产生如下需求:课程视频试看功能。

Linux版本请点击这里: 五分钟代码教会你:JAVA实现视频试看功能(Centos7版本) PS:(本博客使用到的代码,ffmpeg安装包,cmd命令行工具都会打包放在↓↓↓↓↓下面附件中,供大家下载参考。)

点击下载FFmpegDemo

五分钟JAVA代码教会你:FFmpeg实现视频试看(window版本)「建议收藏」

2. 实现思路

当平台用户上传自己的课程后,服务器对该课程视频进行截取一小段进行存储(例如截取开头30秒视频内容作为试看内容)。因此,用户上传视频后,经过服务器的处理产生了2个视频(1.原视频 2.试看视频)。普通用户访问该视频则播放试看视频,付费用户访问该视频则播放原视频。

立即学习“Java免费学习笔记(深入)”;

3.FFmpeg开源框架介绍

此处使用Java调用FFmpeg处理视频音频,通过在系统中手动安装FFmpeg,然后执行命令进行调用的方式来进行实现。

FFmpeg官网:http://ffmpeg.org/ (FFmpeg自述:转换视频音频变得如此简单!)

4. windows环境实现4.1 windows安装FFmpeg4.1.1 下载并解压

下载FFmpeg安装包 https://ffmpeg.zeranoe.com/builds/

五分钟JAVA代码教会你:FFmpeg实现视频试看(window版本)「建议收藏」

下载成功后解压,如下图:

五分钟JAVA代码教会你:FFmpeg实现视频试看(window版本)「建议收藏」

把解压后的文件夹改名为ffmpeg,如下图:

五分钟JAVA代码教会你:FFmpeg实现视频试看(window版本)「建议收藏」

4.1.2 配置环境变量

右键”计算机”——“属性”,如下图:

五分钟JAVA代码教会你:FFmpeg实现视频试看(window版本)「建议收藏」

点击“环境变量”按钮后,弹出“环境变量”窗口,找到并选中“Path”变量,点击编辑,如下图:

五分钟JAVA代码教会你:FFmpeg实现视频试看(window版本)「建议收藏」

在PATH变量追加内容”;F:fmpegDemofmpegin”,点击确定即可。

卡拉OK视频制作 卡拉OK视频制作

卡拉OK视频制作,在几分钟内制作出你的卡拉OK视频

卡拉OK视频制作 178 查看详情 卡拉OK视频制作 4.1.3 测试配置成功

打开cmd,输入”ffmpeg”命令,如果有输出,则说明配置成功:

五分钟JAVA代码教会你:FFmpeg实现视频试看(window版本)「建议收藏」

4.2 Java调用ffmpeg实现视频截取4.2.1 命令行视频截取

windows下目标目录存放视频文件:

五分钟JAVA代码教会你:FFmpeg实现视频试看(window版本)「建议收藏」

针对上图mp4视频,截取一个30秒的试看文件并命名为 test-sk.mp4:

代码语言:javascript代码运行次数:0运行复制

ffmpeg -ss 0:0:0 -t 0:0:30 -i F:fmpegDemoest.mp4 -vcodec copy -acodec copy  F:fmpegDemoest-sk.mp4

如下图,执行即可:

五分钟JAVA代码教会你:FFmpeg实现视频试看(window版本)「建议收藏」

4.2.2 截取成功

五分钟JAVA代码教会你:FFmpeg实现视频试看(window版本)「建议收藏」

4.3 Java调用FFmpeg实现4.3.1 代码Demo

上面我已经测试了,在cmd中直接执行ffmpeg命令,可以对视频进行截取操作。因此,只需要通过java代码调用命令行的方式,在cmd中进行执行。代码如下:

代码语言:javascript代码运行次数:0运行复制

/** * @Author : zhangS * @Date :2020-08-19 */public class ExecWindowCMD {        public static void main(String[] args) {            File viedoFile = new File("F://ffmpegDemo//test.mp4");        File outFile = new File("F://ffmpegDemo//test3.mp4");        //根据目标视频viedoFile,生成截取30秒后的试看视频outFile        ExecWindowCMD.cutVideo1(viedoFile,outFile,30);    }    /* * * @param videoFile 原视频 * @param outputFile 截取后视频 * @param timeLength 截取时间长度,单位秒 */    public static void cutVideo1(File videoFile, File outputFile,  int timeLength) {            String cmdStr = "F:ffmpegDemoffmpegbinffmpeg.exe -ss 0:0:0 -t" + " 0:0:" + timeLength + " -i " + videoFile + " -vcodec copy -acodec copy " + outputFile;        Runtime run = Runtime.getRuntime();        try {                Process process = run.exec("c:/nircmd.exe elevate " + cmdStr);            InputStream in = process.getInputStream();            in.close();            process.waitFor();        } catch (Exception e) {                e.printStackTrace();        }        System.out.println("----截取视频成功----");    }}

4.3.2 处理cmd权限

通过java直接执行cmd的命令行口令,可能会出现权限不足而导致执行失败。因此,下载一个window命令行工具nircmd即可。 window命令行工具官网:http://www.nirsoft.net/utils/nircmd.html

下载后,把nircmd.exe放到c盘下,以上面代码为例,如下图:

五分钟JAVA代码教会你:FFmpeg实现视频试看(window版本)「建议收藏」

4.3.3 效果展示

五分钟JAVA代码教会你:FFmpeg实现视频试看(window版本)「建议收藏」
五分钟JAVA代码教会你:FFmpeg实现视频试看(window版本)「建议收藏」

4.3 整合到项目中效果

在后台上传视频,通过FFmpeg截取成2份,然后在页面判断用户是看试看部分还是看完整视频进行展示。

下图用户看试看内容:

五分钟JAVA代码教会你:FFmpeg实现视频试看(window版本)「建议收藏」

下图用户看完整视频内容:

五分钟JAVA代码教会你:FFmpeg实现视频试看(window版本)「建议收藏」

5. 技术点分析

本博客主要针对视频试看功能进行dem编写,我也会提供Centos7下的视频截取操作,方便其他开发者遇到视频试看的开发场景时,可以用来参考的一种解决方案。 FFmpeg框架还有许多其他的流媒体处理功能,此处重点介绍对视频的截取方式的实现。本博客采用在系统中手动安装FFmpeg,然后Java直接执行命令行的方式进行实现。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/125880.html原文链接:https://javaforall.cn

以上就是五分钟JAVA代码教会你:FFmpeg实现视频试看(window版本)「建议收藏」的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/432851.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月7日 14:55:32
下一篇 2025年11月7日 14:56:40

相关推荐

  • Python中如何操作字符串?

    python中字符串操作的方法包括拼接、切片、格式化、搜索和替换。1)拼接可使用+运算符或join方法,后者更高效。2)切片语法为string[start:end:step],可提取子串和倒序。3)格式化可使用%运算符、str.format()或f-strings,后者在python 3.6及以后版…

    好文分享 2025年12月14日
    000
  • 怎样用Python压缩文件?

    python压缩文件主要使用zipfile和tarfile模块。1)使用zipfile模块创建zip文件,代码示例展示了如何压缩文件。2)使用tarfile模块创建tar.gz文件,代码示例展示了压缩过程。注意路径处理、压缩级别和错误处理。 用Python压缩文件其实是个很酷的技能,尤其当你需要处理…

    2025年12月14日
    000
  • Python中如何调试代码?

    在python中调试代码可以使用print语句、pdb和ide。1. 使用print语句查看变量值和执行流程。2. 使用pdb设置断点和逐行执行代码。3. 使用ide如pycharm进行图形化调试,设置断点和查看变量。结合这些方法可以提高调试效率。 在Python中调试代码是每个开发者的必备技能。无…

    2025年12月14日
    000
  • 如何在Python中实现线程池?

    在python中实现线程池使用concurrent.futures模块中的threadpoolexecutor类。1) 使用该类创建线程池并提交任务。2) 选择合适的线程池大小,通过实验和监控动态调整。3) 处理任务提交和结果,使用as_completed或wait函数。4) 处理任务异常和超时,使…

    2025年12月14日
    000
  • Python中如何定义异步上下文管理器类?

    在python中定义异步上下文管理器类需要实现__aenter__和__aexit__两个方法。1.__aenter__方法在进入上下文时被调用,用于异步操作的初始化。2.__aexit__方法在退出上下文时被调用,用于资源释放和异常处理。使用异步上下文管理器可以确保资源在异步环境下被正确管理和释放…

    2025年12月14日
    000
  • 如何在Python中编写for循环?

    在python中编写for循环使用for关键字和可迭代对象,如列表、字符串或范围。1)基本用法:for item in [1, 2, 3, 4, 5]: print(item)。2)高级用法:结合enumerate和zip函数。3)注意陷阱:避免修改正在遍历的列表,使用列表副本。4)性能优化:使用列…

    2025年12月14日
    000
  • Python中如何重命名文件?

    在python中重命名文件主要通过os模块的rename函数实现。1)检查文件是否存在,避免filenotfounderror。2)使用os.path.join确保跨平台路径兼容性。3)批量重命名时,使用os.listdir遍历目录,并通过try-except处理可能的异常。4)优化性能时,可考虑使…

    2025年12月14日
    000
  • Python中如何定义数据类(@dataclass)?

    在python中,使用@dataclass装饰器定义数据类。1) 导入dataclass模块并使用@dataclass装饰类。2) 定义字段及其类型,支持默认值。3) 数据类自动生成__init__、__repr__、__eq__等方法,提高代码简洁性和可读性。 在Python中,如何定义数据类(@…

    2025年12月14日
    000
  • Python中如何操作PDF文件?

    在Python中操作PDF文件是一项非常实用的技能,无论你是需要提取PDF中的文本、合并多个PDF文件,还是添加水印和注释,都有相应的库和方法可以帮助你实现这些功能。今天我们就来深入探讨一下如何在Python中高效地操作PDF文件。 Python中操作PDF文件主要依赖于几个强大的库,比如PyPDF…

    2025年12月14日
    000
  • python怎么进入编程界面 编程界面进入步骤

    进入python编程界面的步骤包括:1. 在计算机上安装python,记得勾选“add python to path”选项;2. 打开命令行或终端,输入“python”或“python3”进入交互式解释器界面。这是一个直观且适合初学者的环境,但对于大型项目可能不够方便。 进入Python编程界面的步…

    2025年12月14日
    000
  • 怎样在Python中创建列表?

    在python中创建列表的方法包括:1) 使用方括号包围元素,如my_list = [1, 2, 3, 4, 5];2) 创建空列表,如empty_list = [];3) 使用列表推导式填充默认值,如filled_list = [0 for _ in range(10)];4) 使用list()函…

    2025年12月14日
    000
  • Python中如何使用聚合函数?

    在python中使用聚合函数可以通过内置函数、numpy和pandas实现:1)使用内置函数如sum()、max()、min()处理简单数据;2)numpy提供高效的向量化操作,如np.sum()、np.mean()等;3)pandas适合复杂数据处理,使用groupby()和mean()等函数。选…

    2025年12月14日
    000
  • Python中怎样创建setup.py?

    在python中创建setup.py文件的步骤如下:1.安装setuptools库:pip install setuptools。2.创建setup.py文件,定义项目元数据和依赖,如名称、版本、作者信息、描述、依赖包等。3.使用find_packages()自动发现项目包,确保项目结构标准。4.可…

    2025年12月14日
    000
  • Python中如何使用map和filter函数?

    在python中,map和filter函数的使用方法如下:1. map函数用于对可迭代对象的每个元素应用函数,例如将数字列表平方。2. filter函数用于根据条件筛选元素,如筛选偶数。3. 结合使用时,可以先筛选再转换数据,如提取并大写长度大于3的字符串。注意在处理大型数据时,列表推导式可能更高效…

    2025年12月14日
    000
  • Python中如何使用matplotlib绘图?

    matplotlib是python中强大的数据可视化工具。1.安装简单,使用pip install matplotlib。2.基本使用包括导入库、创建数据、绘制图形和添加标题与标签。3.高级定制可通过改变线条颜色、样式,添加图例和注解实现。4.常见问题如图形比例失调可通过查阅文档和社区资源解决。5.…

    2025年12月14日
    000
  • Python中怎样使用@property装饰器?

    @property装饰器在python中用于实现属性的getter、setter和deleter方法,使方法看起来像属性,提高代码可读性和控制访问。1)它允许在不改变接口的情况下添加控制逻辑,如数据验证。2)使用时需考虑性能影响、封装和接口稳定性、以及继承中的多态问题。合理使用@property能显…

    2025年12月14日
    000
  • Python中怎样实现with语句支持?

    在python中,实现with语句支持需要通过上下文管理器实现__enter__和__exit__方法。1) 创建一个类,如filehandler,包含__init__方法初始化文件名和模式。2) 在__enter__方法中打开文件并返回文件对象。3) 在__exit__方法中关闭文件,并处理可能的…

    2025年12月14日
    000
  • Python中如何识别语音?

    在python中实现语音识别可以使用speechrecognition库或云服务。1. 使用speechrecognition库,通过麦克风捕获音频并利用google speech recognition识别。2. 调整环境噪音以提高准确率。3. 支持多语言识别。4. 云服务如google clou…

    2025年12月14日
    000
  • Python中怎样实现动态属性?

    在python中,可以通过重写__getattr__、__setattr__和__delattr__方法实现动态属性。1. 重写__getattr__方法来获取属性。2. 重写__setattr__方法来设置属性。3. 重写__delattr__方法来删除属性。这种方法提供了完全控制属性的灵活性,但…

    2025年12月14日
    000
  • 如何确保Python代码的安全性?

    确保python代码的安全性需要从多个方面入手:1) 在代码层面,进行严格的输入验证,如使用正则表达式清理用户输入;2) 通过虚拟环境管理依赖,避免全局安装带来的安全风险;3) 在数据处理方面,使用hashlib等库安全处理密码,并结合盐值增强安全性;4) 定期更新python环境和依赖,修补已知漏…

    2025年12月14日
    000

发表回复

登录后才能评论
关注微信