使用Flv.js无法播放视频

news2024/11/13 11:34:33

背景

由于项目需要,搭建了一套SRS直播服务,通过直播录制将视频报错并在本地播放。视频存储的格式为flv,所以使用flv.js插件来播放。测试时发现录制的视频无法播放,经过排查找到原因。

报错信息

控制台并无明显报错,只是flv.js在控制台疯狂打印日志

[MSEController] > MediaSource onSourceOpen
logger.js:123 [FLVDemuxer] > Parsed AVCDecoderConfigurationRecord
logger.js:82 [FLVDemuxer] > Found another AVCDecoderConfigurationRecord!
Log.w @ logger.js:82
logger.js:123 [FLVDemuxer] > Parsed AVCDecoderConfigurationRecord
logger.js:82 [FLVDemuxer] > Found another AVCDecoderConfigurationRecord!
Log.w @ logger.js:82
logger.js:123 [FLVDemuxer] > Parsed AVCDecoderConfigurationRecord
3logger.js:123 [MSEController] > Received Initialization Segment, mimeType: video/mp4;codecs=avc1.640032
logger.js:82 [FLVDemuxer] > Found another AVCDecoderConfigurationRecord!
Log.w @ logger.js:82
logger.js:123 [FLVDemuxer] > Parsed AVCDecoderConfigurationRecord
logger.js:82 [FLVDemuxer] > Found another AVCDecoderConfigurationRecord!
Log.w @ logger.js:82
logger.js:123 [FLVDemuxer] > Parsed AVCDecoderConfigurationRecord
2logger.js:123 [MSEController] > Received Initialization Segment, mimeType: video/mp4;codecs=avc1.640032
logger.js:82 [FLVDemuxer] > Found another AVCDecoderConfigurationRecord!
Log.w @ logger.js:82
logger.js:123 [FLVDemuxer] > Parsed AVCDecoderConfigurationRecord
logger.js:82 [FLVDemuxer] > Found another AVCDecoderConfigurationRecord!
Log.w @ logger.js:82
logger.js:123 [FLVDemuxer] > Parsed AVCDecoderConfigurationRecord
logger.js:82 [FLVDemuxer] > Found another AVCDecoderConfigurationRecord

排查经过

  1. 首先排查SRS录制是否有问题,在SRS官网查阅资料并录制flv没有相关配置。
  2. 通过视频解码查看视频文件是否损坏,排查发现视频并未损坏,并且通过VLC播放器可以正常播放。
  3. 找了一个其他的flv视频可以正常通过flv.js播放。
  4. 用其他在线播放flv的地址一个flv可以正常播放,另外一个还是无法播放,控制台输出信息一样。
  5. 后来在查阅flv相关资料,发现如下参数设置
    在这里插入图片描述
    两个视频区别为SRS录制的无音频,另外一个视频是两个流,一路视频流,一路音频流。

解决方式

尝试设置hasAudio参数为false,视频播放成功。

 if (flvjs.isSupported()) {
        const videoElement = document.getElementById(this.videoId);
        this.videoPlayer = flvjs.createPlayer({
          type: "flv", //类型
          isLive: true, //是否实时流
          hasAudio: false, //是否有音频
          hasVideo: true, //是否有视频
          url: this.videoUrl, //路径
          // segments: [], //多段播放
        });
        this.videoPlayer.attachMediaElement(videoElement);
        this.videoPlayer.load();
        this.videoPlayer.play();
 }

排查相关问题耗时1天,踩坑记录!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2042683.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Keepalived高可用集群--几个实验带你认识集群的坚实后盾

一、KeepAlived的发展 Keepalived起初是为LVS设计的,专门用来监控集群系统中各个服务节点的状态,它根据TCP/IP参考模型的第三、第四层、第五层交换机制检测每个服务节点的状态,如果某个服务器节点出现异常,或者工作出现故障&#…

神经串联式语音转换:对基于串联的单次语音转换方法的再思考 论文笔记

NEURAL CONCATENATIVE SINGING VOICE CONVERSION: RETHINKING CONCATENATION-BASED APPROACH FOR ONE-SHOT SINGING VOICE CONVERSION 笔记 发现问题: 在any-to-any的转换中,由于内容和说话人音色的解耦不足,导致源说话人的音色部分仍保留在转换后的音频中&#x…

Dom4j详细介绍

Dom4j 1.1 解析概览 将数据存储为XML格式后,程序化地访问这些数据变得至关重要。虽然Java基础的IO操作能够实现这一目标,但这一过程往往既复杂又繁琐,尤其是在处理大型文件或需要频繁读写操作的场景下。为了解决这些问题,开发者…

多条折线图修改图例以及自定义tooltip

在图例后面添加所有数据之和修改之后 series 中的name之后导致tooltip也加上了重新自定义tooltip,去掉总量统计 核心代码 监听数据改变计算总量修改name字段自定义 tooltip // 计算每条线的总和 const sum1 this.VALUE1.reduce((acc, val) > acc val, 0); co…

【python】在Python中读取和加解密PDF文件的详细教程与应用实战

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

Python酷库之旅-第三方库Pandas(082)

目录 一、用法精讲 341、pandas.Series.str.startswith方法 341-1、语法 341-2、参数 341-3、功能 341-4、返回值 341-5、说明 341-6、用法 341-6-1、数据准备 341-6-2、代码示例 341-6-3、结果输出 342、pandas.Series.str.strip方法 342-1、语法 342-2、参数 …

go语言源码解读之数据结构堆

概述 堆(heap),是一种计算中常用的数据结构。本文我们将探讨对的特性、实现细节以及实际应用场景。 基本概念 堆是一种特殊的完全二叉树。堆分为大顶堆与小顶堆。 大顶堆的特点是,父节点的值总是大于或等于其子节点的值。 小顶堆的特点是&#xff0c…

SocialFi新纪元:Match革新金融与社交的融合艺术

前言 Match在SocialFi领域的创新探索,或将金融与社交的融合艺术推向新的高度! SocialFi自带"爆点”属性,Web 3.0巨型流量池 统计数据显示,2023年第三季度,全球约有54亿人活跃在互联网上,而社交媒体领…

江协科技STM32学习笔记(第13章 WDG看门狗)

第13章 WDG看门狗 13.1 WDG看门狗 13.1.1 WDG简介 看门狗就是程序运行的一个保障措施,我们得在程序中定期地喂狗,如果程序卡死了,没有在规定的时间里喂狗,那么看门狗硬件电路就会自动帮我们复位一下,防止程序长时间…

<keep-alive> 一分钟了解

<keep-alive> 一分钟了解 <keep-alive> 是 Vue.js 提供的一个抽象组件&#xff0c;它的主要用途是在页面或组件切换时保留其状态&#xff0c;避免重复执行昂贵的渲染操作&#xff0c;从而提升应用性能。 文章目录 <keep-alive> 一分钟了解 一、 <keep-ali…

Ubuntu如何实现每天定时关机

要在Ubuntu中实现每天定时关机&#xff0c;你可以使用cron来安排定时任务。以下是具体的步骤&#xff1a; 步骤 1: 创建脚本 打开终端。使用文本编辑器创建一个新的文件。例如&#xff1a; nano ~/shutdown_script.sh 步骤 2: 编写脚本 在编辑器中输入以下内容&#xff1a…

华府便利店信息管理系统

TOC springboot239华府便利店信息管理系统 绪论 1.1 研究背景 当前社会各行业领域竞争压力非常大&#xff0c;随着当前时代的信息化&#xff0c;科学化发展&#xff0c;让社会各行业领域都争相使用新的信息技术&#xff0c;对行业内的各种相关数据进行科学化&#xff0c;规…

花四小时,写了个在线实时绘制等值面图小软件,明晚上线,喜欢的小伙伴关注哦

科研党的福音&#xff0c;绘图再也不需要安装一堆软件了&#xff0c;可以在线绘图了&#xff1b; 只需要传入绘制的区间、色值、以及所需要绘制的数据就可以直接出图了&#xff0c;可绘制各种等值面图&#xff0c;比如降水分布&#xff0c;高温分布&#xff0c;人口分布&#x…

文心快码真的很好用!!!

最近被身边的好友安利到了一个百度的新产品文心快码&#xff08;comate&#xff09;&#xff0c;没想到体验下来真的很好用&#xff0c;非常容易上手&#xff0c;解放了我的双手&#xff0c;提高了代码生产力&#xff01;可能有很多小伙伴不知道怎么使用comate,而我作为这类工具…

C语言-将n个数输入时顺序的逆序排列,用指针函数实现

一、题目要求&#xff1a; 将n个数输入时顺序的逆序排列&#xff0c;用指针函数实现 二、程序: #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> int main() {int n;printf("请输入一共有多少数:\n");scanf("%d", &n);int arr[100], i;…

大模型之二十五-人工智能新纪元

人类社会正式从信息科技时代步入了人工智能时代&#xff0c;相比信息科技革命&#xff0c;人工智能科技革命的影响要深远的多&#xff0c;在这新旧交替剧烈变革期&#xff0c;绝大多数人都有机会。 为了更好的理解人工智能科技革命&#xff0c;首先我们首先梳理一下技术的发展…

使用VNC-viewer对树莓派5 远程连接桌面—详细记录笔记版

树莓派5 的远程桌面连接&#x1f680; 在完成了对树莓派镜像的安装&#xff0c;以及点亮了屏幕之后&#xff0c;接下来就是为开发做一些准备&#xff0c;就是配置树莓派5的远程的桌面的操作&#xff0c;因为如果不这样的话&#xff0c;我在PC上和树莓派系统上分别进行作业的时候…

了解数据库中常用存储引擎数据结构(2)

目录 深入了解B树及其变种 BTree BTree B*Tree BTree并发机制 B-Link Tree 深入了解B树及其变种 先把我们要解释的B树变种都列出来&#xff0c;B树的变种主要有B树、B*树、B-Link树、COW B树、惰性B树、Bw树等。 下面具体来分析这些变种的优势和发展趋势。 BTree 下图…

C语言整数溢出的问题

补漏&#xff1a; 昨天我在开头提到-1的二进制如何表示&#xff0c;我在这里简单分析一下。 首先我们要明白有符号的数转换是需要补码的&#xff0c;所以我们想这个问题之前将补码的规则思考一遍&#xff08;首先将有符号的首位保留&#xff0c;后面几位取反后加一&#xff0…

数据结构初阶——算法复杂度超详解

文章目录 1. 数据结构前言1. 1 数据结构1. 2 算法 2. 算法效率2. 1 复杂度的概念 3. 时间复杂度3. 1 大O的渐进表示法3. 2 时间复杂度计算示例3. 2. 1 示例13. 2. 2 示例23. 2. 3 示例33. 2. 4 示例43. 2. 5 示例53. 2. 6 示例63. 2. 7 示例7 4. 空间复杂度4. 1 空间复杂度计算…