bilibili / flv.js

HTML5 FLV Player
Apache License 2.0
22.83k stars 3.38k forks source link

能不能自行判断flv视频是否有声音? #493

Open allayli opened 4 years ago

allayli commented 4 years ago

https://github.com/bilibili/flv.js/blob/8c1bed1245640deb51ec5545bc2f4e9080f01ded/src/demux/flv-demuxer.js#L386

前面加上

                if(!onMetaData.audiosamplerate || onMetaData.audiosamplerate === 0){
                    onMetaData.hasAudio = false;
                }

能不能这样判断flv视频是否有声音?

zhengyangkang commented 4 years ago

目前也遇到个问题,播放flv媒体流时hasAudio设置为false可以播放,但是设置为true或者不设置时就不显示画面,应该如何在createPlayer之前判断是否有声音?

YuboLong commented 4 years ago

目前也遇到个问题,播放flv媒体流时hasAudio设置为false可以播放,但是设置为true或者不设置时就不显示画面,应该如何在createPlayer之前判断是否有声音?

判断FLV文件头(也是整个文件的)的第5个字节,如果是0X05 (0000 0101)表示有音频有视频,如果0x04表示只有音频,0X01表示只有视频。具体的定义如下: image 完整的FLV文件格式可以去https://www.adobe.com/content/dam/acom/en/devnet/flv/video_file_format_spec_v10.pdf 这里看

xqq commented 4 years ago

onMetaData里通常还有hasAudio的字段

liufeihong commented 4 years ago

希望官方尽快解决这个问题,因为视频中无音频数据时,往往会导致视频无法播放!

yc-lm commented 2 years ago

解决无音频流无法播放问题,以下截图为源码部分: src/demux/flv-demuxer.js src/core/transmuxing-controller.js step1

step2

step3

step4

将overridedHasAudio中代码改为 step5

欢迎各位积极讨论此方案,如有帮助赞一个哦(⊙o⊙)?

SolitaryScripter commented 2 years ago

这个问题,是不是没解决,我也碰到了,没音频的视频放不出来,必须手动设置成hasAudio:false,但是我播放前并不知道是否有声音,这个需要怎么处理呢

yc-lm commented 2 years ago

1.如果直播流带音频流,hasAudio设置成false或者true都可以播放 2.如果直播流不带音频流,hasAudio如果设置成true,则无法播放

所以解决方案是根据flv.js判断的是否有音频流的标识再去判断是否重写hasAudio的属性

------------------ 原始邮件 ------------------ 发件人: "bilibili/flv.js" @.>; 发送时间: 2021年12月14日(星期二) 中午11:43 @.>; @.**@.>; 主题: Re: [bilibili/flv.js] 能不能自行判断flv视频是否有声音? (#493)

这个问题,是不是没解决,我也碰到了,没音频的视频放不出来,必须手动设置成hasAudio:false,但是我播放前并不知道是否有声音,这个需要怎么处理呢

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe. Triage notifications on the go with GitHub Mobile for iOS or Android.

camilleKing2021 commented 2 years ago

这个问题,是不是没解决,我也碰到了,没音频的视频放不出来,必须手动设置成有音频:假的,但是我以前不知道有没有声音,这个需要怎么处理呢? 请问你现在解决了吗

camilleKing2021 commented 2 years ago

解决无音频流无法播放问题,以下截图为源码部分: src/demux/flv-demuxer.js src/core/transmuxing-controller.js step1

step2

step3

step4

将overridedHasAudio中代码改为 step5

欢迎各位积极讨论此方案,如有帮助赞一个哦(⊙o⊙)?

只需要改overridedHasAudio中的代码吗 没有生效

Cathal42 commented 2 years ago

我也遇到不生效的问题。打断点到probe方法里判断hasAudio那里,比较了其它无音频的flv流,发现是我这边的流的文件头有问题,错误地标记成有音频了,你可以比对下。

wushufen commented 1 week ago

这多么年都没处理,真的是服