Django Sage Streaming
django-sage-streaming is a package based on Django Web Framework & Django Rest Framework for video streaming.
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
Metadata
Release files for django-sage-streaming 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| django-sage-streaming-0.1.1.tar.gz | 21.8 kB | Without provenance | Details |
Release files / django-sage-streaming-0.1.1.tar.gz
| Download URL | django-sage-streaming-0.1.1.tar.gz |
|---|---|
| Size | 21.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
005dd7a620dab3df4d12c98e4980b6c9eb01de4cf603674b1a5bcac8c21a7491
|
|
BLAKE2b-256 checksum How to use checksums |
481afdd47b268a826eef7cd6a16b1f5b71d82b681b129a26dcca34d1f00d43b4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.4.1 importlib_metadata/4.6.1 pkginfo/1.5.0.1 requests/2.21.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.3
|
Security for django-sage-streaming 0.1.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.