还在为视频推流和拉流而烦恼吗?还在为安装nginx、ffmpeg而头疼吗?只需要两步就可以省去这些烦恼,第一步:推流 第二步:播放,你确定不入手么
一、添加媒体流服务依赖包maven pom.xml依赖如下:
二、服务初始化配置com.colis stream-api1.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;
@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;
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;
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;
@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;
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四、播放效果 五、源代码地址
colis/colis-stream
以上就是媒体服务的使用过程



