栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

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

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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;


@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

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/748520.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号