
Я использую Lubuntu 14.04.3 LTS, я скачал и установилкастнаудля потоковой передачи видео с моего ПК на Chromecast.
Единственная альтернатива, которую я знаю, — это сделать это через Videostream с использованием Chromium. Но это потребляет так много ресурсов, что мой бедный старый ноутбук едва справляется с этим...
Я обнаружил, что castnow работает очень хорошо. Но это инструмент командной строки, и чтобы запустить его, мне нужно перейти в окно терминала и выполнить:
castnow --address [ip address chromecast] --myip [localip] [path to video]
Это работает, но мне было бы гораздо проще, если бы я мог перейти к видео с помощью моего файлового менеджера ( pcmanfm
) и открыть видео.
Я пытался создать файл скрипта, который запускает указанную выше команду, используя выбранный файл в качестве входного параметра (%f), но я потерпел неудачу...
И мой дорогой друг Google пока не смог мне помочь. Может ли кто-нибудь помочь мне сделать это?
Обновление 16 октября:
Я почти это сделал!
Больше всего времени заняло нахождение ошибки в pcmanfm, из-за которой он не выполняет скрипты оболочки. Следующая статья хорошо описывает это и дает обходной путь:https://bugs.launchpad.net/ubuntu/+source/lubuntu-default-settings/+bug/975152
Я создал файл .desktop, который выполняет скрипт и передает файл в качестве параметра. Это отображается как опция в меню, и таким образом вы также можете выбрать его в pcmanfm.
Скрипт принимает имя файла как параметр и запускает castnow со всеми параметрами. К сожалению, это не работает.
Скрипт, который я создал, выглядит следующим образом:
filename=$1
filename=${filename:7:$((${#filename}-7))}
filename=${filename//%20/\\ }
echo castnow --address 192.168.0.21 --myip 192.168.0.47 $filename
castnow --address 192.168.0.21 --myip 192.168.0.47 $filename
Результат:
castnow --address 192.168.0.21 --myip 192.168.0.47 /home/joost/Videos/American\ Horror\ Story\ Season\ 1\ Complete\ 480p\ BZINGAZ/american.horror.story.s01e11.720p.hdtv.x264-compulsion.mkv
Error: Load failed
А когда копирую команду в другое окно терминала - работает. Как такое может быть? И как это можно решить.
Еще одно обновление:
Проблема, похоже, связана с пробелами в пути. Файл рабочего стола отправляет путь в скрипт bash с параметром %u. И поскольку в папке есть пробелы, они преобразуются в %20. В скрипте я преобразую их обратно в "\ ". Если я тестирую свой материал с файлом, в котором нет пробелов, то все работает (!!!).
Но пространства — это часть жизни. Как это обойти?
И еще одно обновление:
Я сделал это! С небольшими уловками, но это работает. Я добавил несколько строк в скрипт, чтобы заменить все пробелы на подчеркивания в файловой системе:
#!/bin/bash
# replace all spaces by underscores in the Videos-folders and -files:
find /home/joost/Videos/ -name "* *" -type d | rename 's/ /_/g' # do the directories first
find /home/joost/Videos/ -name "* *" -type f | rename 's/ /_/g'
filename=$1
# remove file:// from the file-variable:
filename=${filename:7:$((${#filename}-7))}
# new films may contain spaces in the path. They have been replace by underscores. This also needs to happen in the parameter:
filename=${filename//%20/_}
# now we are ready to go:
castnow --address 192.168.0.21 --myip 192.168.0.47 $filename
read
Это работает, и я доволен. Но если кто-то знает, как обойти эти пространства, я был бы рад узнать.
Обновление 18 октября:
Я узнал, как обойти пробелы (и другие специальные символы). Прежде всего я узнал, как urldecode параметра. Но трюк, чтобы обойти пробелы (и другие специальные символы), заключается в добавлении 'eval' к оператору. Так что последний оператор в моем скрипте теперь такой: eval castnow --address 192.168.0.21 --myip 192.168.0.47 $filename
Вот и все. Единственная оставшаяся проблема в том, что castnow, похоже, не может воспроизводить файлы avi. Я создал проблему на github.
решение1
Вы можете задать приложение по умолчанию для соответствующего типа файла: щелкните правой кнопкой мыши видеофайл, выберите «Свойства», измените выбор «Открыть с помощью» и нажмите «ОК».