Как я могу записать текущий видеопоток, воспроизводимый в медиаплеере

#android #video-streaming

#Android #потоковое видео

Вопрос:

Я много гуглил и вообще не добился успеха.Нет даже единой точки, с которой я мог бы начать. Я использую VideoView для воспроизведения видео с URL, видео воспроизводится успешно, в то же время я хочу записать воспроизводимое в данный момент видео. например: http://ip/streamname/playlist.m3u8 — это URL, и я успешно просматриваю его, но мне нужно записать конкретный поток и сохранить его, чтобы я мог посмотреть его позже. Пожалуйста, предложите мне решение

Комментарии:

1. вы пробовали MediaRecorder Api для записи видео?? это также дает нам возможность записывать видео, установив источник видео.

2. Я пытался, но не работает… хорошо, я попробую еще раз. Но я сомневаюсь, могу ли я установить источник видео в качестве URL-адреса текущего воспроизводимого видео

Ответ №1:

Попробуйте этот код для загрузки вашего видео с вашего URL, и помните одну вещь: сервер должен поддерживать загрузку с определенным смещением в байтах

         private final int TIMEOUT_CONNECTION = 5000;//5sec
        private final int TIMEOUT_SOCKET = 30000;//30sec
        URL url = new URL("Video URL");
      //  long startTime = System.currentTimeMillis();
       // Log.i(TAG, "image download beginning: " imageURL);

        //Open a connection to that URL.
        URLConnection ucon = url.openConnection();

        //this timeout affects how long it takes for the app to realize there's a //connection problem
        ucon.setReadTimeout(TIMEOUT_CONNECTION);
        ucon.setConnectTimeout(TIMEOUT_SOCKET);


        //Define InputStreams to read from the URLConnection.
        // uses 3KB download buffer
        InputStream is = ucon.getInputStream();
        BufferedInputStream inStream = new BufferedInputStream(is, 1024 * 5);
        FileOutputStream outStream = new FileOutputStream(file);
        byte[] buff = new byte[5 * 1024];

        //Read bytes (and store them) until there is nothing more to read(-1)
        int len;
        while ((len = inStream.read(buff)) != -1)
        {
            outStream.write(buff,0,len);
        }

        //clean up
        outStream.flush();
        outStream.close();
        inStream.close();

        Log.i(TAG, "download completed in "
                  ((System.currentTimeMillis() - startTime) / 1000)
                  " sec");5
  

Комментарии:

1. он загружает файл, но когда я проверил свойства файла, он был равен 0 байтам, когда я нажимаю на этот файл, проигрыватель начинает его воспроизводить. Но я заметил, что файл снова имеет тот же URL потока

2. поддерживал ли ваш сервер загрузку??

3. я не думаю, что wowzo предоставляет поддержку загрузки, хотя wowzo предоставляет модуль nDVR, чтобы конечный пользователь мог быстро перематывать вперед или назад или воспроизводить / приостанавливать видео.

4. Спасибо @yasiriqbal776. Как я могу указать секунды в видео? Например, допустим, я хочу сохранить только 5 секунд в середине видео?

5. @android-user я не понял вашего вопроса? вы хотите узнать время воспроизведения видео?