有关性能

  1. 玩客云,随身wifi棒子等,可以用copy模式无压力推流1080p视频
  2. copy模式不能加水印(比如播放时间),要加水印必须转码
  3. 玩客云,随身wifi棒子等,cpu过弱,无论做何设置均不能流畅转码推流,也就不能加水印
  4. 四百元的j4105+4g内存工控机,windows10系统,性能够用,可以软解1080p视频并推流(温度60,cpu占用30-50)
  5. 启用j4105的qsv硬解,并不能有效降低cpu占用。

有关无人值守和断流重连

  1. 推流码有效期只有5分钟,5分钟后,如果流不断,就会一直有效
  2. ffmpeg在推流过程中,有概率卡死并断流,需要人工重新获取推流码并重新推流。
  3. 可以监控cpu占用或网卡流量,cpu占用过低,或网卡流量过低,强行关闭ffmpeg并重启ffmpeg可以定程度解决
  4. ffmpeg推完一个视频切换到下一个时,或被关闭重启,都会短暂断流,有一定概率被服务端认为重新推流,需要人工重新获取推流码并重新推流。
  5. 只要需要人工获取推流码,就不能保证24小时无人值守直播。断流可能出现在任何时间,人不可能看得起。
  6. 用爬虫脚本模拟登录斗鱼并自动获取推流码的研究失败了。
  7. 用爬虫解析cookie自动登录斗鱼并获取推流码未研究,因为cookie有有效期,仍然不能完全实现无人值守。
  8. 最终解决办法是用斗鱼直播助手,启用第三方推流模式。ffmpeg先向斗鱼直播助手推流,直播助手收到流后,自动开播,向斗鱼推送。
  9. 网络波动时,斗鱼直播助手会提示”网络错误“并且不会重连。
  10. 所以仍然需要监控ffmpeg的网卡或cpu占用,必要时强行关闭并重启ffmpeg,这样斗鱼直播助手就会自动重新推流。
  11. ffmpeg命令行参数要加上-ss <开始时间>以便被结束后,能够断点续推
  12. ffmpeg-python库,可以获取到视频总长度。通过视频起始播放时间,断线时间和视频总长度,可以计算出断点后起始播放时间。
  13. 读取视频总长度很耗时,最好提前读出来存进数据库。
  14. 至此,基本上可以实现24小时无人值守。
  15. 只是必须要在windows上推流,比较无趣。

有关点播

  1. python有pydouyu库用来解析弹幕,可以直接pip install安装。需要一个数据库,存储视频列表和排序。当检测到以#号开头,并且后面是数字的弹幕时,修改数据库中对应编号视频的权重,即可实现点播。
  2. 点播结果无法显示在屏幕上,因为ffmpeg命令行方式调用不支持。必须要用c++调用其api才行。
  3. 点播结果也无法用弹幕回馈,因为斗鱼现在必须要用api调用才能用程序发送弹幕。而api需要企业资格申请。
  4. 我的方式是做了一个网站,对外展示播放列表。

有关无缝切换视频

  1. 因为是命令行方式调用ffmpeg,所以视频切换后,会自动重启ffmpeg,这会导致短暂断流。观看者必须要刷新才能看到新视频。
  2. 如何实现无缝切换?
  3. 有关使用管道方式。管道的原理是开启两个ffmpeg进程,一个读取视频送入管道,另一个从管道读视频进行推流。的确可以实现无缝切换,但当网络中断,需要自动重启ffmpeg以触发斗鱼直播助手的自动开播机制时,无法断点续播,所以排除。
  4. 有关使用obs中继推流。原理是搭建nginx+rtmp服务器,ffmpeg推流到此服务器。而后用obs拉取此流,再向斗鱼推流。这种方式也可以实现无缝推流,ffmpeg重启后,obs会向斗鱼推送黑屏或其他自定义流。问题是,当ffmpeg重启切换视频时,obs有时候会获取不到新流并卡死,有时候则会黑屏只播放声音。这个方案并不稳定,而且更加占用系统资源(电脑平需要转码,再转码),所以排除。
  5. 有关使用ts格式,拼接m3u文件。理论上可行,但我的文件都是mp4,大且多,都转成ts格式有些代价太大,暂时搁置。
  6. 总结:暂未找到适合无人值守的无缝切换视频方案。
  7. 还有一个方向,抛弃ffmpeg,使用程序通过obs的obs-websocket插件控制obs。如果能根据数据库内容控制obs切换本地视频以及显示不同文字的话,同样能实现点播和无缝切换的效果。理论上,obs-studio的所有操作,都可以用外部程序控制。但我并没有找到具体细节,仅仅找到了开始/停止推流,切换/删除场景等基本操作。但这远远不够,需要进一步研究。

最终结果

最终还是实现了用python操控obs-studio实现我想要的功能,是个完美的解决方案。

详见我写的这篇:

https://blog.csdn.net/tansuo2005/article/details/130878990?spm=1001.2014.3001.5501

