2016-08-18 9 views
1

Я пытаюсь реализовать потоковое видео между двумя устройствами с Android (API 9+), подключенными к той же сети WiFi. Первое устройство работает как небольшой сервер http, который записывает видео с камеры с помощью MediaRecorder. Второе устройство пытается получить данные с помощью метода setDataSource из класса MediaPlayer.Потоковое видео в реальном времени для MediaPLayer

mediaPlayer.setDataSource("http://serverIP:port") 

Я знаю, что сначала мне нужно отправить правильный заголовок, иначе MediaPlayer не сможет просматривать данные. Это мои вопросы:

  1. Как должен выглядеть правильный заголовок, отправленный на MediaPlayer?
  2. Есть ли более простое решение для потоковой передачи видео между устройствами Android с API 9+?

Буду благодарен за все советы.

Edit:

Поскольку мои вопросы были слишком общими, я постараюсь быть более конкретным. На основе этой темы: Live-stream video from one android phone to another over WiFi Я решил создать небольшой http-сервер (используя ServerSocket). Когда второе устройство пытается установить соединение с помощью MediaPlayer я могу отправить на него данные с сервера, используя

socket.getOutputStream().write(buff, 0, readBytes); 

Но перед передачей данных, я должен добавить заголовок ответа.

StringBuilder stringBuilder = new StringBuilder(); 
stringBuilder.append("HTTP/1.1 206 Partial Content\r\n"); 
stringBuilder.append("Content-Type: video/mp4\r\n"); 
stringBuilder.append("Accept-Ranges: bytes\r\n"); 
stringBuilder.append("Content-Length: XXXX\r\n\r\n"); 
socket.getOutputStream().write(stringBuilder.toString().getBytes()); 

Вот моя проблема. Я не знаю, какая информация должна быть добавлена ​​в заголовок, чтобы сообщение было понятным для MediaPlayer. В настоящее время в журналах я вижу следующие сообщения:

I/MediaHTTPConnection: response code = 206 
V/MediaPlayer: message received msg=100, ext1=1, ext2=-2147483648 
E/MediaPlayer: error (1, -2147483648) 
+0

Добро пожаловать на Stack Overflow. Пожалуйста, прочитайте [Как спросить] (http://stackoverflow.com/help/how-to-ask). Трудно ответить на вопрос с несколькими вопросами. Также, пожалуйста, поделитесь тем, что вы пробовали и/или исследовали. – zhon

ответ

0

Для отправки заголовков вы должны поместить их в карту следующим образом:

Map<String, String> headers = new HashMap<>(); 
headers.put("Header", "Value"); 

media_player.setDataSource(
    getApplicationContext(), 
    Uri.parse("http://url:port"), 
     headers 
); 
Смежные вопросы