Просмотр видео на Android по сети напрямую из папки Windows через NFS

Есть Android и куча видео в папке на компьютере с Windows. Как смотреть видео не перекачивая фильмы на SD-карту? Можно подключить папку напрямую. Но в ядре нет поддержки smbfs/cifs, зато есть поддержка nfs. Установим на Windows nfs сервер и подключим в Android папку с фильмами.
Для работы нам понадобится доступ к устройству через терминал. Можно поставить терминальную программку на Android, но отсутствие физической клавиатуры портит всё удовольствие. Поэтому воспользуемся утилитой adb из комплекта Android SDK.
Я не люблю подключать устройство через USB порт если есть WiFi. Но для работы adb по WiFi нужна утилита ADB over WiFi Widget (или adbWireless). Поставьте ее из маркета.
Добавьте виджет ADB over WiFi на домашний экран, ткните его. После некоторых раздумий виджет показывает нам куда нужно подключаться. В моем случае это: 192.168.0.35:8000. Подключаемся из Windows консоли и открываем консоль андроида:
C:\android-sdk-windows\tools>adb connect 192.168.0.35:8000
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
connected to 192.168.0.35:8000
C:\android-sdk-windows\tools>adb shell
#
Чтобы узнать какие файловые системы поддерживает ваше ядро выполним команду:
# cat /proc/filesystems
nodev   sysfs
nodev   rootfs
nodev   bdev
nodev   proc
nodev   tmpfs
nodev   sockfs
nodev   pipefs
nodev   anon_inodefs
nodev   rpc_pipefs
nodev   inotifyfs
nodev   devpts
        ext3
        ext2
        cramfs
nodev   ramfs
        vfat
        msdos
nodev   nfs
        romfs
        yaffs
        yaffs2
#
Как видим поддержка nfs присутствует.
Теперь установим nfs сервер. Для Windows существует несколько серверов как платных, так и бесплатных. Мы будем ставить сервер Cygwin.

Установка Cygwin nfs сервера
Скачиваем программу установки. Выбираем следующие пакеты: nfs-server, sunrpc, cygrunsrv. Еще желательно поставить редактор для правки файлов из консоли, например nano.
Открываем Cygwin Bash Shell, ссылка на него есть в главном меню Windows.
Добавляем в /etc/exports строку:
/cygdrive/c	(rw,no_root_squash)
Теперь можно подключаться к любой папке на диске c:.

Отключаем наследование прав доступа NT. Для этого раскомментируем строку в /etc/fstab и добавим в опции noacl:
none /cygdrive cygdrive binary,noacl,posix=0,user 0 0
Для вступления настроек в силу загрываем консоль Cygwin и открываем её снова. Проверяем:
micdelt@station ~
$ mount
C:/cygwin/bin on /usr/bin type ntfs (binary,auto)
C:/cygwin/lib on /usr/lib type ntfs (binary,auto)
C:/cygwin on / type ntfs (binary,auto)
C: on /cygdrive/c type ntfs (binary,noacl,posix=0,user,noumount,auto)
Опция noacl есть — порядок.

Запускаем установку сервисов.
micdelt@station ~
$ nfs-server-config
Скрипт будет задавать много вопросов. На все отвчаем да, кроме одного:
Do you want to run nfsd under a separate user account? (yes/no) no
Можно установить сервис и под административным аккаунтом, но у меня работает и под системным.
Скрипт установил три Windows-сервиса: portmap, nfsd, mountd. Запускаем их:
micdelt@station ~
$ cygrunsrv --start portmap

micdelt@station ~
$ cygrunsrv --start nfsd

micdelt@station ~
$ cygrunsrv --start mountd
Теперь на Windows работает nfs сервер.

Монтирование папок в Android
Ставим из маркета программку GScript Lite. Она умеет запускать скрипты и, к тому же, бесплатна.
Добавляем в программу два скрипта.

mount_video.sh — для подключения папки:
mkdir /sdcard/video
busybox mount -t nfs -o nolock,vers=2 192.168.0.2:/cygdrive/c/downloads/video /sdcard/video
В моем случае ip-адрес компа 192.168.0.2, видео папка расположена в c:\downloads\video, поменяйте скрипт в соответствии с вашими настройками.

umount_video.sh — для отключения:
busybox umount /sdcard/video
Можно вбить текст вручную в GScript, либо создать скрипты на компе и перенести с помощью adb.
Расскажу про второй способ. Допустим вы сохранили скрипты в папке C:\android-sdk-windows\tools, выполняем:
C:\android-sdk-windows\tools>adb shell mkdir /sdcard/gscript
C:\android-sdk-windows\tools>adb push mount_video.sh /sdcard/gscript/
C:\android-sdk-windows\tools>adb push umount_video.sh /sdcard/gscript/
Заходим в GScript на андроиде, добавляем скрипты, программа должна увидеть их.
Осталось только запустить mount_video.sh и вуаля, плейер может играть видео из /sdcard/video.

P.S. Все вышеприведенное тестировалось на планшете Zenithink ZT-180


1 комментарий

комментарий был удален
avatar
Спасибо, наконец-то нашел нормальную стать , где все по порядку объяснено.
Еще бы вот только статейку, как включить поддержку smbfs/cifs на устройстве,
хоть с рутом.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.