美文网首页
mac上soundflower+OBS+微信公众号直播项目总结

mac上soundflower+OBS+微信公众号直播项目总结

作者: 小马将过河 | 来源:发表于2020-08-15 00:09 被阅读0次

1. 本地微信公众号开发

参考:微信配置本地公众号开发环境

2. runtime的addShutdownHook钩子不执行

参考:Linux kill & Java shutdownhook
最后用的kill-15 pid停止进程,或许有更好的方式,比如System.exit();

读文件好说,项目启动时编译就会读

(def file-url "/opt/xhlive-training/pkg/activity/db.edn")
(def messages (atom (clojure.edn/read-string (slurp file-url))))

增加hook

(defn -main [& args]
  (start!)
  (.addShutdownHook (Runtime/getRuntime)
                    (new Thread (fn[]
                                  (prn "I am going down....")
                                  (when (not (empty? @messages))
                                    (spit file-url @messages)))))
  (println "启动ws...."))

3. 项目启动时读文件,项目结束时写文件

类似在服务结束时增加一些销毁现场的能力。Java中使用shutdownHook的一些注意事项
上博主的介绍相对来说能够帮助addShutdownHook的场景了。

本文介绍clojure版实践。

slurp 读函数

读取一个文本文件的全部内容

clojure.core/slurp
读取一个文件的全部内容,并以字符串形式返回

(comment
  (slurp "files/file-test.txt" :encoding "UTF-8")
  ;; => "a txt file line1\na txt file line2\n这是中文字符"
  )

spit 写函数

clojure.core/spit [file-path content & options]
file-path:为文件路径;
content:为要写入文件的内容,所有的内容都会被转为String类型写入。
options:一些设置参数,常见的有:

:append true/false;当为true是,内容会从文件后面写入,如果要换行写入,需要在内容后面加入\n换行符,当为false时,会擦掉文件原有的内容。
:encoding “UTF-8”或”GBK”等。 默认是UTF-8.
spit函数会先打开文件,再将内容写入,再关闭文件。
spit都是以字符串形式写入。

(comment
  (spit "files/file-test.txt" "新增文件内容\n" :append false :encoding "GBK")
  (slurp "files/file-test.txt" :encoding "GBK")
  ;; => "新增文件内容\n"
  (slurp "files/file-test.txt" :encoding "UTF-8")
  ;; => "���������\n"
  (spit "files/file-test.txt" "新增文件内容\n" :append false)
  (slurp "files/file-test.txt" :encoding "GBK")
  ;; => "鏂板鏂囦欢鍐呭\n"
  (slurp "files/file-test.txt" :encoding "UTF-8")
  ;; => "新增文件内容\n"

  ;; 逐行写大量数据到文件时,用spit会降低效率,因为它每写一次都会执行打开、关闭文件。
  ;; 此时可以用java.io.writer.
  (with-open [w (cio/writer "files/file-test.txt")]
    (doseq [l  ["第一行" "第二行" "第三行"]]
      (.write w l)
      ;; 新起一行
      (.newLine w)))
  )

websocket

clojure使用两个库,不附源码。
https://github.com/ptaoussanis/sente
https://github.com/ptaoussanis/timbre

mac上使用OBS做直播

我们的方案是把腾讯会议的会议内容做一定的背景、头像的裁剪处理后用OBS studio软件把流推出去,然后在客户端用m3u8的格式拉取播放。

简单方案

为什么单独提一下这个,因为mac上能把麦克风的声音播出去,但是桌面的声音拨不出去。换句话说,你用网易云音乐,想只把这个软件的声音用OBS播出去,是不可以的,于是借助soundFlower这款软件可以实现,在腾讯会议上选择soundflower (64ch)这个通道。


image.png

OBS里设置也选择soundflower (64ch)


image.png

可以只将腾讯会议的声音播出去。

然而,这样有产生个新问题,腾讯会议的声音都被OBS拨出去了,自己的电脑端却听不见了,于是参考
在MacOS上利用OBS+Soundflower内录声音与直播这个教程配置了聚合输入和混合输出,相当于将一个声音进行了扩展,这样才妥当了。

最优方案

2020-10-20
好吧,b站上的视频居然也打不开?,真是没有一个靠谱的,这个电脑没配过,凭记忆录个视频吧。

  • 前提
  1. 安装soundflower
  2. 安装了OBS studio
  • 设置混合输出扬声器
    找到Mac上的MIDI设置


    image.png
image.png image.png image.png image.png
  • 设置聚焦设备


    image.png
  • OBS里设置也选择soundflower (64ch)
    可以看到obs里多了一个桌面音频的输入源。

image.png

完成配置。这样声音能内录到OBS,本地也能听见。

参考

clojure实战——IO(1)
在MacOS上利用OBS+Soundflower内录声音与直播

相关文章

  • mac上soundflower+OBS+微信公众号直播项目总结

    1. 本地微信公众号开发 参考:微信配置本地公众号开发环境[https://www.jianshu.com/p/0...

  • 很缺钱,承接各类业务

    承接淘宝直播、淘宝短视频业务、线下商业直播 承接各类外包项目: 互联网开发:网站、App、微信公众号、微信小程序、...

  • MACD指标的运用技巧

    微信公众号上可以【免费诊股】,公众号名称:【中资财经】 在公众号上每天分析大盘,教你捕捉牛股,交流心得经验 MAC...

  • 微信公众号红包功能

    前言 项目需要,在微信公众号上实现会议管理红包功能,包括会议签到(签到领红包)、会议直播间(互动聊天、抢红包)等功...

  • ping++实现移动端微信支付

    之前做过微信公众号的项目,在微信公众号里可以购买公司提供的服务,因为项目是基于微信端,所以使用的是微信公众账号支付...

  • iOS集成微信支付

    刚集成完微信支付,总结总结 1. 准备 微信平台分为微信公众平台和微信开放平台,公众平台是运营微信公众号的管理系统...

  • 把兴趣变成钱脉,漫画项目月入过万,全方位100%解读 | 爆爷

    项目效果​ 引言 使用微信公众号做小说推广并不是什么新鲜事儿了。这种CPS类项目,几年前在微信公众号上就已经兴...

  • 微信开发之网页开发

    相信不少人接触过微信公众号的开发,最近我刚做完一个微信公众号开发的项目,也是本人经手的第三个微信公众号项目,对于微...

  • 铁道兵公众号2018年年度总结 - 草稿

    官方微信公众号年度总结 2018年”铁道兵”微信公众号年终总结和工作计划 2018年对“铁道兵”公众号来说,是最重...

  • SONM项目进度跟进

    (文章首发于微信公众号:bixu2019。转载请附微信公众号:bixu2019。) 项目概览 项目名称:SONM ...

网友评论

      本文标题:mac上soundflower+OBS+微信公众号直播项目总结

      本文链接:https://www.haomeiwen.com/subject/ixyvdktx.html