如何使用Media Foundation将RTP H.264有效负载转换为可播放文件

时间:2014-09-08 05:29:26

标签: c# video ms-media-foundation

我需要一种能够使用托管媒体聚合 - https://net7mma.codeplex.com/从H.264 RTPFrames(Payload Type 96)制作视频文件的方法。

我正在尝试在托管代码中使用媒体基础。

我看到http://mfnet.sourceforge.net/,但我找不到怎么做。 我看到有人在某个论坛中说过最好在C#托管代码中使用Media Foundation dll。

有没有人有这方面的经验?

修改

我试图使用VLCDotNet将h264帧放入视频文件 - 这是我的代码

private void StoreFile()
{

    Vlc.DotNet.Core.VlcContext.LibVlcDllsPath = @"C:\Users\Ofek\Desktop\VideoLAN\VLC";
    Vlc.DotNet.Core.VlcContext.Initialize();

    media1 = new Vlc.DotNet.Core.Medias.LocationMedia("rtsp://192.168.30.11/1.mkv");         

    media1.AddOption(":sout=#transcode{vcodec=theo,vb=800,
    scale=1,acodec=flac,ab=128,channels=2,samplerate=44100}:std{access=file,mux=ogg,
    dst=D:\\123.mp4}");

    VlcControl control = new VlcControl();
    control.Media = media1;
    control.Play();
}

问题是文件已创建,但无法播放。 我正在寻找命令将H264流保存到mp4文件而不用解码它。 任何想法?

1 个答案:

答案 0 :(得分:0)

尝试在后台播放流作为一个过程。

Process vlc;
vlc = Process.Start("C://Program Files//Videolan//VLC//VLC.exe", "rtsp://192.168.30.11/1.mkv\" --qt-start-minimized --sout=#transcode{vcodec=theo,vb=800,acodec=flac,ab=128,channels=2,samplerate=44100}:file{dst=C://folder//filename.mp4,no-overwrite}");
Thread.Sleep(9000);
vlc.kill();