Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Not able to play DRM protected content in AV Player #747

Open
atuljha3334 opened this issue Sep 20, 2024 · 8 comments
Open

Not able to play DRM protected content in AV Player #747

atuljha3334 opened this issue Sep 20, 2024 · 8 comments
Assignees

Comments

@atuljha3334
Copy link

I’m developing a Flutter app for Samsung Tizen TV that streams DRM-protected content using the Media Player API. I’m facing an issue when trying to play Widevine-encrypted DASH & HLS content. I'm getting errors right after the video player initializes.

Error I'm getting for HLS content -

[E]
(process:1243): GLib-CRITICAL **: 14:03:11.945: g_path_get_basename: assertion 'file_name != NULL' failed
[E]
(:1243): GStreamer-WARNING **: 14:03:12.166: Failed to load plugin '/opt/usr/apps/com.example.avs_android_tv_app/lib/libgsthls.so': libclearkey.so.0: cannot open shared object file: Operation not permitted
[E]
(:1243): GStreamer-WARNING **: 14:03:13.115: Failed to load plugin '/usr/lib/gstreamer-1.0/libgsthls.so': libclearkey.so.0: cannot open shared object file: Operation not permitted
(:1243): GStreamer-CRITICAL **: 14:03:13.117: gst_element_factory_create_valist: assertion 'newfactory != NULL' failed

Error for DASH content -

[E]
(:1243): GStreamer-CRITICAL **: 14:13:13.154: gst_value_get_int_range_max: assertion 'GST_VALUE_HOLDS_INT_RANGE (value)' failed
(:1243): GStreamer-CRITICAL **: 14:13:13.155: gst_value_get_int_range_max: assertion 'GST_VALUE_HOLDS_INT_RANGE (value)' failed
[E]
(:1243): GStreamer-CRITICAL **: 14:13:13.155: gst_value_get_int_range_max: assertion 'GST_VALUE_HOLDS_INT_RANGE (value)' failed
[E]
(:1243): GStreamer-CRITICAL **: 14:13:13.155: gst_value_get_int_range_max: assertion 'GST_VALUE_HOLDS_INT_RANGE (value)' failed
[E]
(:1243): GStreamer-CRITICAL **: 14:13:13.155: gst_value_get_int_range_max: assertion 'GST_VALUE_HOLDS_INT_RANGE (value)' failed
(:1243): GStreamer-CRITICAL **: 14:13:13.155: gst_value_get_int_range_max: assertion 'GST_VALUE_HOLDS_INT_RANGE (value)' failed
[E]
(:1243): GStreamer-CRITICAL **: 14:13:13.155: gst_value_get_int_range_max: assertion 'GST_VALUE_HOLDS_INT_RANGE (value)' failed
(:1243): GStreamer-CRITICAL **: 14:13:13.155: gst_value_get_int_range_max: assertion 'GST_VALUE_HOLDS_INT_RANGE (value)' failed
[E]
(:1243): GStreamer-CRITICAL **: 14:13:13.464: gst_mini_object_unref: assertion 'mini_object != NULL' failed
[E]
(:1243): GStreamer-CRITICAL **: 14:13:13.465: gst_mini_object_unref: assertion 'mini_object != NULL' failed
[E]
(:1243): GLib-GObject-WARNING **: 14:13:13.467: ../gobject/gsignal.c:2614: signal 'need-data-video' is invalid for instance '0x8a006590' of type 'GstDashSrc'
[E]
(:1243): GLib-GObject-WARNING **: 14:13:13.467: ../gobject/gsignal.c:2614: signal 'need-data-audio' is invalid for instance '0x8a006590' of type 'GstDashSrc'
[E]
(:1243): GStreamer-WARNING **: 14:13:15.848: ../subprojects/gstreamer/gst/gstpad.c:4672:gst_pad_push_data:<dash_source:video_00> Got data flow before stream-start event
[E]
(:1243): GStreamer-WARNING **: 14:13:15.849: ../subprojects/gstreamer/gst/gstpad.c:4677:gst_pad_push_data:<dash_source:video_00> Got data flow before segment event
(:1243): GStreamer-WARNING **: 14:13:15.849: ../subprojects/gstreamer/gst/gstpad.c:4411:gst_pad_chain_data_unchecked:<ffdemux_dash_mov_tiny4:sink> Got data flow before stream-start event
(:1243): GStreamer-WARNING **: 14:13:15.849: ../subprojects/gstreamer/gst/gstpad.c:4416:gst_pad_chain_data_unchecked:<ffdemux_dash_mov_tiny4:sink> Got data flow before segment event
[E]
(:1243): GStreamer-WARNING **: 14:13:15.850: ../subprojects/gstreamer/gst/gstpad.c:4672:gst_pad_push_data:<dash_source:audio_00> Got data flow before stream-start event
[E]
(:1243): GStreamer-WARNING **: 14:13:15.850: ../subprojects/gstreamer/gst/gstpad.c:4677:gst_pad_push_data:<dash_source:audio_00> Got data flow before segment event
(:1243): GStreamer-WARNING **: 14:13:15.850: ../subprojects/gstreamer/gst/gstpad.c:4411:gst_pad_chain_data_unchecked:<ffdemux_dash_mov_tiny5:sink> Got data flow before stream-start event
(:1243): GStreamer-WARNING **: 14:13:15.850: ../subprojects/gstreamer/gst/gstpad.c:4416:gst_pad_chain_data_unchecked:<ffdemux_dash_mov_tiny5:sink> Got data flow before segment event
[E]
(:1243): GStreamer-CRITICAL **: 14:13:15.859: gst_debug_log_valist: assertion 'category != NULL' failed
(:1243): GStreamer-WARNING **: 14:13:15.860: Trying to set string on structure field 'format', but string is not valid UTF-8. Please file a bug.
(:1243): GStreamer-CRITICAL **: 14:13:15.861: gst_debug_log_valist: assertion 'category != NULL' failed
[E]
(:1243): GStreamer-WARNING **: 14:13:15.867: ../subprojects/gstreamer/gst/gstpad.c:5337:store_sticky_event:dashplusdemuxer:audio_00 Sticky event misordering, got 'caps' before 'stream-start'
[E]
(:1243): GStreamer-WARNING **: 14:13:15.867: ../subprojects/gstreamer/gst/gstpad.c:5337:store_sticky_event:dashplusdemuxer:video_00 Sticky event misordering, got 'caps' before 'stream-start'

