Записать видеопоток с камеры в файл, используя VLC - PullRequest
0 голосов
/ 03 сентября 2018

Я использую VLC-упаковщик VLC.DotNet, libvlc 3.0.3 или 3.0.4 по ночам и пробую пример:

 static void Main(string[] args)
    {
        var currentDirectory = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);
        // Default installation path of VideoLAN.LibVLC.Windows
        var libDirectory =
            new DirectoryInfo(Path.Combine(currentDirectory, "libvlc", IntPtr.Size == 4 ? "win-x86" : "win-x64"));

        var destination = Path.Combine(currentDirectory, "record.mp4");

        using (var mediaPlayer = new Vlc.DotNet.Core.VlcMediaPlayer(libDirectory))
        {

            var mediaOptions = new[]
            {
                ":sout=file{dst=" + destination + "}",
                ":sout-keep"
            };

            mediaPlayer.SetMedia(new Uri("rtsp://192.168.x.xxx/ch1.h264"),
                mediaOptions);

            mediaPlayer.Play();

            Console.WriteLine($"Recording in {destination}");
            Console.WriteLine("Press any key to exit");
            Console.ReadKey();
        }
    }

Все отлично работает. Я вижу записанный файл в папке, но при изменении формата параметров мультимедиа файл не записывается ... F.E:

 var mediaOptions = new[]
        {
            ":sout=#transcode{vcodec=h264}:std{access=file,mux=ffmpeg{mux=flv}),file{dst=" + destination + "}",
            ":sout-keep"
        };

Журнал скриншот: enter image description here

Мне нужно кодировать потоковое видео с камеры в видеофайл H.264 mp4 с аудиофайлами в формате mp3 или AAC. Было бы здорово, если бы кто-нибудь помог мне с этим примером.

1 Ответ

0 голосов
/ 05 сентября 2018

Я изменил свои медиафайлы на:

var lowQualityMediaOptions = new[]
        {
            ":sout=#transcode{vcodec=h264,width=640,height=480,canvas-width=640,canvas-height=480,fps=4}:std{access=file,mux=ts,dst=" + lowQualityDestination + "}",
            ":sout-all"
        };

И все работает хорошо.

...