首先安装好NGINX并打开服务

 

然后安装好ffmpeg

 

然后参考:http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=28790518&id=5756446

下载并编译m3u8-segment,什么是m3u8:https://www.zhihu.com/question/21087379、https://zh.wikipedia.org/zh-hans/M3U

 

在输入 ./configure 之后遇到了和作者一样的问题:


configure: error: Package requirements (libavformat libavcodec libavutil) were not met:

No package 'libavformat' found
No package 'libavcodec' found
No package 'libavutil' found

我们需要输入下面的命令:

sudo apt-get install libavformat-dev
然后再输入 nake -j16,然后是sudo make install

输入ls -lh查看当前目录的所有文件的详细信息,发现已经生成了 m3u9-segmenter并且其是可执行文件

 

如何使用,建议直接参考:https://github.com/m3u8-segmenter/m3u8-segmenter

比上面的chinaunix说的好

 

m3u8-segmenter已经过期了,作者也放弃了维护

 

新方法:

先将MP4转为TS格式,然后切片成m3u8再推出去

https://my.oschina.net/ososchina/blog/828100

 

如果遇到了:Failed to open bitstream filter h264_mp4toannexb for stream 0 with codec copy: Invalid argument

则把命令中的-bsf h264_mp4toannexb参数删除,就可以正常的转换成TS格式了,但是只能输出声音流,视频流缺失了

 

又兜兜转转,找到了一个好方法:https://github.com/videojs/videojs-contrib-hls/issues/1261

其中使用命令:

ffmpeg -i input.mp4 -bsf:v h264_mp4toannexb -codec copy -hls_list_size 0 output.m3u8
可以直接把mp4完成切片TS并生成m3u8播放列表,一行搞定

然后发现HLS这种已经过时了,延时太高了(https://www.jianshu.com/p/5b1341e97757?utm_campaign=maleskine&utm_content=note&utm_medium=pc_all_hots&utm_source=recommendation)

最新的方法是HTTP+FLV 


在播放端方面,QT内置的QMedia非常的智障,https://stackoverflow.com/questions/30507317/how-do-i-play-a-stream-with-qmediaplayer

打算换成Qt-vlc

 

https://vlc-qt.tano.si/

以后一定多用英文进行搜索……老外研究问题喜欢总结,而且总结的比较规范,前因后果各种环境和配置说的很明白

 

今天也算是在一天之内经历了三代的推流技术……明天还要把QT-VLC添加到QT工程中,重构很多代码

听说大公司都有架构师进行整体架构,还有人专门去调查和选择使用什么框架技术,而我这里相当于全栈工程师……从服务器推送视频流到前端的界面显示全包了……

真是心累啊
重构前的”流水账“原文

相关文章:

  • 2021-12-27
  • 2022-01-14
  • 2022-03-01
  • 2021-08-09
  • 2021-12-27
  • 2021-10-28
猜你喜欢
  • 2021-10-21
  • 2021-11-10
  • 2021-08-08
  • 2021-10-17
  • 2022-01-30
  • 2022-12-23
  • 2021-12-01
相关资源
相似解决方案