How can I properly configure Widevine DRM for Tizen’s media player in Flutter, or is there a better approach?
Thanks in advance for your help!

@xiaowei-guan
Copy link
Contributor

@atuljha3334 If you want to play DRM content, your app must be signed with a partner-level certificate.
Please refer to this website : https://docs.tizen.org/partners/specialist

@atuljha3334
Copy link
Author

@xiaowei-guan I've already created partner certificate via Tizen Certificate Manager. Why do I need to sign the app with another certificate??

@xiaowei-guan xiaowei-guan self-assigned this Sep 20, 2024
@xiaowei-guan
Copy link
Contributor

@xiaowei-guan I've already created partner certificate via Tizen Certificate Manager. Why do I need to sign the app with another certificate??

Do you run app on Tizen 6.0 TV device?

@atuljha3334
Copy link
Author

@xiaowei-guan I've already created partner certificate via Tizen Certificate Manager. Why do I need to sign the app with another certificate??

Do you run app on Tizen 6.0 TV device?

These logs are from Tizen 7.0 TV

@xiaowei-guan
Copy link
Contributor

@xiaowei-guan
Copy link
Contributor

@atuljha3334 Can you play example DRM content at your side? or you can share your sample app code, I can try to play it at my side.

@atuljha3334
Copy link
Author

@atuljha3334 Can you play example DRM content at your side? or you can share your sample app code, I can try to play it at my side.

@xiaowei-guan please find the implementation below:

_controller = VideoPlayerController.network(
'https://storage.googleapis.com/shaka-demo-assets/sintel-widevine/dash.mpd',
drmConfigs: const DrmConfigs(
type: DrmType.widevine,
licenseServerUrl: 'https://cwip-shaka-proxy.appspot.com/no_auth',
)
)

@xiaowei-guan
Copy link
Contributor

@atuljha3334 I also can't play this URL, I will check this issue with MM team.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants