Android сохраняет потоковое видео в реальном времени с помощью libvlc - PullRequest
0 голосов
/ 03 июня 2019

Я пытаюсь сохранить поток живого видео в хранилище в приложении Android с помощью libvlc.Я могу сделать это на ПК с командной строкой, и он работает нормально, я записываю файл и могу просмотреть его потом.

Но в приложении записываются файлы, размер которых составляет всего 151B, что, вероятно, пусто, и если я попытаюсьчтобы открыть его, я получаю сообщение «Невозможно воспроизвести этот видеоформат»

У меня такой вопрос: можно ли записать на Android-накопитель с помощью libvlc?

Я довольно новичок в программировании, поэтому любойпредложения помогут

    const string VIDEO_URL = "rtsp://184.72.239.149/vod/mp4:BigBuckBunny_175k.mov";

    public MainPage()
    {
        InitializeComponent();
        Core.Initialize();           
        using (var libvlc = new LibVLC())
        using (var mediaPlayer = new MediaPlayer(libvlc))
        {
            var media = new Media(libvlc, VIDEO_URL, FromType.FromLocation);
            var currentDirectory = "/storage/emulated/0/dcim/";
            var destination = Path.Combine(currentDirectory, "record4.mp4");

            // Define stream output options. 
            // In this case stream to a file with the given path and play locally the stream while streaming it.
            media.AddOption(":sout=#transcode{vcodec=h264}:std{access=file,dst=" + destination + "}");

            // Start recording
             mediaPlayer.Play(media);
        }
    }   

1 Ответ

0 голосов
/ 10 июня 2019

Медиаплеер должен быть остановлен для закрытия приложения. Вот временное решение. Обновлю его, как только у меня будет правильное решение.

   public partial class MainPage : ContentPage
{
    const string VIDEO_URL = "rtsp://184.72.239.149/vod/mp4:BigBuckBunny_175k.mov";

    public MainPage()
    {
        InitializeComponent();
        Core.Initialize();           
        using (var libvlc = new LibVLC())
        using (var mediaPlayer = new MediaPlayer(libvlc))
        {
            var media = new Media(libvlc, VIDEO_URL, FromType.FromLocation);
            var currentDirectory = "/storage/emulated/0/dcim/";
            var destination = Path.Combine(currentDirectory, "record7.mp4");

            // Define stream output options. 
            // In this case stream to a file with the given path and play locally the stream while streaming it.

            media.AddOption(":sout=#file{dst=" + destination + "}");
            media.AddOption(":sout-keep");


            // Start recording
             mediaPlayer.Play(media);

            *// Added these lines that create event handler error for Xamarin.forms, 
            // but at least it stops mediaplayer before closing App. and the 
            // recording can be play afterwards.*
            Console.WriteLine($"Recording in {destination}");
            Console.WriteLine("Press any key to exit");
            Console.ReadKey();
        }
    }
}
...