Hướng dẫn sử dụng DRM-X 5.0 Encryption SDK
Dành cho nhân viên kỹ thuật — cách mã hóa video bằng cách gọi công cụ mã hóa từ dòng lệnh trên máy chủ / trang web của riêng bạn
Áp dụng cho: DRM-X 5.0 (bản quốc tế com / bản Trung Quốc cn) · Nền tảng: Windows / Linux x86_64 / macOS 11.0+
Mục lục
1Nội dung gói SDK
Sau khi giải nén kho lưu trữ DRM-X5.0_Encryption_SDK, thư mục chứa các tệp sau:
| Tệp | Mô tả |
|---|---|
| drm-x5-encrypt-sdk.exe | Chương trình mã hóa Windows (x64) |
| drm-x5-encrypt-sdk-linux-x86_64 | Chương trình mã hóa Linux (x86_64, liên kết tĩnh — không có phụ thuộc thư viện chia sẻ; chạy trực tiếp trên CentOS / Ubuntu, v.v.) |
| drm-x5-encrypt-sdk-macos-x86_64 | Chương trình mã hóa macOS (chip Intel, macOS 11.0 trở lên) |
| drm-x5-encrypt-sdk-macos-arm64 | Chương trình mã hóa macOS (chip Apple Silicon dòng M, macOS 11.0 trở lên) |
| cmd.txt | Ví dụ gọi dòng lệnh cho ba nền tảng |
| GetPackagerEncryptedParams.php | Bản demo PHP có thể chạy được, gọi dịch vụ web để lấy tham số mã hóa (xem Phần 4.4) |
Các đối số dòng lệnh giống hệt nhau trên cả ba nền tảng — chỉ khác tên tệp chương trình.
2Tổng quan về quy trình mã hóa
BƯỚC 1 · Lấy tham số mã hóa
Gọi GetPackagerEncryptedParams để lấy ProfileEncryptedParam (tức là chuỗi mã hóa -profile — lấy một lần và lưu vào bộ nhớ đệm để tái sử dụng). Các giá trị Base64 của đường dẫn đầu vào / đầu ra được chương trình của bạn mã hóa cục bộ; không cần gọi dịch vụ web cho chúng.
BƯỚC 2 · Lắp ráp dòng lệnh
Điền -profile đã lấy và các đường dẫn được mã hóa Base64 cục bộ vào bốn đối số của chương trình mã hóa: -server_domain / -profile / -input_file_utf8_base64_encoded / -output_file_utf8_base64_encoded
BƯỚC 3 · Chạy mã hóa
Thực thi chương trình dòng lệnh trên máy chủ của bạn để thực hiện mã hóa.
BƯỚC 4 · Xuất bản các tệp đã mã hóa
Tải lên / xuất bản các tệp đã mã hóa từ thư mục đầu ra. Giấy phép được cấp bởi máy chủ DRM-X 5.0 khi người dùng phát nội dung.
Tại sao phải gọi dịch vụ web DRM-X 5.0 trước?Đối số -profile của chương trình mã hóa không phải là ID số của hồ sơ giấy phép — mà là một chuỗi mã hóa gắn với tài khoản của bạn (ProfileEncryptedParam). Chuỗi này không thể tạo cục bộ; chỉ có thể lấy được thông qua dịch vụ web. Nó ánh xạ một-một với ProfileID, và một khi đã lấy được thì có thể lưu vào bộ nhớ đệm và tái sử dụng — bạn không cần gọi dịch vụ web cho mỗi tệp. Ngược lại, các giá trị Base64 của đường dẫn đầu vào / đầu ra nên được mã hóa cục bộ trong chương trình của bạn (xem Phần 6) — không cần gọi dịch vụ web cho chúng.
3Điều kiện tiên quyết
3.1 Thông tin tài khoản DRM-X 5.0 (lấy từ bảng điều khiển quản trị DRM-X)
| Mục | Mục đích |
|---|---|
| AdminEmail | Địa chỉ email quản trị viên, được sử dụng để xác thực dịch vụ web. Yêu cầu tài khoản Advanced trở lên. |
| WebServiceAuthStr | Chuỗi xác thực tích hợp dịch vụ web. Xem trong bảng điều khiển quản trị tại "Website Integration Parameter Settings". |
| ProfileID | ID hồ sơ giấy phép dạng số — chỉ định hồ sơ giấy phép nào được sử dụng cho lần mã hóa này. |
3.2 Yêu cầu môi trường máy chủ
| Nền tảng | Yêu cầu |
|---|---|
| Windows | Windows 7 / Server 2008 R2 trở lên (x64) |
| Linux | Kiến trúc x86_64 (CentOS 7+ / Ubuntu 16.04+ và các bản phân phối phổ biến khác). Liên kết tĩnh — không có phụ thuộc cần cài đặt. |
| macOSmacOS | macOS 11.0 trở lên, chip Intel hoặc Apple Silicon |
| Tích hợp phía máy chủ (tùy chọn) | PHP 7.4+ (với các tiện ích mở rộng soap và openssl được bật), để tự động gọi dịch vụ web |
Nhắc nhở bảo mật: WebServiceAuthStr tương đương với khóa tài khoản. Phải được lưu trữ chỉ ở phía máy chủ — không bao giờ đặt nó trong các trang web giao diện người dùng, phần mềm khách hoặc kho lưu trữ công khai.
4Bước một: Gọi dịch vụ web DRM-X 5.0 để lấy tham số mã hóa
4.1 Thông tin dịch vụ web
| Mục | Giá trị |
|---|---|
| Điểm cuối quốc tế | https://5.drm-x.com/haihaisoftlicenseservice.asmx |
| Điểm cuối Trung Quốc | https://5.drm-x.cn/haihaisoftlicenseservice.asmx |
| Tên phương thức | GetPackagerEncryptedParams |
| Giao thức | SOAP 1.1 (POST) |
| SOAPAction | http://tempuri.org/ASPNET.StarterKit.Commerce/HaihaisoftLicenseService/GetPackagerEncryptedParams |
Điểm cuối phải khớp với phiên bản tài khoản của bạn: tài khoản quốc tế sử dụng 5.drm-x.com (dòng lệnh: -server_domain com); tài khoản Trung Quốc sử dụng 5.drm-x.cn (dòng lệnh: -server_domain cn). Sử dụng sai phiên bản sẽ khiến xác thực thất bại, hoặc các tệp đã mã hóa không thể phát được.
4.2 Tham số yêu cầu
| Tham số | Bắt buộc | Mô tả |
|---|---|---|
| AdminEmail | Có | Địa chỉ email quản trị viên DRM-X 5.0 |
| WebServiceAuthStr | Có | Chuỗi xác thực dịch vụ web |
| ProfileID | Có | ID hồ sơ giấy phép (dạng số; không cần mã hóa) |
| Input | Có | Đường dẫn đầy đủ của tệp cần mã hóa (chuỗi thuần; không cần mã hóa) |
| Output | Có | Đường dẫn đầy đủ của tệp đầu ra đã mã hóa |
| ProfileEncryptedParam / enc_Input / enc_Output | Không | Các trường dành riêng — thường truyền một chuỗi rỗng |
4.3 Ánh xạ giữa các trường phản hồi và đối số dòng lệnh (Cốt lõi)
| Trường phản hồi | Đối số dòng lệnh | Mô tả |
|---|---|---|
| ProfileEncryptedParam | -profile | Một chuỗi hồ sơ giấy phép đã mã hóa gắn với tài khoản của bạn (Base64 an toàn URL, chứa - và _). Bạn phải sử dụng giá trị do dịch vụ web trả về — không bao giờ truyền ID Profile dạng số và không bao giờ tự mã hóa nó. Chỉ cần lấy một lần cho mỗi ProfileID và sau đó có thể lưu vào bộ nhớ đệm và tái sử dụng lâu dài — không cần gọi dịch vụ web cho mỗi tệp. |
| enc_Input | -input_file_utf8_base64_encoded | Đường dẫn đầu vào được mã hóa Base64 UTF-8. Nên mã hóa cục bộ trong chương trình của bạn (PHP: base64_encode(); trong các ngôn ngữ khác, trước tiên chuyển đổi sang byte UTF-8, sau đó Base64 — xem Phần 6). Không cần gọi dịch vụ web cho việc này; giá trị enc_Input do dịch vụ trả về cũng hoạt động tốt. |
| enc_Output | -output_file_utf8_base64_encoded | Đường dẫn đầu ra được mã hóa Base64 UTF-8. Nên mã hóa cục bộ (cùng phương pháp như trên); giá trị enc_Output do dịch vụ trả về cũng hoạt động. |
| GetPackagerEncryptedParamsResult | — | Văn bản trạng thái / thông báo. Lưu ý: |
4.4 Ví dụ gọi (PHP / SoapClient)
Dịch vụ web này là dịch vụ SOAP 1.1 tiêu chuẩn, có thể được gọi từ bất kỳ ngôn ngữ nào, theo cùng một cách thống nhất: POST một phong bì SOAP đến điểm cuối được liệt kê trong 4.1 (hoặc để máy khách SOAP tự động tạo nó từ ?WSDL), truyền các tham số từ 4.2, sau đó đọc ba trường từ 4.3 trong phản hồi. Các thư viện máy khách SOAP phổ biến theo ngôn ngữ:
| Ngôn ngữ / Nền tảng | Máy khách SOAP phổ biến |
|---|---|
| PHP | Lớp SoapClient tích hợp (được sử dụng trong hướng dẫn này, chế độ WSDL) |
| Java | JAX-WS (wsimport), Apache Axis2, Apache CXF |
| Python | zeep、suds |
| C# / .NET | Visual Studio "Add Service Reference", hoặc SvcUtil |
| Node.js | Gói soap |
Ví dụ sau sử dụng SoapClient của PHP để minh họa cuộc gọi đầy đủ. Lưu mã dưới dạng get_params.php trên máy chủ của bạn và chạy nó (PHP 7.4+ với tiện ích mở rộng soap được bật) — nó in ra ba giá trị đối số dòng lệnh:
Ghi chú về SoapClient:
- Tiện ích mở rộng php-soap phải được cài đặt và bật (trên Windows, bỏ chú thích extension=soap trong php.ini; trên Linux, cài đặt gói php-soap).
- Các lỗi nghiệp vụ như xác thực thất bại KHÔNG ném ra SoapFault. Dịch vụ vẫn trả về HTTP 200 với phản hồi được định dạng đúng, và văn bản lỗi nằm trong GetPackagerEncryptedParamsResult. Luôn xác định thành công bằng cách kiểm tra các giá trị trường như mô tả trong 4.3.
- Để gỡ lỗi, sử dụng var_dump($client->__getLastRequest()); để kiểm tra phong bì yêu cầu thực tế.
5Bước hai: Chạy lệnh mã hóa
5.1 Sử dụng lần đầu (Linux / macOS)
Trong terminal, chuyển vào thư mục của chương trình và cấp quyền thực thi trước:
5.2 Mẫu lệnh mã hóa một tệp
Windows (cmd / PowerShell):
Linux:
macOS:
5.3 Tham chiếu đối số
| Đối số | Mô tả |
|---|---|
| -server_domain | Phiên bản máy chủ DRM-X 5.0 mục tiêu: com = Quốc tế, cn = Trung Quốc. Phải khớp với nền tảng tài khoản của bạn và điểm cuối dịch vụ web được sử dụng trong Bước 4. |
| -profile | Chuỗi hồ sơ giấy phép đã mã hóa — giá trị ProfileEncryptedParam đầy đủ do dịch vụ web trả về (Base64 an toàn URL, chứa - và _). Không truyền ID dạng số, không tự mã hóa Base64 và không thêm hoặc xóa các ký tự ở cuối. Chỉ cần lấy một lần cho mỗi ProfileID và sau đó có thể lưu vào bộ nhớ đệm và tái sử dụng lâu dài. |
| -input_file_utf8_base64_encoded | Đường dẫn tệp đầu vào được mã hóa Base64 UTF-8. Nên mã hóa cục bộ (ví dụ: base64_encode($path) của PHP, xem Phần 6); giá trị enc_Input do dịch vụ trả về cũng hoạt động. Cả đường dẫn tuyệt đối và tương đối đều được hỗ trợ, và đường dẫn có thể chứa ký tự không phải ASCII và dấu cách. |
| -output_file_utf8_base64_encoded | Đường dẫn tệp đầu ra được mã hóa Base64 UTF-8. Nên mã hóa cục bộ (cùng phương pháp như trên); giá trị enc_Output do dịch vụ trả về cũng hoạt động. Thư mục cha của đầu ra phải đã tồn tại — chương trình không tạo nó. |
5.4 Ví dụ đầy đủ
Windows:
Ở đây RDpcSmFzb25c... giải mã thành D:\Jason\input\01-testVideo.mp4.
Linux:
Điều này mã hóa ./input/01-linux-encrypt-video.mp4 → ./output/01-linux-encrypt-video2_P.mp4.
5.5 Xác minh kết quả
- Khi chương trình kết thúc, hãy kiểm tra xem một tệp đã mã hóa đã được tạo trong thư mục đầu ra chưa (nên dùng hậu tố _P để phân biệt, ví dụ course01_P.mp4);
- Mã hóa yêu cầu quyền truy cập mạng đến máy chủ DRM-X. Đảm bảo tường lửa / nhóm bảo mật của bạn cho phép truy cập ra ngoài đến 5.drm-x.com hoặc 5.drm-x.cn;
- Nên xác minh toàn bộ quy trình với một video thử nghiệm nhỏ trước khi mã hóa hàng loạt nội dung sản xuất.
6Mã hóa Base64 cho đường dẫn đầu vào / đầu ra (Nên mã hóa cục bộ)
Thực tiễn được khuyến nghị: tạo các giá trị của -input_file_utf8_base64_encoded / -output_file_utf8_base64_encoded bằng cách mã hóa chúng trong chương trình của riêng bạn — không cần gọi dịch vụ web một lần cho mỗi tệp. Quy tắc mã hóa: trước tiên chuyển đổi chuỗi đường dẫn thành byte UTF-8, sau đó áp dụng mã hóa Base64 tiêu chuẩn. Lưu ý: các tệp nguồn của bạn phải được lưu dưới dạng UTF-8 (điều này đặc biệt quan trọng đối với đường dẫn không phải ASCII; trên Windows, không sử dụng mã hóa ANSI / GBK). Ví dụ theo ngôn ngữ:
| Ngôn ngữ / môi trường | Ví dụ (mã hóa đường dẫn /home/video/course01.mp4) |
|---|---|
| PHP | base64_encode('/home/video/course01.mp4') |
| Java | Base64.getEncoder().encodeToString(path.getBytes(StandardCharsets.UTF_8)) |
| Python | base64.b64encode(path.encode('utf-8')).decode() |
| C# / .NET | Convert.ToBase64String(Encoding.UTF8.GetBytes(path)) |
| Node.js | Buffer.from(path, 'utf8').toString('base64') |
| Linux / macOS shell | printf '%s' "/home/video/course01.mp4" | base64 |
| Windows PowerShell | [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes("C:\video\course01.mp4")) |
Để nhấn mạnh lại: không có cách nào tạo đối số -profile cục bộ. Đây là một chuỗi mã hóa gắn với tài khoản của bạn và chỉ có thể lấy được thông qua dịch vụ web GetPackagerEncryptedParams.
7Ví dụ tự động hóa phía máy chủ
Chuỗi "lấy tham số + gọi chương trình mã hóa" cho phép mã hóa một cú nhấp từ back office trang web của bạn, hoặc mã hóa hàng loạt theo lịch. Ví dụ PHP sau gọi chương trình mã hóa Linux (tiếp tục từ mã trong Phần 4.4; khi chạy, $profile nên được đọc từ bộ nhớ đệm trước, và dịch vụ web trong 4.4 chỉ được gọi khi không có giá trị được lưu trong bộ nhớ đệm):
Ví dụ script shell mã hóa hàng loạt (Linux — mã hóa đường dẫn cục bộ, sau đó mã hóa từng tệp):
Thực tiễn được khuyến nghị: lấy ProfileEncryptedParam cho một ProfileID nhất định một lần thông qua dịch vụ web và lưu vào bộ nhớ đệm để tái sử dụng — không gọi dịch vụ web một lần cho mỗi tệp đã mã hóa. Tạo các giá trị tương đương enc_Input / enc_Output trực tiếp bằng cách mã hóa Base64 (UTF-8) các đường dẫn trên máy chủ của bạn (trong PHP: base64_encode($path), xem Phần 6) — không cần gọi dịch vụ web. Khi mã hóa hàng loạt, hãy giới hạn đồng thời (ví dụ 2-4 tiến trình mã hóa mỗi máy chủ) để tránh làm bão hòa băng thông và CPU.
8Câu hỏi thường gặp (FAQ)
Q1: Dịch vụ web trả về "Your XML web service login info is not correct..."
AdminEmail hoặc WebServiceAuthStr không chính xác. Kiểm tra lại cả hai trong bảng điều khiển quản trị DRM-X; đảm bảo các giá trị không có dấu cách ở đầu hoặc cuối. Cũng lưu ý rằng ngay cả với lỗi này, mã trạng thái HTTP vẫn là 200 — chương trình của bạn phải xác định thành công bằng cách kiểm tra các trường phản hồi, không phải mã trạng thái HTTP.
Q2: Truyền ID dạng số (ví dụ 1001) trực tiếp vào -profile gây ra lỗi
-profile phải là chuỗi mã hóa ProfileEncryptedParam đầy đủ do dịch vụ web trả về — không phải ID Profile dạng số. ID dạng số chỉ được sử dụng khi gọi dịch vụ web.
Q3: Đường dẫn chứa ký tự không phải ASCII hoặc dấu cách và mã hóa thất bại?
Đường dẫn được vận chuyển dưới dạng Base64, và các ký tự không phải ASCII và dấu cách được hỗ trợ đầy đủ. Điều quan trọng là mã hóa phải sử dụng UTF-8: trên Windows, Notepad / cmd có thể mặc định sử dụng mã hóa ANSI (GBK), làm hỏng đường dẫn sau khi giải mã Base64. Mã hóa đường dẫn dưới dạng UTF-8 trong chương trình của bạn như mô tả trong Phần 6 (với tệp nguồn PHP được lưu dưới dạng UTF-8, base64_encode() thuần hoạt động trực tiếp; các chuỗi mã hóa GBK cũ có thể được chuyển đổi trước bằng iconv('GBK', 'UTF-8', $path) hoặc mb_convert_encoding() trước khi mã hóa).
Q4: Chương trình báo lỗi đầu ra / không thể tìm thấy thư mục đầu ra
Thư mục cha của tệp đầu ra phải được tạo trước (ví dụ mkdir -p ./output). Cũng xác minh rằng người dùng chạy chương trình có quyền ghi cho thư mục đó.
Q5: macOS báo chương trình "cannot be opened because the developer cannot be verified"
Chương trình không được Apple công chứng, vì vậy Gatekeeper chặn lần khởi chạy đầu tiên. Chọn một trong hai cách khắc phục: ① Chạy xattr -d com.apple.quarantine ./drm-x5-encrypt-sdk-macos-arm64 trong terminal để xóa cờ cách ly; ② Hoặc nhấp "Open Anyway" trong System Settings → Privacy & Security.
Q6: Trên Linux chương trình không thể thực thi (Permission denied hoặc lỗi định dạng)
Chạy chmod +x drm-x5-encrypt-sdk-linux-x86_64 trước. Nếu bạn nhận được "cannot execute binary file", xác nhận máy chủ là x86_64 (uname -m). Gói hiện tại chỉ cung cấp bản dựng x86_64; đối với máy chủ ARM, vui lòng liên hệ Haihaisoft.
Q7: Tôi nên sử dụng com hay cn? Điều gì xảy ra nếu tôi chọn sai?
Phải khớp với nền tảng tài khoản DRM-X của bạn: tài khoản quốc tế sử dụng com (và gọi 5.drm-x.com), tài khoản Trung Quốc sử dụng cn (và gọi 5.drm-x.cn). Sự không khớp gây ra lỗi xác thực, hoặc tham số mã hóa không khớp với nền tảng.
Q8: Làm thế nào để xác minh các tệp đã mã hóa?
Mở các tệp đầu ra trong trình phát demo DRM-X 5.0 / trình phát tích hợp của bạn và xác nhận: phát lại bị chặn nếu không có giấy phép và phát bình thường sau khi ủy quyền cho người dùng thử nghiệm trong bảng điều khiển quản trị. Xác minh ở quy mô nhỏ trước khi mã hóa sản xuất hàng loạt.
9Ghi chú và thực tiễn tốt nhất
- Giữ các tệp gốc: ghi đầu ra vào một vị trí mới hoặc tên tệp mới (ví dụ với hậu tố _P) để các video gốc không bao giờ bị ghi đè.
- Nhỏ trước lớn: khi sử dụng hồ sơ mới hoặc máy chủ mới lần đầu tiên, hãy chạy một video thử nghiệm ngắn qua toàn bộ quy trình "lấy tham số → mã hóa → phát lại có giấy phép" trước khi xử lý hàng loạt.
- Không bao giờ chỉnh sửa đối số bằng tay: -profile là chuỗi mã hóa Base64 — sao chép đầy đủ (không có dấu cách thừa ở đầu/cuối, không bị cắt do ngắt dòng).
- Giữ bí mật chuỗi xác thực: WebServiceAuthStr chỉ thuộc cấu hình phía máy chủ; không triển khai các công cụ web demo như GetPackagerEncryptedParams.php lên internet công khai.
- Yêu cầu mạng: trong quá trình mã hóa, máy chủ phải tiếp cận được các máy chủ DRM-X (Quốc tế 5.drm-x.com / Trung Quốc 5.drm-x.cn); cho phép cổng ra 443 nếu có tường lửa.
Các hướng dẫn DRM-X 5.0 khác
Video giới thiệu DRM-X 5.0DRM-X 5.0 là một nền tảng phần mềm mã hóa thế hệ mới. Haihaisoft cung cấp các hướng dẫn demo video DRM-X 5.0 phổ biến, bao gồm giới thiệu DRM-X 5.0, hướng dẫn mã hóa video, hướng dẫn mã hóa trang web và cách nhúng trình phát video HTML5.
XEM NGAY
Cách bảo vệ video bằng DRM-X 5.0 ZJGet cho WindowsVideo này sẽ hướng dẫn cách mã hóa tệp tin trên Windows bằng trình duyệt ZJGet.
XEM NGAY
Cách bảo vệ video bằng DRM-X 5.0 ZJGet cho macOSVideo này sẽ hướng dẫn cách mã hóa tệp tin trên MacOS bằng trình duyệt ZJGet.
XEM NGAY
Bắt đầu với DRM-X 5.0 ZJGet cho WindowsVideo này sẽ hướng dẫn bạn cách tải xuống, cài đặt và mở các tệp được mã hóa trên Windows bằng trình duyệt ZJGet.
XEM NGAY
Hướng dẫn sử dụng DRM-X 5.0 ZJGetHướng dẫn sử dụng trình duyệt ZJGet. Hướng dẫn này sẽ giúp bạn dễ dàng nắm vững các tính năng cốt lõi và mẹo thực tế của trình duyệt ZJGet.
XEM NGAY
Câu hỏi thường gặp (FAQ) về DRM-X 5.0 ZJGetCác câu hỏi thường gặp (FAQ) về việc sử dụng trình duyệt ZJGet. Phần này tổng hợp những câu hỏi và câu trả lời hữu ích nhất để giúp bạn vượt qua mọi trở ngại có thể gặp phải.
XEM NGAYCó câu hỏi gì không?
Các đại diện của chúng tôi có câu trả lời.
Hãy hỏi về các sản phẩm, giá cả, triển khai của Haihaisoft, hoặc bất cứ điều gì khác — các chuyên viên tư vấn được đào tạo bài bản của chúng tôi luôn sẵn sàng hỗ trợ bạn.
Điện thoại: +64 27 507 9959 (New Zealand)
QQ: 1279126286 / 994184623
Liên hệ với chúng tôi qua Microsoft Teams
service#haihaisoft.com (thay thế # bằng @)
Liên hệ