java 直播媒体流服务(ffmpeg、javacv)支持本地视频、网路视频

还在为视频推流和拉流而烦恼吗?还在为安装nginx、ffmpeg而头疼吗?只需要两步就可以省去这些烦恼,第一步:推流 第二步:播放,你确定不入手么

一、添加媒体流服务依赖包

maven pom.xml依赖如下:



   com.colis
   stream-api
   1.0-bronze
   system
   ${project.basedir}/src/main/resources/libs/stream-api-1.0-bronze.jar

二、服务初始化配置

1. springboot 项目配置如下:

import com.colis.stream.api.FlvStreamServer;
import com.colis.stream.common.bean.StreamNettyArgs;
import com.colis.stream.server.StreamNettyServer;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * 

描述:推流服务配置

* * @author wlp * @version 1.0.0 * @date 2022/2/28 17:40 */ @Configuration @ConditionalOnClass({StreamNettyServer.class, FlvStreamServer.class}) public class StreamConfig { @Bean(name = "streamServer", initMethod = "start", destroyMethod = "stop") public StreamNettyServer server() { // 配置推流服务的端口 final StreamNettyArgs streamNettyArgs = StreamNettyArgs.builder().port(8899).build(); return new StreamNettyServer(streamNettyArgs); } @Bean public FlvStreamServer flvStreamServer() { // 将推流对象交给spring容器 return new FlvStreamServer(); } }

2. 非springboot项目初始化

(1) 使用静态代码块初始化

import com.colis.stream.common.bean.StreamNettyArgs;
import com.colis.stream.server.StreamNettyServer;

/**
 * 

描述:推流服务初始化

* * @author wlp * @version 1.0.0 * @date 2022/2/28 17:53 */ public class StreamServer { static { final StreamNettyArgs streamNettyArgs = StreamNettyArgs.builder().port(8899).build(); new StreamNettyServer(streamNettyArgs).start(); } }

(2) 使用构造方法初始化

import com.colis.stream.common.bean.StreamNettyArgs;
import com.colis.stream.server.StreamNettyServer;

/**
 * 

描述:推流服务初始化

* * @author wlp * @version 1.0.0 * @date 2022/2/28 17:53 */ public class StreamServer { public StreamServer(){ final StreamNettyArgs streamNettyArgs = StreamNettyArgs.builder().port(8899).build(); new StreamNettyServer(streamNettyArgs).start(); } }

三、使用方法

(1) springboot 项目如下

import com.colis.stream.api.FlvStreamServer;
import com.colis.stream.common.bean.FlvStreamParam;
import com.colis.stream.common.bean.FlvStreamResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * 

描述:测试推流

* * @author wlp * @version 1.0.0 * @date 2022/2/28 18:00 */ @RestController @RequestMapping("stream") public class TestController { @Autowired FlvStreamServer flvStreamServer; @GetMapping("start") public FlvStreamResult start(FlvStreamParam flvStreamParam) { return flvStreamServer.start(flvStreamParam); } @GetMapping("stop") public String stop(FlvStreamParam flvStreamParam) { flvStreamServer.stop(flvStreamParam.getStreamUrl(), flvStreamParam.getFlvStreamType()); return "关闭成功啦!"; } }

(2) 非springboot 项目

import com.colis.stream.api.FlvStreamServer;
import com.colis.stream.common.bean.FlvStreamParam;
import com.colis.stream.common.bean.FlvStreamResult;
import com.colis.stream.common.bean.StreamNettyArgs;
import com.colis.stream.common.constant.FlvStreamType;
import com.colis.stream.server.StreamNettyServer;

import java.util.concurrent.TimeUnit;

/**
 * 

描述:推流服务初始化

* * @author wlp * @version 1.0.0 * @date 2022/2/28 17:53 */ public class StreamServer { static { final StreamNettyArgs streamNettyArgs = StreamNettyArgs.builder().port(8899).build(); new StreamNettyServer(streamNettyArgs).start(); } public static void main(String[] args) throws InterruptedException { TimeUnit.SECONDS.sleep(5); final FlvStreamParam streamParam = new FlvStreamParam() // 无人观看是否自动关闭推流 .setAutoClose(false) // 播放的视频地址 可以是网络地址 也可以是本地视频 .setStreamUrl("D:\\MyWorks\\IdeaProgramFiles\\ColisProgramFiles\\VideoWorks\\EasyMedia\\video\\file.mp4") .setFlvStreamType(FlvStreamType.FFMPEG); final FlvStreamResult result = new FlvStreamServer().start(streamParam); // 推流成功之后就会返回两个用来直接播放的地址 // 1. http播放地址 // 2. ws socket播放地址 System.out.println("播放:---》" + result.toString()); } }

返回播放地址示例:

httpUrl:http://192.168.0.163:8899/stream/flv?stream_key=RDpcTXlXb3Jrc1xJZGVhUHJvZ3JhbUZpbGVzXENvbGlzUHJvZ3JhbUZpbGVzXFZpZGVvV29ya3NcRWFzeU1lZGlhXHZpZGVvXGZpbGUubXA0&stream_exec_type=ffmpeg
 
wsUrl:ws://192.168.0.163:8899/stream/flv?stream_key=RDpcTXlXb3Jrc1xJZGVhUHJvZ3JhbUZpbGVzXENvbGlzUHJvZ3JhbUZpbGVzXFZpZGVvV29ya3NcRWFzeU1lZGlhXHZpZGVvXGZpbGUubXA0&stream_exec_type=ffmpeg

java 直播媒体流服务(ffmpeg、javacv)支持本地视频、网路视频_第1张图片

 四、播放效果

java 直播媒体流服务(ffmpeg、javacv)支持本地视频、网路视频_第2张图片

五、源代码地址

colis/colis-stream

以上就是媒体服务的使用过程

你可能感兴趣的:(ffmpeg,音视频,java,媒体)