Просмотр видео на 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 консоли и открываем консоль андроида:
Теперь установим nfs сервер. Для Windows существует несколько серверов как платных, так и бесплатных. Мы будем ставить сервер Cygwin.
Открываем Cygwin Bash Shell, ссылка на него есть в главном меню Windows.
Добавляем в /etc/exports строку:
Отключаем наследование прав доступа NT. Для этого раскомментируем строку в /etc/fstab и добавим в опции noacl:
Запускаем установку сервисов.
Скрипт установил три Windows-сервиса: portmap, nfsd, mountd. Запускаем их:
Добавляем в программу два скрипта.
mount_video.sh — для подключения папки:
umount_video.sh — для отключения:
Расскажу про второй способ. Допустим вы сохранили скрипты в папке C:\android-sdk-windows\tools, выполняем:
Осталось только запустить mount_video.sh и вуаля, плейер может играть видео из /sdcard/video.
P.S. Все вышеприведенное тестировалось на планшете Zenithink ZT-180
Для работы нам понадобится доступ к устройству через терминал. Можно поставить терминальную программку на 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 комментарий
Еще бы вот только статейку, как включить поддержку smbfs/cifs на устройстве,
хоть с рутом.