Skip to content
This repository has been archived by the owner on Dec 8, 2023. It is now read-only.

开始录制几秒后自动停止了 #1

Closed
Richardhzj opened this issue Sep 5, 2020 · 10 comments
Closed

开始录制几秒后自动停止了 #1

Richardhzj opened this issue Sep 5, 2020 · 10 comments

Comments

@Richardhzj
Copy link

大佬虽然这项目已经很久没维护了, 但还是想请问你还对这个项目有没有一点印象。

我安装好之后随便b站找了个房间号来测试, 能正常的创建对应平台的直播文件夹但里面就是一直空的,查看日志, 就是找到对应直播了, 开始录制没几秒又自动停止了。 loopOrOnece设置成loop的话就是不停的重复这些操作,但是文件夹里是空的啥都没保存下来

tail -f /var/log/screen/screenlog_test_20200905_200835.log
[2020-09-05 20:08:41] ===bilibili=== Checking https://live.bilibili.com/21672022...
[2020-09-05 20:08:41] ===bilibili=== Try to get current live stream of https://live.bilibili.com/21672022
[2020-09-05 20:08:41] ===bilibili=== Start recording, stream saved to /usr/local/StreamRecorder/tw/test/bilibili/20200905/bil_21672022_⭐被窝练歌_20200905_200842.mp4
[2020-09-05 20:08:41] ===bilibili=== recording log saved to log/test/bilibili/bil_21672022_⭐被窝练歌_20200905_200842.mp4.log, streaming log saved to log/test/bilibili/bil_21672022_⭐被窝练歌_20200905_200842.mp4.streaming.log
[2020-09-05 20:08:47] ===bilibili=== Live stream recording stopped.

@magicalz
Copy link
Owner

magicalz commented Sep 6, 2020

刚试了一下B站还是可以正常录制的,本工具调用streamlink录制B站视频,你可以先试一下streamlink是否正常工作
streamlink --loglevel trace -o "test.ts" "https://live.bilibili.com/21672022" "1080p,720p,best"
以前曾经写过一篇文章关于环境配置的,你可以参考:https://www.bilibili.com/read/cv3697584

@Richardhzj
Copy link
Author

Richardhzj commented Sep 6, 2020

十分感谢,之前几个发现的问题基本已经解决了。 把streamlink跟ffmpeg都重新安装调试后,B站已经可以开启录制了。 不过因为我的目的实际上是录制twitcasting的弹唱主播视频,还有一些问题我再研究一下。

另外由于你在B站环境配置那篇文章里, baidu网盘的那个iikira/BaiduPCS-GO项目已经给删了。 rclone参考配置用的那篇https://www.meowah.com/archives/876.html链接也打不开。 我只能自己找类似的rclone安装教程。 看的比较靠谱的一个是https://blog.csdn.net/Nedved_L/article/details/101429006

但是这个配饰是设置完rclone config后,有后续的挂载跟设置启动脚本, 不知道跟你的项目里的在config里写rclone remote name怎么配合起来,达到把视频下载后直接转存onedirve的操作

@Richardhzj
Copy link
Author

Richardhzj commented Sep 7, 2020

大佬我感觉只差最后一步就能使用了。

今天有一个新发现, 你的recorder.sh里中间关于twitcast的代码有一段
“ MOVIEID=$(wget -q -O- ${LIVE_URL} | grep data-movie-id | awk -F '[="]+' '{print $2}')
ID=$(echo "$CHANNELID"|sed 's/:/:/')
LIVEDL_FNAME="${ID}${MOVIEID}.${SAVEFORMAT}"
FNAME="twitcast
$(date +"%Y%m%d_%H%M%S")_${MOVIEID}.${SAVEFORMAT}"”

这个我用一个url去测试了:
wget -q -O- https://twitcasting.tv/neko_hutekusare | grep data-movie-id
data-base-url="https://twitcasting.tv/" data-frontend-api-url="https://frontendapi.twitcasting.tv" data-broadcaster-id="neko_hutekusare" data-broadcaster-name="さやかたこわさ" data-broadcaster-screen-name="neko_hutekusare" data-broadcaster-profile-image="//imagegw02.twitcasting.tv/image3s/pbs.twimg.com/profile_images/1291770043202588673/dVEIFmjD_bigger.jpg" data-movie-id="639152117" data-audience-id="" data-account-type="not_logged_in" data-lang="en" data-update-interval="8000" data-cnum="60" data-sns-max-comment-length="140" data-is-sns-available="false" data-is-sns-connected="false" data-is-reply-widget-enabled="true" data-passcode="" >

这个data-movie-id "63915211 是用print$14获取到的,之前脚本的150行报错是因为print $2获取的参数不对。可能是过去一年了, tc台的url格式发生了变化?

这样拿到了id,就能正确获取tc台id,在log中创建日志文件了,有一个可能是mp4格式兼容的问题:Non-monotonous DTS in output stream 0:0; previous: -18000, current: -18000; changing to -17999. This may result in incorrect timestamp。 这个我到时再查查。

但是即使全部弄好了, 看日志在正常录制保存到指定文件夹了, 但是文件夹里还是没有视频文件, 之前bilibili,哪怕没有结束录制,文件都已经存在了:

