我需要将视频流从MJPEG转到MP4,AVI或MKV格式。是否可以使用FFMPEG或VLC进行?我正在开发UWP Win10应用程序,并且没有很多包装。
编辑:我的代码
VLCPreview.Source = "http://Admin:123456@192.168.0.21:6021/cgi-bin/cmd/encoder?GET_STREAM";
/cmd/encoder?GET_STREAM
try
{
HttpClientHandler aHandler = new HttpClientHandler();
aHandler.Credentials = new NetworkCredential("Admin", "123456");
aHandler.ClientCertificateOptions = ClientCertificateOption.Automatic;
HttpClient aClient = new HttpClient(aHandler);
aClient.DefaultRequestHeaders.ExpectContinue = false;
//url get stream o web.Source
HttpResponseMessage response = await aClient.GetAsync("http://192.168.0.21:6021/cgi-bin/cmd/encoder?GET_STREAM", HttpCompletionOption.ResponseHeadersRead);//urlLinkToOnlineStream
Stream stream = await response.Content.ReadAsStreamAsync();
IInputStream inputStream = stream.AsInputStream();
ulong totalBytesRead = 0;
while (true)
{
// Read from the web.
IBuffer buffer = new Windows.Storage.Streams.Buffer(4096);
buffer = await inputStream.ReadAsync(buffer, buffer.Capacity, InputStreamOptions.None);
if (buffer.Length == 0)
{
break;
}
totalBytesRead += buffer.Length;
await fileStream.WriteAsync(buffer);
Debug.WriteLine("TotalBytesRead: {0:f}", totalBytesRead);
if (StopRec == true) { break;}
}
transcode(destinationFile, sampleFileVidTranscoded);
inputStream.Dispose();
fileStream.Dispose();
首先,UWP应用程序具有自己的命名空间Windows.Media.Transcoding
用于转码视频。有关如何转码媒体文件,请参考本文。官方示例提供了可以参考的MP4
,WMI
和AVI
的将媒体文件转码的示例。
其次,对于FFMPEG,它是一个免费的开源多媒体框架,其中包括一组工具,最终用户可以用于 transcoding ,流媒体和播放,以及一个一组库,供开发人员用于应用程序。因此,您可以将其用于转编码。幸运的是,目前有一个用于UWP的FFMPEG库,称为" FFMPECENTEROP"。您可以尝试通过Nuget Package FFMPeginterop.uwp 1.0.3使用它,并在Windows应用程序中使用FFMPEG参考更多详细信息。
对于VLC,还有一个适用于UWP的软件包,它是vlc.medialement。您可以通过参考此Nuget软件包访问此软件包。