问题标签 [smooth-streaming]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2247 浏览

android - Chromecast 媒体主机状态错误

我正在尝试使用 Google 提供的修改后的示例应用程序来重现 MPEG DASH、HLS 和 HSS(HTTP SmoothStreaming)流,但目前只有 DASH 正在工作。我使用: https ://github.com/googlecast/cast-custom-receiver 和 https://github.com/googlecast/CastVideos-android

正如我在这里看到的https://developers.google.com/cast/docs/player?hl=en所有协议(HSS、HLS、DASH)都应该可以正常工作。

当我尝试流式传输 HSS 和 HLS 时,我在 Sample Media Receiver HUD 中得到了这个:

媒体元素状态:“错误”(或“中止”)。. . 主机状态:“致命错误:代码 = 1”

有谁知道那个错误代表什么? 此外,有时我会收到此“致命错误:代码 = 0”。

//更新

当我尝试投射 HSS 时出现此错误:[2648.568s] [cast.receiver.MediaManager] 加载元数据错误 cast_receiver.js:19 并且链接是:http: //video3.smoothhd.com/ondemand/Turner_Sports_PGA.ism /显现

//更新

HLS 现在正在工作。通过设置 CORS 标头解决了问题。

0 投票
1 回答
301 浏览

google-cast - ChromeCast 平滑流式传输

我想创建一个流式传输 ism 文件的应用程序。

我按照这些说明使应用程序正常工作: https ://developers.google.com/cast/docs/player

但是视频仍然出现在我的屏幕上,我只想在全屏模式下在电视上流式传输视频。

有什么方法可以修改我想要的这个样本吗?

非常感谢!

0 投票
2 回答
1469 浏览

google-cast - ChromeCast TTML 隐藏式字幕与平滑流和 PlayReady

嗨!

我想创建一个支持 TTML 类型隐藏字幕的应用程序。

我的 ism/manifest 文件包含基于 TTML 的隐藏式字幕,请问我该如何使用它?

我找到了这个网站, https://developers.google.com/cast/docs/player ,他们在其中描述了以下内容:

分段 TTML 和 WebVTT

使用分段 TTML 进行平滑流式处理和 WebVTT - HLS 的 Web 视频文本轨道。

启用:

protocol_.enableStream(streamIndex, true); player_.enableCaptions(true);

但我找不到我的问题的例子。在接收方创建主机后是否必须启用此功能?是否有任何示例应用程序?

更新#1

这是我的代码:

它不起作用。所以我决定获取流:

streamCount 包含 0。清单包含隐藏式字幕,我应该使用其他东西,而不是 getStreamCount()?

非常感谢!

0 投票
2 回答
650 浏览

google-cast - Chromecast 将 TTML URL 添加到 Smooth Stream 清单

我想在我的接收器应用程序中使用 TTML 字幕 URL 更新 SmoothStreaming chromecast 播放器。我的清单文件从一开始就不包含这个 URL,所以我需要添加它:

我在播放器启动并将元数据加载到媒体元素后立即执行此操作(如其他帖子中所建议的那样),但是在查看

我只得到两个流:一个用于视频,一个用于音频。我在那里看不到任何字幕的迹象。我还尝试覆盖主机对象中的清单信息(这适用于许可证 url):

但是在我调用 enableCaptions 函数之前不会调用此函数(并且仅在我添加第三个参数时才调用,此时第三个参数是不必要的,因为它被 updateCationsRequestInfo 函数覆盖)。

有谁知道如何检查字幕请求是否在某处被接受或拒绝,以及如何处理?最好不要使用 updateCationsRequestInfo(),因为这样我就可以在播放期间更改字幕。

问题可能是 url 看起来不像 ttml 链接(它是通过转换器传递的另一种格式)?

感谢您的帮助!

关于 CORS 的更新:

我在调用 player.enableCaptions() 之前记录了 ttml-url,如果我跟随 url,我会得到 ttml 文件(响应标题:Content-Type:text/xml 和一些与 CORS 相关的标题)。在谷歌开发工具中,我看不到任何与 player.enableCaptions() 相关的内容,没有错误或成功消息。所以它与 CORS 问题无关。

0 投票
1 回答
852 浏览

c++ - 带有平滑流格式 SDK 的 HLS over IIS

我正在尝试通过 IIS 运行 HLS,通过 Silverlight 进行平滑流式处理可以正常工作,但 HLS 不行。我有的:

  • 启用了 HLS 支持的新实时平滑流媒体发布点;
  • 通过平滑流格式 SDK 连接发布点并在实时模式下将 H264 样本发送到 IIS。
  • IIS 创建 *.ismv、*.ism 和空 *.m3u8
  • Silverlight 上的平滑流式传输运行良好。

问题是没有创建 *.ts 文件并且 m3u8 文件也是空的,这就是 HLS 不起作用的原因。事件查看器中没有错误或警告。

注意: *.ismv 可以通过转换管理器 IIS 扩展名转换为具有所有必要清单的 *.ts 文件,这意味着(我想)H264 流是可以的。

0 投票
1 回答
825 浏览

video - 场景剪辑检测和一致的 GOP 大小 - 自适应流

示例命令:

