Skip to content

Commit 113391c

Browse files
authored
Merge pull request #13 from Qencode-Corp/QCD-3278-2025-11-24-alex-BuyDRM-request
Updates for BuyDRM v4 API
2 parents e5f261e + 5aea799 commit 113391c

File tree

3 files changed

+45
-128
lines changed

3 files changed

+45
-128
lines changed

sample-code/drm/buydrm/buydrm_v4.py

Lines changed: 0 additions & 81 deletions
This file was deleted.
Lines changed: 36 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,87 +1,79 @@
1+
import base64
2+
import json
13
import uuid
24
import time
3-
import json
4-
import base64
55
import qencode
6-
from qencode.drm.buydrm import create_cpix_user_request
6+
from qencode.drm.buydrm_v4 import create_cpix_user_request
77
from qencode import QencodeClientException, QencodeTaskException
88

99
# replace with your API KEY (can be found in your Project settings on Qencode portal)
10+
# https://portal.qencode.com/
1011
API_KEY = 'your-api-qencode-key'
1112

12-
# specify path to your BuyDRM certificate files
13-
USER_PVT_KEY_PATH = './keys/user_private_key.pem'
14-
USER_PUB_CERT_PATH = './keys/user_public_cert.pem'
13+
# specify path to your BuyDRM certificate files,
14+
# for example create dir keys/ and put keys into
15+
USER_PVT_KEY_PATH = 'keys/user-private_key.pem'
16+
USER_PUB_CERT_PATH = 'keys/user-public_cert.pem'
1517

18+
# Qencode query template for job with {cpix_request}
19+
query_json = 'query.json'
20+
# correspond to stream resolution in query.json
1621
key_ids = [
1722
{ 'kid': str(uuid.uuid4()), 'track_type': 'SD' },
1823
{ 'kid': str(uuid.uuid4()), 'track_type': 'HD' }
1924
]
20-
media_id = 'my first stream'
21-
22-
2325

24-
QUERY = """
25-
{
26-
"query": {
27-
"format": [
28-
{
29-
"output": "advanced_dash",
30-
"stream": [
31-
{
32-
"video_codec": "libx264",
33-
"height": 360,
34-
"audio_bitrate": 128,
35-
"keyframe": 25,
36-
"bitrate": 950
37-
}
38-
],
39-
"buydrm_drm": {
40-
"request": "{cpix_request}"
41-
}
42-
}
43-
],
44-
"source": "https://nyc3.s3.qencode.com/qencode/bbb_30s.mp4"
45-
}
26+
media_id = 'my first stream'
27+
content_id = 'my movies group'
28+
common_encryption = 'cenc'
29+
30+
# unified with the new BuyDRM API params
31+
drm_list = {
32+
'PR': True, # use_playready
33+
'WV': True, # use_widevine
34+
'FP': False # use_fairplay
4635
}
47-
"""
48-
4936

5037
def start_encode():
51-
# this creates signed request to BuyDRM
5238
cpix_request = create_cpix_user_request(
53-
key_ids, media_id, USER_PVT_KEY_PATH, USER_PUB_CERT_PATH,
54-
use_playready=True, use_widevine=True
39+
key_ids, media_id,
40+
content_id, common_encryption,
41+
USER_PVT_KEY_PATH, USER_PUB_CERT_PATH,
42+
use_playready=drm_list['PR'], use_widevine=drm_list['WV'], use_fairplay=drm_list['FP']
5543
)
5644

5745
client = qencode.client(API_KEY)
5846
if client.error:
5947
raise QencodeClientException(client.message)
6048

61-
print 'The client created. Expire date: %s' % client.expire
49+
print('The client created. Expire date: %s' % client.expire)
6250

6351
task = client.create_task()
6452

6553
if task.error:
6654
raise QencodeTaskException(task.message)
6755

68-
query = QUERY.replace('{cpix_request}', base64.b64encode(cpix_request))
56+
template = open(query_json, 'r').read()
57+
58+
query = template.replace('{cpix_request}', base64.b64encode(cpix_request))
6959

7060
task.custom_start(query)
7161

7262
if task.error:
7363
raise QencodeTaskException(task.message)
74-
75-
print 'Start encode. Task: %s' % task.task_token
64+
task_token = task.task_token
65+
print('Start encode. Task: %s' % task_token)
7666

7767
while True:
7868
status = task.status()
79-
# print status
80-
print json.dumps(status, indent=2, sort_keys=True)
69+
print('Job %s status: \n %s' % (task_token, json.dumps(status, indent=2, sort_keys=True)))
8170
if status['error'] or status['status'] == 'completed':
8271
break
8372
time.sleep(5)
84-
85-
73+
status = task.extend_status()
74+
print('Job %s finished with status "%s" and error: %s' % \
75+
(task_token, status['status'], status['error'])
76+
)
77+
8678
if __name__ == '__main__':
8779
start_encode()

sample-code/drm/buydrm/query.json

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,17 @@
11
{
22
"query": {
3-
"encoder_version": "2",
3+
"encoder_version": "2",
44
"format": [
55
{
66
"output": "advanced_dash",
77
"stream": [
8-
{ "video_codec": "libx264", "height": 360, "audio_bitrate": 128, "keyframe": 25, "bitrate": 950 }
8+
{
9+
"video_codec": "libx264",
10+
"height": 360,
11+
"audio_bitrate": 128,
12+
"keyframe": 25,
13+
"bitrate": 950
14+
}
915
],
1016
"buydrm_drm": {
1117
"request": "{cpix_request}"
@@ -14,4 +20,4 @@
1420
],
1521
"source": "https://nyc3.s3.qencode.com/qencode/bbb_30s.mp4"
1622
}
17-
}
23+
}

0 commit comments

Comments
 (0)