Решил написать статейку, возможно, кому-то подобный "хэлоуворлд" будет интересен и расскажет что-то новое, или сподвигнет на дальнейшее изучение фич, которые были использованы, ну и проч проч. Задача - в десяток строк кода сделать видеохостинг. Все опыты проводились на Ubuntu 16.04.
Все, что для этого (ffmpeg, python, bash) вроде как есть из коробки.
Для начала вкратце объясню, как это работает. Есть такая технология - CGI. Оно выполняет скрипты на стороне сервера и показывает stdout в виде либо текста, либо html. Запилим такой скрипт:
#!/bin/bash
echo "Content-Type: text/html"
echo
echo "<html>"
echo "<head><title>Media_test</title></head>"
echo "<body>"
for file in *; do if [[ "$file" == *.mp4 ]]; then
echo "<h3> "$file" <h3>"
echo "<video src=\"../$file\" controls type="video/mp4"></video>";
fi
done
echo "</body></html>"
Назовем его, скажем, test, создадим в папке с вашими медиафайлами папочку cgi-bin, кинем туда этот скрипт (не забудьте сделать его исполняемым).
Что делает скрипт?
Сначала - стандартная заглушка для html, заголовок, потом он перебирает файлы, и если находит видео mp4, выводит название и само видео тегом <video>.
Где подвох?
Подвох в том, что html5 умеет очень ограниченное количество форматов, и обычные mkv, которые, как правило, h264+ac3, в этот список не входят. Но можно перепаковать их сравнительно малой кровью в mp4 h264+aac такой командой в папке с медиафайлами:
for i in *mkv; do ffmpeg -i "$i" -strict experimental -c:v copy -c:a aac -b:a 192k "$i".mp4; done
И, в финале, нам нужен http-сервер. Т.к пример у нас хэллоуворлдный, воспользуемся встроенным в питон. Выполним в папке с медиафайлами:
python3 -m http.server --cgi
Все! Вы великолепны! Перейдите по адресу 127.0.0.1:8000/cgi-bin/test и полюбуйтесь проделанной работой))
Ну и ложка дегтя. Питоновский сервер слаб на обе ноги, и потому страничка с большим количеством жирных файлов будет подгружаться очень долго. Для серьезных вещей он, ясен хрен, не годится.