[root@0ab9dc53bd89 StreamRecorder]# tail -f /var/log/screen/screenlog_tc_20200907_180650.log
[2020-09-07 18:07:00] ===twitcast=== Checking https://twitcasting.tv/c:gabby948...
[2020-09-07 18:07:00] ===twitcast=== Try to get current live stream of https://twitcasting.tv/c:gabby948
[2020-09-07 18:07:00] ===twitcast=== Start recording, stream saved to recorded/tc/twitcast/20200907/twitcast_20200907_180701_639292232.mp4
[2020-09-07 18:07:00] ===twitcast=== recording log saved to log/tc/twitcast/twitcast_20200907_180701_639292232.mp4.log, streaming log saved to log/tc/twitcast/twitcast_20200907_180701_639292232.mp4.streaming.log
^C
[root@0ab9dc53bd89 StreamRecorder]# cd recorded/tc/twitcast/
[root@0ab9dc53bd89 twitcast]# ls
20200907 metadata
[root@0ab9dc53bd89 twitcast]# cd 20200907/
[root@0ab9dc53bd89 20200907]# ls
[root@0ab9dc53bd89 20200907]# pwd
/usr/local/StreamRecorder/recorded/tc/twitcast/20200907

希望你有空的时候,可以帮忙稍微看一下跟twitcasting相关的录制问题。 现在看日志都没报错了,我实在是不知道还有哪里可以修改了。

你在github上面说的tc台需要安装的livedl,也已经装过了
wget https://github.com/yayugu/livedl/releases/download/20181215.36/livedl
chmod +x livedl

@magicalz
Copy link
Owner

magicalz commented Sep 7, 2020

晚上我有空看一下,直播网站的格式确实是会发生变化的,youtube就已经变过好几次,twitcasting很可能也变了
文件夹里没有文件其实是因为livedl这个工具默认只能在同目录下保存,并且文件名是固定的,所以我才需要去获取movie-id,并且用来把livedl目录下保存的视频档移动到指定目录中去,你在直播还没结束的时候去查看指定目录那当然是空的,当时使用livedl来下载tc台直播是因为streamlink不支持tc台高清直播,现在过去这么久了也许steamlink已经修复了这个问题

至于rclone,你在global.config里面正确配置好rcloneremotename和servername即可,不用自己挂载到磁盘,下载完视频后,如果autobackup这个参数为on,程序会自动把视频上传到你配置好的onedrive网盘,保存路径是$rcloneremotename:StreamRecorder/$servername/$savepath

TC台问题临时解决方法,把recorder.sh的150行改为:
MOVIEID=$(wget -q -O- ${LIVE_URL} | grep data-movie-id | awk -F '[="]+' '{for(i=1;i<=NF-1;i++)if($i ~ /data-movie-id/)print $(i+1)}')
晚点我测试下streamlink,如果steamlink现在正常下载TC台视频,我就统一使用steamlink来下载所有直播,去掉livedl

@Richardhzj
Copy link
Author

Richardhzj commented Sep 7, 2020

好的十分感谢,抱歉过了这么久了又麻烦你来改进这个项目

我看完你的回复后又去看了一眼, 在根目录那现在的确出现了很多个.ts格式的视频。但是录制结束后依旧没有被移动到指定目录里。

我在global.config设置了mp4格式, bilibili也的确转换成了mp4格式,不知道为啥tc的视频依旧是ts格式。

这两个是之前的今天下午运行好了的结果,还没按照你的回复去修改150行。我等会再去试试,不过看到运行结果后我还有一个疑问, 不知道是不是有哪个配置项能设分p大小呢? 我下午录制的那个TC台测试直播,给自动分了8个文件感觉有点多了。
image

@magicalz
Copy link
Owner

magicalz commented Sep 7, 2020

代码已提交,主要修复了youtube,twitch,twitcasting格式变化后出现的问题,并且增加了一个程序入口streamrecorder.sh,用于统一控制其他脚本,具体请看更新后的readme
livedl只支持ts格式,所以不管你设置成mp4还是ts都是一样的,TC台的直播并没有分P,可能直播本来就是断断续续的,或者是由于你运行脚本的服务器的网络不稳定造成的
现已统一改成使用steamlink来下载视频(包括TC台),文件直接保存到指定目录里不会暂存到根目录了

@Richardhzj
Copy link
Author

辛苦你了大佬,早点休息吧。 我再去测试一下

@Richardhzj
Copy link
Author

今天我去检查了一下我服务器上的脚本。 tc台的有正确的录制成mp4格式保存在recorded下面了。

readme里说自动备份打开后会上传网盘并删除本地备份。 不过我autobackup写成on之后, 我在我的ondrive上没有看到视频, 同时recorded里的视频也没有删除。

image

我感觉我配置的没有问题, 配置rclone的时候也测试过显示出来的url的确连接的是我的网盘。

晚上我去试试手动调用你的那个上传脚本看看会不会成功

@magicalz
Copy link
Owner

magicalz commented Sep 9, 2020

你应该手动测试一下rclone命令行能否正常上传文件
rclone copy --no-traverse "savepath" "remotename:targetpath" --include "filename.*" --buffer-size 32M --transfers 6
另外看看log文件夹下autobackup和rclone相关的log文件里记录了什么内容,找到原因
我看你文件名里有?,你可以检查看看你系统的locales是否是UTF8的

@Richardhzj
Copy link
Author

不知道下午那个测试的录制为什么没有成功上传。 但我实际想录制的那个弹唱的主播的今晚正常录制并且上传到onedrive了哈哈哈

我是用docker跑了一个centos容器来搞这个的,所以没调整字体格式估计默认不是utf8。 不过现在已经成功了。

十分感谢大佬你的耐心回复以及帮忙修改项目,占用你不少时间了。我网上找了好多个不同的项目,最后还是发现你这个操作最方便同时还能上传网盘,真是太贴心了。

麻烦你那么多天, 最后我把我想去听的那个直播链接给你听听哈哈哈。她底下tc也有几个录播。 你如果有兴趣的话有空也能点开看看, 起码知道这几天修改项目,是为了监控谁的。 那这个issue我也就先关了。祝你后续工作生活一切顺利。

https://twitcasting.tv/neko_hutekusare

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants