当前位置: 首页 > 知识库问答 >
问题:

我想通过视频js流式传输. m3u8格式的音频

李光华
2023-03-14

我正在开发一个可以流式传输. m3u8播放列表(HLS播放)中的音频流的项目。我正在为上述目的使用Videojs。当我使用. m3u8和(. ts)格式的视频时,一切都很顺利。这些流在所有主要浏览器中播放。代码如下:

<script src="video.js"></script>
<script src="videojs.hls.min.js"></script>
<script>
    //myPlayer is my object for videosjs
    myPlayer.src({
          type: "application/x-mpegURL",
          src:"a_valid_HLS_stream.m3u8"
    });
    myPlayer.play();
</script>

和html格式

<video id="myvideo"></video>

该代码适用于包含<代码>位的HLS。ts视频流。

现在,我的流提供程序通过给我更改了HLS流。m3u8中包含音频文件块的流。aac格式。因此,现在除了苹果设备中的safari之外,所有浏览器都可以播放这样的流。我知道HLS本机支持HLS播放,但因为videojs是为那些不支持本机播放的人提供的。

虽然我在代码中做了如下更改

<script>
    //myPlayer is my object for videosjs
    myPlayer.src({
          type: "application/x-mpegURL; audio/x-aac",
          src:"another_valid_HLS_stream.m3u8"
    });
    myPlayer.play();
</script>

并在html页面中

<audio id="myvideo"></audio>

我还尝试将src类型更改为应用程序/vnd.apple.mpegurl,这实际上是在. m3u8流的标题中设置的,但也没有运气。任何帮助都将不胜感激。


共有1个答案

贺博厚
2023-03-14

问题不在于客户端配置,而在于媒体容器。以. ts结尾的资源包含MPEG-TS容器内的媒体(音频/视频)流。. aac中的资源包含ADTS容器内的单个音频流。Videojs-contrib-hls不支持ADTS,客户端配置无关紧要。

使用ADTS而不是MPEG-TS可以减少百分之几的开销。这可能就是您的提供商转而使用它的原因。

IMHO您现在最好的选择是联系您的提供商,要求他提供MPEG-TS流,而不是ADTS流。

或者,您可以将此报告给Videojs-contrib-hls的开发人员,看看他们是否有兴趣实施此案例。

您的第三个选择是放弃videojs contrib hls,购买提供此功能的商业解决方案。Viblast Player是我有经验的解决方案。您可以在这里看到播放ADTS流的示例。

 类似资料:
  • http://www.strathweb.com/2013/01/Asynchronaly-streaming-video-with-asp-net-web-api/ 在实现一个示例项目后,我意识到该示例基于Web API1,而不是我正在使用的Web API2.1。在做了更多的研究之后,我得到了用WebAPI2.1编译的代码。然后我意识到,如果我想做流媒体,我不能使用MP4文件,这背后有相当多的技

  • 本文向大家介绍你知道有哪些常见的视频(音频)编码格式和视频(音频)格式吗?相关面试题,主要包含被问及你知道有哪些常见的视频(音频)编码格式和视频(音频)格式吗?时的应答技巧和注意事项,需要的朋友参考一下 视频:.ogg .mov .webp .avi .rmvb .mp4 音频:.mp3 .wav 只能想到这么多 webp?不是图片格式吗

  • 我现在正在Android上对一个h264字节流进行解码。流是从第三方产品发送的,我不太确定它的视频格式。该文件说,流由PPS和SPS NAL单位组成。但我接收到的h264字节流包括以0x00、0x00、0x00、0x01开头的序列,并且在我接收到的样本中,第5个字节可能是0x09、0x21或0x06。这让我兴奋了一段时间,因为它似乎与通常的0x67或0x68指示器不同。有人知道NAL单元头中的0x

  • 这里我有记录音频流文件的代码。问题是我想保存这个文件与正确的文件扩展名(主要是. mp3和. aac)。我该如何实现这一点?

  • 问题内容: 我在Node.js中使用流服务器来流MP3文件。虽然可以流式传输整个文件,但我不能使用标题将文件流式传输到起始位置并使用终止位置。 我使用like 从秒计算开始和结束字节 在这种情况下,这将为我提供从10秒到下一个第一个数据包的确切字节。 这在Node.js中变得如此简单 现在我有了开始和结束字节,我的媒体服务器将以这种方式从传递给它的自定义值中获取范围 此时,我将获得这个范围, 因此

  • 我试图用Twilio可编程视频构建一个解决方案,参与者之间的视频通话可以流式传输到(潜在的)数千个。据我所知,根据房间类型的不同,Twilio最多只能容纳50名参与者。有没有一种方法我可以以某种方式将所有参与者的视频/音频轨道“喂”到流媒体服务,如Wowza,TokBox等,并实现这一点?