我在vb.net (winForms)中有一个应用程序,我想用视频和音频PID播放一个有效的TS。如果我使用应用程序本身的TCP/UDP协议对其进行流处理,它可以正常工作,但我想在不执行网络流的情况下完成它。
我看到这可以使用StreamMediaInput,但我不知道如何做。
我有这个:
Private Sub WriteStream(ByVal Data() As Byte, ByVal len As Integer)
'Data() array is the video TS (MPEG-2) (188 bytes len)
vlc_memorystream.Write(Data, 0, len)
End Sub将流传输到libvlcsharp是可以的,我如何才能直接将Data()数组传递给libvlcsharp?
谢谢。
https://github.com/videolan/libvlcsharp
编辑:
我能看到溪流把这条线放进潜艇里:
vlc_memorystream.Write(Data, 0, len)问题在于缓冲区。它很好地播放几秒钟,然后它停止播放。我怎么能处理这事?
发布于 2021-12-07 17:47:02
正如这里所解释的:294698,MemoryStream不会这样做,因为libvlc读取数据的速度比它们到达的速度要快,并且假设流已经完成。
您需要实现一个阻止Read()调用的Stream,直到数据可用(或者使用现有的Stream实现),或者为此使用您自己的MediaInput。
我在这里实现了这样的媒体输入:https://github.com/jeremyVignelles/libvlcsharp-nonfree-samples
https://stackoverflow.com/questions/70235466
复制相似问题