小工具知识网

当前位置: 首页 > 行业知识 > Java调用ffmpeg把rtsp视频流保存为MP4文件,并播放

行业知识

Java调用ffmpeg把rtsp视频流保存为MP4文件,并播放

2026-10-25 19:20:00 来源:互联网转载

前言:最近项目需要把rtsp的视频流截取保存为MP4文件。经过多方调研,最终找到方案:调用ffmpeg命令行完成转码。ffmpeg命令行确实稳定靠谱!ok,下面就开始分享代码。

1、环境工具准备
 ffmpeg的程序和一个稳定的rtsp流


这是我的ffmpeg的版本。

我这里rtsp流用的海康硬盘录里的,没有的同学可以网上找一些,有专门的网站提供一些免费的有一些流量的流,比如:
rtsp://rtspstream:e06d5bdf15e5f992e39ebb33506c805e@zephyr.rtsp.stream/movie
rtsp://rtspstream:742cb3f7bb397805f9e7829718fec9d8@zephyr.rtsp.stream/pattern

2、工具类代码,说几个重点也是我踩了很久才出来的坑:
 

1.ffmpegPath一定要写绝对路径的地址(如 D:\ffmpeg\ffmpeg.exe).
2.command在add的时候一定是一个字符一个位置不能直接拼成一句,也不要在单独拼接空格。否则直接会抛出无效的指令
3.获取的输入流必须单独建立一个线程来进行结果的打印,如果直接转字节打印,结束方法就会无效。
4.输出流在次和dos发送指令时一定要刷新。

核心处理类 RtspToMP4.java

import org.springframework.stereotype.Component;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Date;import java.util.List;/** * TODO: * * @Author: gaowh * @create: 2024/4/24 10:11 */@Componentpublic class RtspToMP4 {    public class In implements Runnable{        private InputStream inputStream;        public In(InputStream inputStream) {            this.inputStream = inputStream;        }        @Override        public void run() {            try {                //转成字符输入流                InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "gbk");                int len = -1;                char[] c = new char[1024];         

上一篇:买的服务器怎么连接?

下一篇:个人网站怎么样的?