首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >不适用于苹果设备的HLS流

不适用于苹果设备的HLS流
EN

Stack Overflow用户
提问于 2015-10-25 02:51:05
回答 1查看 6.6K关注 0票数 5

我有一个实时RTSP流,我已经设法通过VLC将其转换为HLS。现在,它在Android和桌面浏览器(通过闪存)上运行得很好。

但在苹果上不行(我可以在iPad和虚拟机上的桌面Safari上进行测试)。我可以看到播放器,但当我按下“播放”按钮时,我看到的只是播放器内的一个黑色矩形。在桌面Safari上也有一个文本“加载.”靠近播放/暂停按钮,其他任何事情都不会发生。

我的HTML:

代码语言:javascript
运行
AI代码解释
复制
<video id="player" controls style="width:100%; height:100%">
  <source src="http://178.79.164.114/playlist.m3u8" type="application/x-mpegURL">
</video>

vlc的命令:

代码语言:javascript
运行
AI代码解释
复制
vlc -I dummy rtsp://<stream-url> --sout '#transcode{width=320,height=240,fps=25,vcodec=h264,vb=256,acodec=none,venc=x264{aud,profile=baseline,level=30,keyint=30,bframes=0,ref=1,nocabac}}:std{access=livehttp{seglen=10,delsegs=true,numsegs=5,index=/path/to/server/directory/playlist.m3u8,index-url=http://178.79.164.114/seg-########.ts},mux=ts{use-key-frames},dst=/path/to/server/directory/seg-########.ts}'

以及播放列表文件的示例:

代码语言:javascript
运行
AI代码解释
复制
#EXTM3U
#EXT-X-TARGETDURATION:10
#EXT-X-VERSION:3
#EXT-X-ALLOW-CACHE:NO
#EXT-X-MEDIA-SEQUENCE:179
#EXTINF:9.60,
http://178.79.164.114/seg-00000179.ts
#EXTINF:9.60,
http://178.79.164.114/seg-00000180.ts
#EXTINF:9.60,
http://178.79.164.114/seg-00000181.ts
#EXTINF:9.61,
http://178.79.164.114/seg-00000182.ts
#EXTINF:9.59,
http://178.79.164.114/seg-00000183.ts

这是ffprobe http://178.79.164.114/playlist.m3u8的奇怪输出(为什么有这些N/A,而variant_bitrate是0?)。也许它能帮上忙:

代码语言:javascript
运行
AI代码解释
复制
Input #0, hls,applehttp, from 'http://178.79.164.114/playlist.m3u8':
  Duration: N/A, start: 3995.330722, bitrate: N/A
  Program 0 
    Metadata:
      variant_bitrate : 0
    Stream #0:0: Video: h264 (Constrained Baseline) ([27][0][0][0] / 0x001B), yuv420p, 320x240 [SAR 11:12 DAR 11:9], 25 fps, 25 tbr, 90k tbn, 50 tbc

我还为.m3u8和.ts文件配置了正确的MIME类型,并花了一天时间搜索和尝试不同的代码命令选项:宽度、高度、比特率、fps、不同的配置文件和级别.-什么都不管用。但如果我尝试一下苹果(http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8)的一些例子,一切都很好,尽管这不是一个实时流。

如果有人有任何想法或有可能测试我的流与mediastreamvalidator -请帮助。

更新

现在我正在尝试各种不同的播放列表,但没有什么改变。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-30 02:14:15

玩家可能会期待被屏蔽的视频和音频,所以添加一个无声的音频轨道。

Apple HLS文档说:

媒体段文件通常由流段器根据编码器的输入产生,并由一系列.ts文件组成,其中包含包含H.264视频 AAC、MP3或AC-3音频的MPEG-2传输流的片段。

技术说明TN2224中提到了对仅音频流的支持,该协议的第7次修订版引入了对替代呈现的支持(未修改的流),但这是通过主播放列表中的EXT-X-MEDIA标记来实现的,主播放列表控制播放(您的是媒体播放列表)。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33328829

