在 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));
}
}
NowdataArrived
当数据从网络到达时被调用(这是一个实时流)。数据是有效的 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
是为此目的的错误选择?