Доступ к прямому потоку RTSP в кодировке mpeg-4 (сервер Axis) в Android с расширением .amp - PullRequest
2 голосов
/ 17 марта 2011

У меня есть Samsung Galaxy Tab (Android 2.2 Froyo и т. Д.), На котором я работаю.Мне нужно приложение для доступа к потоку через IP, и поток исходит от Axis 241Q .В Axis используется кодировка .mp4, и я вижу, что Android изначально поддерживает .mp4 .Сервер Axis также предоставляет URI RTSP для доступа к потоку от медиаплееров через локальную сеть.

Позвольте мне привести это, сказав, что я почти ничего не знаю о стандартах и ​​контейнерах кодирования видео, поэтому я прошу прощенияесли это проблема «нет духа».

Мой вопрос: как мне попасть в этот поток с помощью Android VideoView?Версия кода Cliff's Notes, которую я использовал бы для запуска представления в onCreate () моей Activity:

VideoView v = (VideoView) findViewById(R.id.feed);
Uri video = Uri.parse("rtsp://local/path/to/feed.amp");
v.setVideoURI(video);
v.start();

Я использовал это с некоторыми тестовыми URI-потоками .3gp, которые я нашел наИнтернет, и он, кажется, работает нормально, но все тестовые потоки, которые я обнаружил, были сделаны через HTTP, а не RTSP, поэтому, возможно, мне нужно сделать немного больше магии, чтобы запустить RTSP;Я не могу представить, почему это было бы все же.Я знаю, что Android поддерживает RTSP в ресурсах URI String для своих MediaPlayers.С другой стороны, я ничего не знаю о потоковом видео, поэтому могу ошибаться, полагая, что оно работает точно так же.

Независимо от того, когда я пытаюсь получить доступ к каналу Axis локально, канал не будет загружаться;Я предполагаю, что это является результатом использования расширения .amp вместо тех, которые перечислены в документации Android, но я абсолютно не знаю.Я могу передать этот URI в QuickTime и другим таким медиапроигрывателям с положительными результатами, поэтому я также предполагаю, что расширение файла .amp НЕ ТАК странно.Мне было тяжело действительно выяснить, потому что поиск в Google .amp с чем-то еще, даже используя кавычки и еще много чего, дает утомительный набор результатов из-за того, что «amp» отображается в escape-символах HTML.

Первыйвопрос в том, упускаю ли я что-то очевидное?Я думаю, что нет, но есть хороший шанс, что это так.

Второй вопрос: есть ли простой способ получить доступ к этому потоку RTSP без необходимости самостоятельно создавать безумное решение?Любые существующие и БЕСПЛАТНЫЕ библиотеки, которые уже находятся в дикой природе и могут сделать это проще для меня, будут огромной помощью.Сначала я собирался опробовать Java-привязки gstreamer , но, просмотрев страницу проекта, я увидел, что gstreamer использует Swing, и я не верю, что Swing включен в jav-файлы Android Java.

1 Ответ

3 голосов
/ 23 марта 2011

Можете ли вы указать конфигурацию потока MPEG4?

Расширение .amp можно заменить на .3gp на всех продуктах Axis.Так что попробуйте Uri.parse("rtsp://local/path/to/feed.3gp");.Но расширение не должно иметь никакого значения в RTSP, потому что поток мультимедиа определяется SDP, а не его «расширением».Таким образом, это может быть media.jpg, и сервер фактически будет передавать H264 видео, а не изображение JPEG.

Если это не сработает, попробуйте настроить поток MPEG4 и убедитесь, что вы отметили ISMA compliantи установите Video object type: SIMPLE (не расширенный простой).Этот поток теперь можно воспроизводить на всех медиапроигрывателях, декодирующих MPEG4.

Если у вас возникли трудности, прокомментируйте здесь, и я обновлю свой ответ, чтобы добавить новые материалы.

...