-map 0:0 -f mp4 -vcodec libx264 -preset slow -profile:v main -vf scale="640:trunc(ow/a/2)*2" -vb 700k -minrate 650k -maxrate 750k -bufsize 10000k -an -g 48 -x264opts keyint=48:min-keyint=10:scenecut=40 -flags +cgop -sc_threshold 40 -pix_fmt yuv420p -threads 0 -y

编码没有错误,但我想了解以下几点-

1)上面的命令会保证GOP大小的范围是{10,48},如果任何场景变化值(frame1到fame2)>40%,那么那里引入了关键帧?

2) 这意味着在 3 小时的源视频中,不能保证 GOP 大小将保持不变

3) 不考虑,我正在创建 7 个 MP4 文件,每个文件具有不同的比特率和分辨率。(这些 Mp4 将在后期进行编码以进行平滑处理)。因此,我的目标是自适应流媒体。但是当我这样做时,我发现如果 GOP 大小在每个比特率之间不一致。我的意思是,例如:如果在 Bitrate1 - GOP 大小像 10、20、48 等等,在其他比特率中它不是相同的序列。我希望我的问题是有道理的。

那么有没有一种方法可以确保 GOP 的大小可能会因单个输出而异。但如果源相同,它应该在每个比特率上保持一致吗?

也适用于自适应流 场景切换检测是否可取?

0 投票
0 回答
455 浏览

media-player - Google Cast Media Player:重定向后平滑流清单中的 url 解释

我正在使用 //developers.google.com/cast/docs/reference/player/ 0.5 版

我正在尝试在 chromecast 设备上使用平滑流。

获取清单时,服务器会进行重定向(带有 Location 标头的 http 302)

例如从 //example.com/one/manifest.ism/Manifest 到 //example.com/two/manifest.ism/Manifest

在来自第二个 url 的清单中,存在 url 属性: Url="QualityLevels({bitrate})/Fragments(video={start time})

显然,这个 url 被播放器解释为相对于原始 url (/one) 而不是重定向的 url (/two)

我查看了流畅流清单的规范(//www.bogotobogo.com/VideoStreaming/Files/iis8/MS-SSTR.pdf),但没有说明清单中的这个 url 应该如何解释。

我希望它应该是相对于最后获取的 url 的位置(相对于 /two/)而不是(相对于 /one/)

任何人都知道这是否是来自谷歌的媒体播放器库(//developers.google.com/cast/docs/reference/player/)中的问题或预期行为?

谢谢!

0 投票
2 回答
1415 浏览

chromecast - Chromecast 发件人作为 PlayReady 许可证提供者

假设我们有一个加密流(SmoothStreaming + Playready)和一个基于googlecast/cast-custom-receiver构建的自定义接收器。

我可以看到该设备试图从LA_URL(许可证获取 URL)获取许可证 - 从流 PlayReady ProtectionHeader中提取。

我想知道有没有办法覆盖这种行为?我希望接收者将许可证获取委托给发送者 - 在我的情况下是 iOS 应用程序。

0 投票
2 回答
1042 浏览

encryption - 对于 AES-128 CTR 模式,将 64 位 IV 放在 128 位计数器块中的位置,以 PIFF 格式

这些文件似乎没有提供答案..

微软试图清楚地解释这个主题,但仍然模棱两可。至少在我们的情况下。

我们有一个加密的 MP4 流。它包含“SampleEncryptionBox”es 或“PIFF”框,其中包含用于加密块的 8 字节 = 64 位初始化向量。但是:用于解密“AES-128 计数器模式”加密视频数据的实际“计数器块”是128-bit。我不知道到底把IV放在哪里!!

  • PIFF 文档说 16 字节 IV 是 AES-CTR 模式的整个计数器块(显然)。此外,对于AES-ECB 模式(第 17 页),将 8 字节 IV 放在计数器块的开头。但是对于AES-CTR 模式下的 8 字节 IV,它什么也没说!

  • 这个 RFC 文档说 128 位应该包括 4 字节 Nonce + 8 字节 IV + 4 字节计数器。Nonce 值应取自为主 128 位 AES 密钥提供的额外 4 个字节。我只能通过 Protection Header 获得 128 位的密钥,我应该从哪里获得 4 字节的 Nonce?

任何一点额外的知识都将受到高度赞赏。

0 投票
0 回答
360 浏览

apache - Apache 上的 Microsoft SmoothStreaming 视频?

我使用带有平滑流多路复用器的 ffmpeg 以及通过 ismindex 实用程序(包含在 ffmpeg 源中)创建了我认为是有效的平滑流输出。

我正在尝试使用像 Apache 这样的标准 Web 服务器,而不是 IIS 及其 SS 扩展。输出是分段的内容(每个片段都被分割成自己的文件),所以理论上这是可能的。现在是我遇到的第一个问题。

如何使用例如 Window Phone 8 测试结果?我尝试从 I.Explorer 打开 index.ism url,但无法识别扩展 ism 和 mime 类型(application/vnd.ms-sstr+xml),并且 I.Explorer 只是转储 xml 而不是打开媒体播放器。当单击(HLS)index.m3u8 URL 时,我正在等待与 Android/iOS 类似的行为。在这种情况下,浏览器/操作系统会检测到扩展并打开播放器。

提前感谢您的任何帮助、提示或链接!