MemoryStream中的媒体不显示(或不播放)

问题描述 投票:0回答:1

在C#应用程序中,我通过NuGet包使用LibVLC。

我创建了一个MemoryStream并将其提供给Media:

MemoryStream buffer = new MemoryStream();
bool playing = false;

public void dataArrived(byte[] d) {
  buffer.Write(d, 0, d.Length);
  if (!playing) {
    playing = true;
    mediaPlayer.Play(new Media(LibVLC, buffer));
  }
}

现在dataArrived从网络到达数据时被调用(这是实时流)。数据是有效的mp4流(片段化,可以在HTML5视频中很好地播放)。

但是VLC没有显示它。在日志中,我看到很多有关预取的消息:

prefetch stream debug: end of stream

VLC可以读取和转储这些框,但是有一条消息(调试,不是错误!),这可能很有趣:

mp4 demux debug: unrecognized major media specification (iso5).

然后还有另一批有趣的消息:

mp4 demux warning: cannot select track[Id 0x1]
main input debug: EOF reached
main decoder debug: killing decoder fourcc `h264'
main decoder debug: removing module "avcodec"
main demux debug: removing module "mp4"
mp4 demux debug: freeing all memory
main input debug: Program doesn't contain anymore ES

LibVLC是否有一些技巧(配置),可以动态播放片段化的mp4(数据事先无法提供?

或者为此目的,MemoryStream可能是错误的选择?

c# vlc memorystream libvlc libvlcsharp
1个回答
0
投票

MemoryStream不是实时流的理想选择,因为它表示流的结尾,因为它不知道以后会添加新数据。

使用您自己的Stream实现或创建自己的MediaInput

[注意,您似乎使用的是LibVLCSharp的旧版本。较新的API并不直接使用Stream,而是需要MediaInput才能工作。

如果您设法使其正常工作,您想在LibVLCSharp上提交实时流示例吗?我们需要此功能。

© www.soinside.com 2019 - 2024. All rights reserved.