bililive-go icon indicating copy to clipboard operation
bililive-go copied to clipboard

设置use_native_flv_parser为true后,视频时长错误

Open BugKun opened this issue 3 years ago • 10 comments

https://github.com/hr3lxphr6j/bililive-go/blob/master/config.yml#L8 把这个打开,视频时长错误,原本是一个小时的,多款播放器(包括potplayer,VLC等)都是识别到只有27:54,只有用小丸工具箱检测有一个小时,播放器会在27:54后继续播放,直至结束。

BugKun avatar Nov 29 '21 12:11 BugKun

ffmpeg -i input.flv -c copy output.mp4 重封装下

hr3lxphr6j avatar Nov 29 '21 13:11 hr3lxphr6j

我用小丸工具箱就能重新封装了,但总没有你那边能直接在程序里解决方便,大佬看看要怎么优化一下呗

BugKun avatar Nov 29 '21 13:11 BugKun

https://gist.github.com/hr3lxphr6j/827060b7f0ceedad829da11694dcbccc 搞个cronjob

hr3lxphr6j avatar Nov 29 '21 13:11 hr3lxphr6j

按我的理解,应该是文件头的时长定义出错了,那么用ffmpeg读出正确的时长,再修改文件头的时长就OK了,或者直接用ffmpeg封装一下。不过说起来简单做起来难,大佬看看这种思路好不好做,不好弄的话,我就自己重新封装吧。

BugKun avatar Nov 29 '21 14:11 BugKun

另外,我看use_native_flv_parser为false时是没问题的,是不是可以借鉴一下这种情况下的处理方法呢,目前只是因为视频分辨率切换的问题,只能改为true

BugKun avatar Nov 29 '21 14:11 BugKun

  1. 花屏的原因是avc的 SPS 和 PPS 变了,ffmpeg(use_native_flv_parser=faLse)不处理这个变化,导致花屏,use_native_flv_parser=true时候是我自己实现的flv解析器,在遇到第二个SPS和PPS回重新录制。
  2. flv这个格式正常情况没有索引所以总时长不正确,也无法索引,重新封装成mp4的时候会创建索引,就能正常播放了

hr3lxphr6j avatar Nov 29 '21 14:11 hr3lxphr6j

那是否可以,在使用ffmpeg的同时,也是用你自己实现的flv解析器,但是你的flv解析器不做录制的工作,只做监听,发现 SPS 和 PPS 变了,就重启ffmpeg的录制。是不是就既能解决花屏的问题,也能解决视频时长的问题了?

BugKun avatar Nov 29 '21 14:11 BugKun

那是否可以,在使用ffmpeg的同时,也是用你自己实现的flv解析器,但是你的flv解析器不做录制的工作,只做监听,发现 SPS 和 PPS 变了,就重启ffmpeg的录制。是不是就既能解决花屏的问题,也能解决视频时长的问题了?

太麻烦了。。

hr3lxphr6j avatar Nov 29 '21 15:11 hr3lxphr6j

好吧,或者等有空的时候再弄一下吧,毕竟你这边的项目做的还是挺不错的,如果实在难搞,就把Issue关了吧

BugKun avatar Nov 29 '21 15:11 BugKun

那是否可以,在使用ffmpeg的同时,也是用你自己实现的flv解析器,但是你的flv解析器不做录制的工作,只做监听,发现 SPS 和 PPS 变了,就重启ffmpeg的录制。是不是就既能解决花屏的问题,也能解决视频时长的问题了?

太麻烦了。。

有时间更个新版吧 有好多分支被提交了 看下顺带改改小问题 发布一个新版哈

lbcake avatar Aug 12 '22 16:08 lbcake

最近更新了 v0.6.5 ,包含了目前最新的 master branch,欢迎使用~

kira1928 avatar Jan 02 '23 17:01 kira1928