复制
相关文章
RavenDB文档建模--琐碎的注意事项--并发控制
RavenDB 每秒能处理数十万的请求,这是因为它本质上是并发的。那么这就引出了并发问题,如果有多个请求同一时间同时修改同一个文档,就会出现最后一个被执行的请求将会获胜,它的修改内容将被保留在文档中。在 RavenDB 中 last write wins 模型是默认选项,这个模型出现在对文档的修改和删除的情况下,在创建文档时是不会执行这个模型规则的,因为 RavenDB 它知道请求是要创建一个新文档,并会设置预期的更改向量。
喵叔
2022/04/17
2430
并发-MySQL乐观锁
商城有种商品仅剩一个库存,用户A的下单请求进入到后端接口,由于用户A的网络环境不太好,导致请求卡死,此时用户B也进入下单页面,由于用户A网络环境不好,并没有执行减库存操作,用户B查询到的库存也是1,那么用户B点击下单按钮,最终剩余一个库存却下单成功了两次,我们需要使用技术手段解决业务上的问题,即:保证不同线程请求进来,当前线程操作的数据没有被其他线程修改过。
关忆北.
2022/05/05
1.1K0
浅谈 Java 并发下的乐观锁
我们知道,原子(atom)指化学反应不可再分的基本微粒。在 Java 多线程编程中,所谓原子操作,就是即使命令涉及多个操作,这些操作依次执行,不会被别的线程插队打断。
程序员小猿
2021/01/19
3890
MongoDB事务的使用
MongoDB 是一种文档数据库,支持对文档进行原子性操作,但对于跨文档事务的支持一直较弱。从 MongoDB 4.0 开始,它支持了多文档事务,使得开发者可以在 MongoDB 中使用 ACID 事务。
玖叁叁
2023/04/14
2K0
SqlSugar利用“事务+乐观锁+version”解决并发下的数据一致性问题
1. 数据库建表 CREATE TABLE dbo.Test ( tId INT IDENTITY NOT NULL , tName NVARCHAR (20) NOT NULL , tSalary DECIMAL (8, 2) NULL , tTimeStamp TIMESTAMP , PRIMARY KEY (tId) ) 2. 创建类 public partial class Test { [Su
皇上得了花柳病
2020/05/04
2.5K0
ElasticSearch并发操作之乐观锁的使用
绍了关于ES嵌套索引的增删改,本篇就接着上篇主题继续深入聊一下,上篇的添加和更新操作,其实是不安全的,所有的数据库db系统都会存在并发问题像关系型数据库MySQL,Oracle,SQL Server默认采用的是悲观锁。 在ElasticSearch中采用的乐观锁,下面先熟悉下什么是乐观锁和悲观锁: 悲观锁(Pessimistic Lock), 顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。传统的关系型数据库里边就用到
我是攻城师
2018/05/14
1.7K0
聊聊ElasticeSearch并发写的乐观锁机制
ES的老版本是用过_version字段的版本号实现乐观锁的。现在新版增加了基于_seq_no与_primary_term字段,三个字段做乐观锁并发控制。
Ryan_OVO
2023/10/19
5900
聊聊ElasticeSearch并发写的乐观锁机制
并发控制中的乐观锁与悲观锁
具有排它性(我锁住当前数据后,比人看不到此数据),悲观锁一般是由数据库机制来做到的。
小狐狸说事
2022/11/17
3680
并发控制中的乐观锁与悲观锁
在多用户环境中,在同一时间可能会有多个用户更新相同的记录,这会产生冲突。这就是著名的并发性问题。
Java后端技术
2018/08/09
5170
并发编程里的悲观锁和乐观锁
悲观锁是平时开发中经常用到的一种锁,比如ReentrantLock和synchronized等就是这种思想的体现,它总是假设别的线程在拿线程的时候都会修改数据,所以每次拿到数据的时候都会上锁,这样别的线程想拿这个数据就会被阻塞。如图所示:
java技术爱好者
2020/12/08
3300
并发编程里的悲观锁和乐观锁
浅谈ETag
为什么要使用Etag呢?Etag主要为了解决Last-Modified无法解决的一些问题
Java架构师必看
2021/03/22
1.4K0
MySQL是怎么读数据的——多版本并发控制
我在之前的文章中(【MySQL入门】之MySQL数据库的锁机制(一),【MySQL入门】之MySQL数据库的锁机制(二))介绍了MySQL的全局锁、表锁和行锁,今天我在来介绍下MySQL的一致性非锁定读、一致性锁定读。再说之前我们先思考个问题,当我们用mysqldump进行逻辑备份时,如果有事务对表进行修改操作,那么我们备份出来的数据是否包含修改后的数据呢?如果mysqldump备份出的数据不包含之后修改的数据,那么他又是怎么保存之前的数据的呢?
MySQL数据库技术栈
2020/08/04
7910
彻底理解Java并发:乐观锁与CAS
锁的一种宏观分类方式是悲观锁和乐观锁。悲观锁与乐观锁并不是特指某个锁(Java 中没有哪个 Lock 实现类就叫 PessimisticLock 或 OptimisticLock),而是在并发情况下的两种不同策略。
栗筝i
2022/12/01
6420
彻底理解Java并发:乐观锁与CAS
Java并发篇_乐观锁与悲观锁
总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁(共享资源每次只给一个线程使用,其它线程阻塞,用完后再把资源转让给其它线程)。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。Java中synchronized和ReentrantLock等独占锁就是悲观锁思想的实现。
栗筝i
2022/12/01
3180
探索JAVA并发 - 悲观锁和乐观锁
悲观锁认为一定会有人和它同时访问目标资源,因此必须先将其锁定,常见的synchronized和ReentrantLock等独占锁就是悲观锁思想的实现。
acupt
2019/08/26
5980
并发实战理解MySQL的锁(悲观锁+乐观锁)
首先简单介绍一下悲观锁和乐观锁: 悲观锁: 比较悲观,一旦加锁,自身增删查改,其他线程无法任何操作,不能与其他锁并存。加锁方式 for update 乐观锁: 比较乐观,认为其他线程不会修改数据,一旦加锁自身可以增删查改,其他线程只能读。加锁方式 lock in share mode 两种锁的的释放都在 commit或者rollback 之后,否则就会一直持有。
小明爱吃火锅
2023/09/30
6220
Cosmos DB的5种事物一致性
TP和AP最重要的区别就是事物。事务是指对系统进行的一组操作,为了保证系统的完整性,事务需要具有ACID特性,具体指原子性(Atomic)一致性(Consistency)隔离性(Isolation)持
大数据和云计算技术
2018/03/08
2K0
Cosmos DB的5种事物一致性
java并发编程实战(6) 乐观锁 CAS
在JDK 5之前Java语言是靠synchronized关键字保证同步的,这会导致有独占锁. 我们在系列java并发线程实战(1)线程安全和机制原理,已经提到例子,
黄规速
2022/04/14
1.1K0
java并发编程实战(6) 乐观锁 CAS
并发控制--悲观锁和乐观锁详解
两个用户同时修改商品库存表,A、B同时进入,看到的库存都是100,A购买一件把库存修改为99(100-1)。此时B购买两件把库存修改为98(100-2),因为A、B同时读到的库存都是100,B并不能看到A做的库存更新,所以造成B脏读,造成A丢失更新。
用户4283147
2022/10/27
3900
并发控制--悲观锁和乐观锁详解
并发控制--悲观锁和乐观锁详解
背景 考虑下面两个并发带来的问题: 1、丢失更新:一个事务的更新结果覆盖了其它事务的更新结果,即所谓的更新丢失。 2、脏读:当一个事务读取其它完成一半事务的记录时,就会发生脏读取。 例如: 两个用户同时修改商品库存表,A、B同时进入,看到的库存都是100,A购买一件把库存修改为99(100-1)。此时B购买两件把库存修改为98(100-2),因为A、B同时读到的库存都是100,B并不能看到A做的库存更新,所以造成B脏读,造成A丢失更新。 所以为了解决这些并发带来的问题。 我们需要引入并发控制机制--锁。
Java技术栈
2018/03/29
1K0

相似问题

Cosmos DB SQL API乐观并发控制etag的使用

21

Azure存储blob -使用Etag实现乐观并发

14

WEB乐观并发性使用ETag而不是TimeStamp

11

NHibernate中会话外的乐观并发

25

乐观并发

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文