媒体元素显示 H264 比特流 [UWP]
Media Element Display H264 bitstream [UWP]
我正在开发一个可以播放流媒体视频的应用程序
我正在尝试在 MediaElement
中播放 h264 流媒体视频,但 MediaElement 仍然为空
我使用FFmpeg
作为视频源
ffmpeg -r 20 -f gdigrab -i desktop -f mpegts -vcodec libx264 udp://127.0.0.1:5555
在客户端 (UWP) 我使用 FFmpegInterop
库
正确检测到视频的编解码器和分辨率,但 MediaElement
不播放任何内容
我也尝试过使用 MJPEG,例如
ffmpeg -r 20 -f gdigrab -i desktop -f mjpeg -vcodec mjpeg udp://127.0.0.1:5555
一切正常。
RTSP 流也可以,例如来自 OBS studio,在这种情况下,编解码器定义为 h264
原来只能是发送端的问题?是否可以为此目的仅使用 UDP 协议?也许我错过了一些 FFmpeg 设置?
private async void MediaPlayer_Loaded(object sender, RoutedEventArgs e)
{
MediaPlayer.Loaded -= MediaPlayer_Loaded;
FFmpegInteropLogging.SetDefaultLogProvider();
FFmpegInteropConfig options = new FFmpegInteropConfig();
options.PassthroughVideoH264 = true;
options.SkipErrors = 1000;
options.PassthroughVideoHEVC = true;
options.PassthroughVideoH264Hi10P = true;
decoder = awaitFFmpegInteropMSS.CreateFromUriAsync("udp://127.0.0.1:5555",options);
var mediaStreamSource = decoder.GetMediaStreamSource();
mediaStreamSource.BufferTime = TimeSpan.FromSeconds(0);
Debug.WriteLine(decoder.VideoStream.CodecName);
MediaPlayer.MediaFailed += MediaPlayer_MediaFailed;
MediaPlayer.SetMediaStreamSource(mediaStreamSource);
MediaPlayer.Play();
}
设置 属性 VideoDecoderMode = VideoDecoderMode.ForceFFmpegSoftwareDecoder 解决了问题。
我正在开发一个可以播放流媒体视频的应用程序
我正在尝试在 MediaElement
中播放 h264 流媒体视频,但 MediaElement 仍然为空
我使用FFmpeg
作为视频源
ffmpeg -r 20 -f gdigrab -i desktop -f mpegts -vcodec libx264 udp://127.0.0.1:5555
在客户端 (UWP) 我使用 FFmpegInterop
库
正确检测到视频的编解码器和分辨率,但 MediaElement
不播放任何内容
我也尝试过使用 MJPEG,例如
ffmpeg -r 20 -f gdigrab -i desktop -f mjpeg -vcodec mjpeg udp://127.0.0.1:5555
一切正常。 RTSP 流也可以,例如来自 OBS studio,在这种情况下,编解码器定义为 h264
原来只能是发送端的问题?是否可以为此目的仅使用 UDP 协议?也许我错过了一些 FFmpeg 设置?
private async void MediaPlayer_Loaded(object sender, RoutedEventArgs e)
{
MediaPlayer.Loaded -= MediaPlayer_Loaded;
FFmpegInteropLogging.SetDefaultLogProvider();
FFmpegInteropConfig options = new FFmpegInteropConfig();
options.PassthroughVideoH264 = true;
options.SkipErrors = 1000;
options.PassthroughVideoHEVC = true;
options.PassthroughVideoH264Hi10P = true;
decoder = awaitFFmpegInteropMSS.CreateFromUriAsync("udp://127.0.0.1:5555",options);
var mediaStreamSource = decoder.GetMediaStreamSource();
mediaStreamSource.BufferTime = TimeSpan.FromSeconds(0);
Debug.WriteLine(decoder.VideoStream.CodecName);
MediaPlayer.MediaFailed += MediaPlayer_MediaFailed;
MediaPlayer.SetMediaStreamSource(mediaStreamSource);
MediaPlayer.Play();
}
设置 属性 VideoDecoderMode = VideoDecoderMode.ForceFFmpegSoftwareDecoder 解决了问题。