{"id":242,"date":"2014-10-02T16:57:56","date_gmt":"2014-10-02T14:57:56","guid":{"rendered":"https:\/\/coaxion.net\/blog\/?p=242"},"modified":"2014-10-02T17:02:29","modified_gmt":"2014-10-02T15:02:29","slug":"gstreamer-remote-controlled-testing-application-for-android-ios-and-more","status":"publish","type":"post","link":"https:\/\/coaxion.net\/blog\/2014\/10\/gstreamer-remote-controlled-testing-application-for-android-ios-and-more\/","title":{"rendered":"GStreamer remote-controlled testing application for Android, iOS and more"},"content":{"rendered":"<p>Today I&#8217;ve released a little <a href=\"http:\/\/gstreamer.freedesktop.org\/\" title=\"GStreamer\" target=\"_blank\">GStreamer<\/a> testing application, mostly for iOS and Android. You can find it here: <a href=\"https:\/\/github.com\/sdroege\/gst-launch-remote\" title=\"gst-launch-remote\" target=\"_blank\">gst-launch-remote<\/a>.<\/p>\n<p>It starts a TCP server on port 9123 and allows to take commands from there, while the main application is a simple video widget and a play\/pause button.<\/p>\n<p>You can use it as following (note that every OK or NOK comes from the application to tell you about the success or failure of a command): <\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"sh\" data-enlighter-title=\"\">$ nc fancydevice 9123\r\nvideotestsrc ! autovideosink\r\nOK\r\n+PLAY\r\nOK\r\n+PAUSE\r\nOK\r\n+SEEK 10000\r\nOK\r\naudiotestsrc ! autoaudiosink\r\nOK\r\n+PLAY<\/pre>\n<p>Every GStreamer pipeline string is accepted here, but currently only a single video output is supported. And additionally you can also enable sending GStreamer debug output via UDP to some IP\/port with:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"sh\" data-enlighter-title=\"\">+DEBUG bigworkstation:12345\r\nOK<\/pre>\n<p>This will for now enable GST_LEVEL_DEBUG as debug level for everything. And you can listen for all the output with<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"sh\" data-enlighter-title=\"\">$ nc -l -u 12345<\/pre>\n<h4>Future ideas<\/h4>\n<p>Maybe this is something that could be integrated with <a href=\"http:\/\/cgit.freedesktop.org\/gstreamer\/gst-devtools\/tree\/validate\" title=\"gst-validate\" target=\"_blank\">gst-validate<\/a> to be able to run the test scenarios on mobile devices, and get decent test coverage for them too.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Today I&#8217;ve released a little GStreamer testing application, mostly for iOS and Android. You can find it here: gst-launch-remote. It starts a TCP server on port 9123 and allows to take commands from there, while the main application is a simple video widget and a play\/pause button. You can use it as following (note that &hellip; <a href=\"https:\/\/coaxion.net\/blog\/2014\/10\/gstreamer-remote-controlled-testing-application-for-android-ios-and-more\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">GStreamer remote-controlled testing application for Android, iOS and more<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[3,5],"tags":[],"class_list":["post-242","post","type-post","status-publish","format-standard","hentry","category-free-software","category-gstreamer"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/coaxion.net\/blog\/wp-json\/wp\/v2\/posts\/242","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/coaxion.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/coaxion.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/coaxion.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/coaxion.net\/blog\/wp-json\/wp\/v2\/comments?post=242"}],"version-history":[{"count":5,"href":"https:\/\/coaxion.net\/blog\/wp-json\/wp\/v2\/posts\/242\/revisions"}],"predecessor-version":[{"id":247,"href":"https:\/\/coaxion.net\/blog\/wp-json\/wp\/v2\/posts\/242\/revisions\/247"}],"wp:attachment":[{"href":"https:\/\/coaxion.net\/blog\/wp-json\/wp\/v2\/media?parent=242"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/coaxion.net\/blog\/wp-json\/wp\/v2\/categories?post=242"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/coaxion.net\/blog\/wp-json\/wp\/v2\/tags?post=242"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}