Ver Fonte

更新注释

MisterZhang há 5 anos atrás
pai
commit
ee67153f83

+ 8 - 15
README.md

@@ -7,8 +7,8 @@ Springboot实现的http-flv、websocket-flv直播点播,支持rtsp、本地文
 * 通过javacv推拉流存到内存里,直接输出到前端播放,现在只是一个播放实现,没有完善关闭回收,还不适用于生产环境。
 * 后端:springboot,集成websocket
 * 前端:html5
-* 播放器:西瓜播放器(字节跳动家的,不介绍了,抖音视频、西瓜视频都杠杠的,当然只要支持flv的播放器都可以)
-* 媒体框架:javacv(原本还写了个通过ffmpeg子进程推流,用socket服务接收的方案,等javacv版搞完善了再弄)
+* 播放器:西瓜播放器 http://h5player.bytedance.com/ (字节跳动家的,不介绍了,抖音视频、西瓜视频都杠杠的,当然只要支持flv的播放器都可以)
+* 媒体框架:javacv
 
 #### 截图
 ![Image text](https://gitee.com/52jian/EasyMedia/raw/master/snapshot/image1.png)
@@ -27,19 +27,12 @@ Springboot实现的http-flv、websocket-flv直播点播,支持rtsp、本地文
 4.  ws接口:ws://localhost:8888/flv?url=rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mov&id=2
 5.  url为输地址、可以是本地地址也可以是rtsp、rtmp等,id为视频的唯一编号
 
-#### 参与贡献
 
-1.  Fork 本仓库
-2.  新建 Feat_xxx 分支
-3.  提交代码
-4.  新建 Pull Request
+#### 为什么要写个这个
+现在flash已经被抛弃,h5播放的时代,网上实现大多不是特别完整的(比如拿到一个rtsp或者rtmp,也不知道怎么在h5页面直接播放),当然现在直播点播有很多方式,可以通过nginx带flv模块的当rtmp服务、还有srs等流媒体服务,而这里我们通过javacv来处理,事实上javacv在性能上会好很多,底层ffmpeg也是通过c实现,跟使用c++去调用差不了多少毫秒延迟
 
 
-#### 码云特技
-
-1.  使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md
-2.  码云官方博客 [blog.gitee.com](https://blog.gitee.com)
-3.  你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解码云上的优秀开源项目
-4.  [GVP](https://gitee.com/gvp) 全称是码云最有价值开源项目,是码云综合评定出的优秀开源项目
-5.  码云官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help)
-6.  码云封面人物是一档用来展示码云会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)
+#### 后续计划
+* 原本还写了个通过ffmpeg子进程推流,然后用socket服务接收的方案,等javacv版搞完善了再弄。
+* 由于m3u8是兼容性最强,水果、安卓和PC通吃,所以后续会加入m3u8切片方式
+* 完善web端,方便管理点播文件和播放列表等

+ 5 - 0
src/main/java/com/zj/config/ScheduledConfig.java

@@ -6,6 +6,11 @@ import org.springframework.scheduling.TaskScheduler;
 import org.springframework.scheduling.annotation.EnableScheduling;
 import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
 
+/**
+ * 定时任务与websocket线程池会冲突
+ * @author ZJ
+ *
+ */
 @Configuration
 @EnableScheduling
 public class ScheduledConfig {

+ 5 - 0
src/main/java/com/zj/config/WebSocketConfig.java

@@ -11,6 +11,11 @@ import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry
 import com.zj.websocket.FlvHandler;
 import com.zj.websocket.WebSocketInterceptor;
 
+/**
+ * websocket配置
+ * @author ZJ
+ *
+ */
 @Configuration
 @EnableWebSocket
 public class WebSocketConfig implements WebSocketConfigurer, WebMvcConfigurer {

+ 1 - 0
src/main/java/com/zj/service/MediaService.java

@@ -23,6 +23,7 @@ import cn.hutool.core.thread.ThreadUtil;
 @Service
 public class MediaService {
 	
+	// 缓存线程
 	public static Map<String, ProcessThread> map = new HashMap<String, ProcessThread>();
 
 	/**

+ 1 - 1
src/main/java/com/zj/thread/ProcessThread.java

@@ -88,7 +88,7 @@ public class ProcessThread extends Thread {
         // 关键帧间隔,一般与帧率相同或者是视频帧率的两倍
 //		recorder.setGopSize((int) (grabber.getFrameRate() * 2));
         
-        // 音频比特率
+        // 音频比特率(有时候抓流抓不到比特率,这里给他固定)
         recorder.setAudioBitrate(192000);
         // 声道
 		recorder.setAudioChannels(grabber.getAudioChannels());

+ 5 - 0
src/main/java/com/zj/websocket/FlvHandler.java

@@ -10,6 +10,11 @@ import com.zj.service.MediaService;
 
 import cn.hutool.core.convert.Convert;
 
+/**
+ * websocket客户端推流控制器
+ * @author ZJ
+ *
+ */
 public class FlvHandler extends BinaryWebSocketHandler {
 	
 	@Autowired MediaService mediaService;