用ffmpeg向b站斗鱼等推流24小时直播一路踩的坑总结相关推荐

  1. 使用树莓派搭建家庭宠物监控并在B站24小时直播

    文章来源:https://blog.oliverxu.cn 我家养了一条拉布拉多,名字叫小黑,由于我常年不在家,都是我妈妈在养,每当我想要看看狗子,总是需要在我妈妈在家的时候,和我妈妈视频才能看到,因 ...

  2. 用树莓派在B站24小时直播音乐

    第一步:安装ffmpeg和解码器 先安装解码器(注意要一句一句执行--) sudo git clone git://git.videolan.org/x264 cd x264 sudo ./confi ...

  3. 阿里云Ubuntu18.04向斗鱼虎牙B站等推流实现24小时视频文件直播

    阿里云Ubuntu18.04向斗鱼虎牙B站等推流实现24小时视频文件直播 一.ECS及安全配置 二.安装ffmpeg 三.获取推流地址 四.实现推流 测试ffmpeg 合并视频 循环后台执行 五.(感 ...

  4. Mr.Go 会客厅第二期,B站+斗鱼“后浪” Gopher 火花四溅!

    本期主题:后浪 首先隆重公布一下,5月26号第一期 Mr.Go 会客厅低调上线,在 B 站最高同时在线人数达到1.2万人!全国的 Gopher 们实在是给力,在这里感谢大家的厚爱- 第二期会客厅,我们 ...

  5. 使用ffmpeg读取本地文件,进行推流

    使用ffmpeg读取本地文件,进行推流,跳到指定时间播放. 注意MP4文件h264_mp4toannexb与aac_adtstoasc. 要实现循环播放注意两点: 1.播放到结尾,跳到开始位置重新播放 ...

  6. mac下面用ffmpeg抓取桌面以及摄像头推流进行直播

    OSX下面用ffmpeg抓取桌面以及摄像头推流进行直播 这个可以推桌面+麦克风,并且摄像头把人头放在界面下面 在osx系统下通过ffmpeg查看设备 1 ffmpeg -f avfoundation ...

  7. ffmpeg从某站提取视频、音频、详解

    ffmpeg从某站提取视频.音频.详解 事件背景 准备链接 第一步安装下载 ffmpeg是开源软件,安装网址http://ffmpeg.org/download.html#build-windows ...

  8. Windows远程桌面实现之五(FFMPEG实现桌面屏幕RTSP,RTMP推流及本地保存)

    by fanxiushu 2018-07-10 转载或引用请注明原始作者. 前面文章分别阐述了,如何抓取电脑屏幕数据,如何采集电脑声音, 如何实现在现代浏览器中通过HTML5和WebSocket直接进 ...

  9. FFMPEG之编码实现RTMP循环推流(附带av_interleaved_write_frame返回-22处理)04

    FFMPEG之编码实现RTMP循环推流(附带av_interleaved_write_frame返回-22处理) 前言 本篇是参考雷神的推流进行二次处理的,可以参考雷神这篇博客.[最简单的基于FFmp ...

最新文章

  1. 在CentOS 5.5下用OpenSSH构建SSH服务器(上)
  2. ABAP数据库—更新数据
  3. 10 | 案例篇:系统的软中断CPU使用率升高,我该怎么办?
  4. 2_4 FacadeMode.cpp 外观模式
  5. php之前代码,PHP语法检查源代码前控制
  6. 天气预报为什么要用超级计算机,为什么天气预报不够准确?
  7. Leetcode每日一题:454.4sum-ii(四数相加Ⅱ)
  8. 测试用例的优先级概念
  9. java 两个数据合并_R:两个数据帧合并
  10. JavaSE基础——方法参数类型及返回值类型问题、权限修饰符、内部类、匿名内部类
  11. SQL server 2008卸载后有残留及彻底卸载
  12. ioncube linux,lamp安装版,安装ionCube不成功
  13. 集合竞价如何买入_散户可以在集合竞价时买入股票吗?
  14. DxO FilmPack破解版|DxO FilmPack Elite 5.5.23破解版下载(附破解补丁)
  15. 3分钟教会你用KaTeX在csdn博客中编辑数学公式
  16. 图示电路中的等效电阻rab_例求图示电路中ab两点间的等效电阻Rab.ppt
  17. 中国人工智能学会主办!真实AIGC业务数据驱动,欢迎全球开发者参加
  18. Spring Cloud Alibaba操作手册
  19. 浅尝辄止MongoDB:管理(1)
  20. 为什么数字化转型必须是一把手工程?

热门文章

  1. ubuntu 16.04 LTS 开启网易云音乐等应用时可能造成compiz的CPU占用率极高
  2. 漫谈Python在GIS中的应用
  3. Daily English Dictation Number Twelve
  4. Wordpress婚庆婚纱摄影工作室企业网站主题模板_精美简约大气
  5. 你还相信土豪吗?iPhone 5变土豪金5s教程(一)
  6. 我在养一个很牛逼的大单!
  7. 广角摄像头畸变校正(1)-标定
  8. 如何自助搭建企业门户网站(一)
  9. 强大的Linux终端行为记录和回放工具:script命令详解
  10. 基于 Java 的 PHP 框架 —— Quercus 简介(转)