2015-06-17 2 views
0

Я создаю веб-приложение для поиска фильмов (используя Django), которое будет в основном брать папку с файлами фильмов, которые заканчиваются (.mp4, .avi, .mpg и т. Д.). База данных MySQL заполняется информацией о фильме, когда я запускаю демографический скрипт.Как подать видеофайл (ы) из приложения Django для воспроизведения в браузере?

Один из столбцов - это file_path фильма. У меня есть шаблон, который покажет основную информацию для фильма с кнопкой воспроизведения рядом с ним.

Когда вы нажмете кнопку воспроизведения, вы перейдете на другую страницу (используя слизь названия фильма), и вы увидите встроенное видео.

ПРОБЛЕМА: Это фильм не воспроизводится, когда я нажимаю кнопку воспроизведения встроенного видео. Путь file_path к видео сохраняется в базе данных, которая затем передается в шаблон django (так что я вижу путь).

Есть ли способ позволить django получить доступ к этим файлам файлов фильмов, чтобы они могли играть в браузере? (или используя медиа-проигрыватель linux по умолчанию).

P.S. Пути файлов фильмов хранятся в базе данных MySQL.

Вот модели:

class Film(models.Model): 
    title = models.CharField(max_length=128, default='Blank', help_text='film title') 
    year = models.CharField(max_length=15, help_text='release year', blank=True, null=True) 
    rated = models.CharField(max_length=15, default=1, null=True, blank=True) 
    released = models.CharField(max_length=128, default='Blank', help_text='release date') 
    runtime = models.CharField(max_length=15, default='Blank', help_text='film length') 
    genre = models.ManyToManyField(Genre, default=1, blank=True) 
    director = models.ManyToManyField(Director, default=1, blank=True) 
    type = models.CharField(max_length=20, default='filmdb', help_text='series, movie etc') 
    actor = models.ManyToManyField(Actor, blank=True, verbose_name='Actor/Actress') 
    writer = models.ManyToManyField(Writer, blank=True, verbose_name='Writer') 
    award = models.CharField(max_length=128, default='Blank', null=True,help_text='film awards') 
    country = models.ManyToManyField(Country, default=1, blank=True) 
    language = models.ManyToManyField(Language) 
    plot = models.TextField(max_length=256, help_text="Film plot", null=True, blank=True) 
    poster = models.URLField(max_length=256, help_text='link to poster image', blank=True, null=True) 
    imdb_id = models.CharField(max_length=15, default=1, null=True, blank=True) 
    imdb_rating = models.CharField(max_length=15, null=True, blank=True) 
    meta_score = models.CharField(max_length=10, null=True,blank=True) 
    file_path = models.CharField(max_length=255, null=True, blank=True, default='N/A') 
    slug = models.SlugField(unique=True) 

    def save(self, *args, **kwargs): 
     self.slug = slugify(self.title) 
     super(Film, self).save(*args, **kwargs) 

    def __unicode__(self): 
     return self.title + self.year 
+0

Вы читали: http://www.w3schools.com/html/html5_video.asp? – Brandon

+0

да, я имел в виду это утро , и так я включил его в страницу. Проблема в том, что фильм не воспроизводится. Нужно ли мне загружать его из статической папки? но все пути к файлам хранятся в базе данных. – TotemPole

+0

Является ли 'фильм' FileField? Пожалуйста, добавьте вашу модель к вопросу. – Brandon

ответ

1

Не зная, если путь является абсолютным или относительным, вы должны использовать:

<video width="320" height="240" autoplay> 
    <source src="{{ movie.file_path }}" type="video/mp4"> Your browser does not support the video tag. 
</video> 

Кроме этого, я бы использовать относительный путь, а не абсолютный путь. Эти файлы должны обслуживаться чем-то вроде встроенного сервера Apache, Nginx или Django для разработки.

Пути к этим файлам действительно должны относиться к каталогу, из которого они обслуживаются. Если вы загружаете эти файлы с помощью администратора Django, то они загружаются в MEDIA_ROOT, и их атрибут .url будет относиться к этому. Например .:

/movie/top_gun.mp4 

Для большинства сайтов, я обычно поставил MEDIA_ROOT под STATIC_ROOT, так что я могу служить им легко в разработке или производстве.

+0

«{{movie.file_path}}» - это то, что я также использовал в источнике. Путь является абсолютным ex. /home/user/Downloads/movie/top_gun.mp4 – TotemPole

+0

Является ли каталог загрузок службой staticfiles в разработке? или ? Разве это не только локально? или на вашем производственном участке? – Brandon

+0

Каталог «Загрузки» не обслуживается приложением staticfiles (с использованием сервера разработки). Пока нет производственного участка. – TotemPole

0

Я нашел работу и уложил этот проект на сайт фильма, чтобы увеличить свои навыки, используя небольшую раму, такую ​​как бутылка & Фляга.

В любом случае, когда пользователь нажимает кнопку воспроизведения на экране фильма, у меня есть этот URL-адрес, который вызывает другой вид, который делает системный вызов в программе VLC. Поскольку путь файла отделен от модели пленки, я передаю это значение в VLC в качестве параметра. Поэтому VLC открывается, когда я нажимаю фильм для просмотра.

Против: -Одно показывает фильмы в системе, в которых вы используете приложение для фильма Django, или показываете видео в браузере, где пользователь будет смотреть с другого компьютера.

ОБНОВЛЕНИЯ: Все еще не найдено решение Django. Но вот пример фляги, который я нашел boxcontrol - flask media streaming

+0

Как это отвечает на вопрос? Не могли бы вы добавить его к вам? – Cleb