video streaming based on Django
Project description
The Latest version of django-sage-streaming documentation
Project Detail
You can find all technologies we used in our project into these files: * Version: 1.0.0 * Frameworks: - Django 3.2.5 * Libraries: - Django rest framework 3.12.4 * Language: Python 3.9.4
Installation
First install package
$ pip install django-sage-streaming
Then add sage_stream to INSTALLED_APPS in settings.py
INSTALLED_APPS = [
...
'sage_stream',
...
]
Also make sure you have rest_framework in INSTALLED_APPS
INSTALLED_APPS = [
...
'rest_framework',
...
]
Getting Started
django-sage-streaming provides two ways that you can stream videos over HTTP: 1. built-in API View: for using built-in view add sage_stream.api.urls to urls.py
from django.urls import path, include
urlpatterns = [
...
path('api/', include('sage_stream.api.urls')),
...
]
Now you can access the stream api here: localhost:8000/api/stream?path=<you_video_path>
The settings of built-in view is available here
create custom views: you can use stream functions in your application
from sage_stream.utils.stream_services import get_streaming_response
response = get_streaming_response(
path=video_path, # path to video
range_header=range_header, # range header extracted from request
range_re=range_re, # range header regex pattern (default is available in sage_stream.settings.STREAM_RANGE_HEADER_REGEX_PATTERN)
max_load_volume=max_load_volume, # the maximum volume of the response body
)
Other functions you can use
from sage_stream.utils.file_services import file_iterator # iterates in given file chunk by chunk in generator mode
from sage_stream.utils.log_services import log_watch_request # creates WatchLog instance with given data
# usage examples
# log
log_watch_request(video_path, request.user.is_authenticated, ip, request.user)
# file iterator
resp = StreamingHttpResponse(
file_iterator(
path,
offset=first_byte,
length=length
),
status=206,
content_type=content_type
)
Admin
django-sage-streaming also has logging system for watching requests
It is available in admin panel when you add sage_stream to INSTALLED_APPS
Settings
Here are the parameters that you can set from setting:
Parameter |
Description |
---|---|
STREAM_DEFAULT_PERMISSION_CLASSES |
permission_classes that used in built-in APIView. default: (AllowAny,) |
STREAM_DEFAULT_VIDEO_PATH_URL_VAR |
url path variable key. default: path |
STREAM_MAX_LOAD_VOLUME |
maximum load video in each chunk(by MB). default: 8 |
STREAM_WATCH_LOG_ENABLED |
is log watch requests enabled. default: True |
STREAM_RANGE_HEADER_REGEX_PATTERN |
range header regex pattern. default: r’bytes=(+)-()’ |
Frontend
Frontend implementation is so easy
you just need to add stream url as src in video tag
<video width="480" controls>
<source src="http://localhost:8000/api/stream/?path=<path_to_video>" type="video/mp4">
</video>
Team
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for fork-django-streaming-0.2.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | f657d8f467eaa7b2d0d9f09cd1d7324d99fdfe6e15758786befbb70bc8dbefcd |
|
MD5 | 2efcbd16512c628423f326c4b90ca2cd |
|
BLAKE2b-256 | 0e8750ab27bd4a2fa8b99871617e45e92f4b65dfe45893adef156ab1be1d6a08 |
Hashes for fork_django_streaming-0.2.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 01ec2986c90ea748c67d51623a24790761e5cdff280faf559ec380e0da616fef |
|
MD5 | 5ac7d767d8946023c6b7992e9737d12a |
|
BLAKE2b-256 | 9fb04e3973d2f7b444ed8fcacecb7b86ffb46163bc3b8ab97df8134385188fbd |