问题标签 [mediastreamsource]

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 投票
1 回答
787 浏览

silverlight-4.0 - Internet Explorer 9 Silverlight 4 内存泄漏

我们正在将视频从实现 IHttpAsyncHandler 的 ashx 流式传输到 Silverlight 客户端。

在客户端,异步处理程序正在 MediaStreamSource 的实现中使用。

它在最新的 Firefox、chrome 和 Internet Explorer 8 中运行良好。

但是在 Internet Explorer 9 中,我们看到了内存泄漏。我一直在使用 umdh 来调试内存,并找到了一个调用堆栈,它在内存转储之间使用了 127mb。所以我想我已经把它缩小到这个调用堆栈。

但现在我不知道现在继续我的调试。这是 umdh 信息:

首先是第一次和第二次的比较

第二次运行调用栈

0 投票
1 回答
1708 浏览

c# - 如何使用 MediaStreamSource 播放原始广告 AAC 流?

有人有这个工作吗?我相信我的 CodecPrivateData 搞砸了,但我找不到任何似乎有效的 WAVEFORMTEX FormatTags。我尝试了 0xFF00、0x1016 和 0x0116。我使用 MSDN 文档来完成字符串的其余部分。

我在 MMReg.h (WAVE_FORMAT_MPEG_ADTS_AAC 0x1600) 中找到了这个,它有一个 FormatTag(0x0016)。你会认为这是我应该使用的,但这也不起作用。

使用 0xFF 时,如果我避免重复调用流 GetSampleAsync 中的 adts 标头但没有播放。我知道流很好,因为我可以在 FooBar、VLC 和 Window Media Player 中播放它。当我将原始 AAC 粘贴到 MP4 容器中时,它在 silverlight 中运行良好,所以我知道 silverlight 支持 AAC 设置。

有人可以为我提供一个对他们有用的十六进制 CodecPrivateData 字符串吗?

编辑:

这是我认为应该工作的 PrivateCodecData 十六进制字符串的示例:

0x1016010080BB0000E02E0000010000000E000100FE0000000000000000001190

这个字符串直接从 OpenMediaAsync() 到 CloseMedia() 甚至没有尝试样本。MSDN 文档示例执行与此处相同的操作。我希望它至少在关闭之前尝试一个样本。

0 投票
2 回答
865 浏览

html - HTML 5:关于流和 Chrome

对不起,我的英语很差,所以请注意我的拼写:)

我正在寻找一个 HTML5 的录像机,我发现我对 HTML5 的 getUserMedia 很满意。

问题是getUserMedia要求用户MediaStream在界面上激活(对于 webRTC)Chrome's:chrome://flags/

我的问题是:是否可以通过在 javascript 中使用类似 urlchrome::/flags/mediastream=true或类似函数的方式询问用户来激活此选项setUserMedia

谢谢

0 投票
1 回答
168 浏览

windows-phone-7 - WP7 mp3 波形

有没有办法在 WP7 中显示 mp3 歌曲的波形?我尝试使用 MediaStreamSource,但没有真正解决。

谢谢, 迈克尔

0 投票
1 回答
1309 浏览

silverlight - 从私有数据中查找 SPS 和 PPS

我有网络服务,它为我提供了包含 H.264 NAL 单元的自定义格式的容器。我想使用自定义 MediaStreamSource 通过 Silverlight 中的 MediaElement 播放它们。

根据这篇文章,我需要设置私有编解码器数据。Web 服务为我提供了 configCodec,但采用 base64 格式(看起来像“AUIAHv/hABhnQsAe2gMg7+IhAAADAAEAAAAMAMo8WLqABAARozgvI”)

因此,在其他平台(iOS、Android)中,我需要的只是设置为编解码器的额外数据属性。

但在 Windows Phone 中,我应该提供类似 00000001 [SPS] 00000001 [PPS] 这样的信息。那么,有人可以告诉我如何解析来自 Web 服务的提供的私有数据以从中获取 SPS 和 PPS 值吗?

0 投票
1 回答
685 浏览

silverlight - 同步音视频

我需要在 Windwso Phone 应用程序中使用 MediaElement 显示流视频。

我从 web 服务获取一个流,其中包含 H264 格式的帧和原始 AAC 字节(奇怪,但ffmpeg只能使用参数解析-f ac3)。

因此,如果尝试仅播放其中一个流(音频或视频),它会播放得很好。但是我在尝试两者时都有问题。

例如,如果我报告没有时间戳的视频样本并报告带有时间戳的音频,我的视频播放速度会比我需要的快 3 到 5 倍。

