Как можно проигрывать потоковое видео из байтового массива - PullRequest
0 голосов
/ 13 января 2020

Спасибо за просмотр вопроса и извините за мой engli sh XD

(используйте Android Studio с JAVA) Как я могу воспроизвести потоковое видео из байтового массива в VideoView или MediaPlayer, у меня есть получен байтовый массив из сокета ZeroMQ, а содержимое байтового массива равно Frame (размер w: 640 h: кодировка 360 base64)

код потока протокола ZeroMQ

public class ZeromQMessageTask extends AsyncTask<String, Void, String>{
        @Override
        protected String doInBackground(String... strings) {
            DataOutputStream dataOutputStream = null;
            try{
                ZMQ.Context context = ZMQ.context(1);
                ZMQ.Socket socket = context.socket(ZMQ.SUB);
                socket.subscribe(ZMQ.SUBSCRIPTION_ALL);
                socket.connect("tcp://192.168.0.21:8080");
                socket.setReceiveTimeOut(5000);


                int count = 0;
                while (count < 10000){
                    byte[] datas = socket.recv(0);
                    count ++;
                }
                Log.e("socket closed: " , ""+count);

                socket.close();
                context.term();

            }catch (Exception e){
                Log.e("socket error: " , e.getLocalizedMessage());
                Log.e("socket error: " , e.toString());
            }
            return "test";
        }
    }

код сервера (для справки) ps .maybe python код?

context = zmq.Context()
footage_socket = context.socket(zmq.PUB)
footage_socket.bind('tcp://*:{}'.format(PORT))

while True:
  try:
       for frame in frames:
           encoded, buffer = cv2.imencode('.jpg', frame)
           jpg_astext = base64.b64encode(buffer)
           footage_socket.send(jpg_as_text)

  except Exception as e: ...
...