从我的网络服务中,我获得了以下格式的视频和音频帧的 DTS 和 PTS:

120665029179960

但是当我将它设置为样本时,我的音频流播放速度太慢并且有延迟。

时基为 90khz。

那么,有人可以告诉我如何解决它吗?也许我应该为样本计算其他时间戳?如果是这样,请给我指路。

谢谢。

0 投票
0 回答
565 浏览

c# - 在进程之间发送消息

我正在创建一个带有背景音频播放器的应用程序。根据 MS 的要求,播放器被实现为一个单独的 DLL,并存在于另一个进程中。

我可以通过更新BackgroundAudioPlayer.Instance.Track对象将曲目名称传回我的 UI 进程。

但是,我希望我的 UI 也报告我的下载缓冲区的状态。

我可以在 WP7 上使用什么 IPC 方法来通知我的 GUI 进程?

更新:我考虑使用 4 个命名手动重置事件来传递 4 位数据 - 失败,WP7 仅支持仅适用于同一进程内的线程同步的未命名事件。

我考虑过 System.Windows.Messaging - 失败,SendCompletedCallback 引发“LocalMessage_CouldNotDeliverMessage”,并且文档说 WP7 不支持本地消息传递。

到目前为止,我只知道一种方法 - 将文件写入隔离存储,并使用命名互斥锁保护它们。我真的不想因为这样做而耗尽 NAND 闪存。有没有更好的方法?WP7 下面有 WinCE 内核,它有很多可用的方法——邮槽、LPC、RPC、COM、管道、共享内存等等——我不敢相信它们都没有暴露给 Silverlight……

0 投票
0 回答
248 浏览

windows-phone-7 - WP7 Background Audio - Memory Leak or Not?

I'm creating an app that plays background audio.

Here's the RAM usage of my background audio playing process:

MSS-Memory.png

Is this a memory leak or no?

I'm concerned because if / when it exceeds 15MB, the OS will silently kill my player, which is undesirable.

Is there a way to view what occupies that memory? My MediaStreamSource implementation only allocates single 512kb buffer on the startup, and never allocates a single byte while playing. BTW, the stream bitrate is 96 kbit/sec, which is the same as memory allocation rate of the app.

Is there a way to make the GC to be less lazy, and sleep for less then 8 minutes? I don't really like those spikes…

Update 2013-04-21: looks like some OS update (most likely the 7.8) has fixed the issue. Thanks for that, Microsoft! However, next time please note it in the update history :-)

0 投票
0 回答
241 浏览

media - 公共保管箱链接上的 mediastreamsegmenter 不起作用

我的保管箱公共链接中有一个可流式传输的网址: https ://dl.dropboxusercontent.com/1/view/taf4hn5q1lbppmx/Public/01Track1.mp3

我想将其流式传输到我的 ios 设备,因此我阅读了 Apple 的 HTTP Live Streaming 文档。

所以,我正在尝试使用 mediastreamsegmenter 来获取 .m3u8 格式的索引文件。

上面给了我一个无效的端口错误,所以我列出了:8080 并尝试了,但它仍然不起作用。

mediastreamsegmenter 是否适用于 https/TCP?还是仅使用 UDP?我在哪里错了?

0 投票
0 回答
651 浏览

c# - 在 Silverlight (Windows Phone) 上播放 AAC 原始数据时出现问题

我需要播放来自实时流的 AAC LC 音频。为了实现这一点,我已经实现了 MediaStreamSource。

当我收到第一个流数据包时,我将 MediaElement 的源设置为我的 MediaStreamSource。似乎一切正常:调用 OpenMediaAsync -> 使用 ReportOpenMediaCompleted 报告,然后调用 GetSampleAsync -> 使用 ReportGetSampleCompleted 报告,但是,在第 10 次调用 GetSampleAsync 时,ReportGetSampleCompleted 抛出 NullReferenceException。

这是我的 CodecPrivateData:

流的第一个数据包始终是 AACSequenceHeader - 我在其中读取我的 CodecPrivateData 和 AudioSpecificConfig。其余的都是 AACraw。

我的 CodecPrivateData 看起来像 FF00020044AC000010B102000400100002001210.

我的 GetSampleAsync

这里的问题是我不知道任何时间戳,也不知道这是否是个问题。

最后,什么是Data场?Data字段包含Byte[]我从 AudioTag 中提取的所有接收到的 RawAAC 音频。E.4.2.2 AACAUDIODATA(参见http://download.macromedia.com/f4v/video_file_format_spec_v10_1.pdf