Go bindings for GStreamer (retired: currently I don't use/develop this package)

Related tags

Video gst
Overview

Retired. I don't use/develop this package anymore.

Go bindings for GStreamer at a very early stage of maturity.

This package is based on GLib bindings. It should be goinstalable. Try

$ go get github.com/ziutek/gst

Documentation

See examples directory and http://gopkgdoc.appspot.com/pkg/github.com/ziutek/gst

To run examples use go run command:

$ cd examples
$ go run simple.go

To run live WebM example use go run live_webm.go and open http://127.0.0.1:8080 with your browser. You probably need to wait a long time for video because of small bitrate of this stream and big buffer in you browser.

Comments
  • 'g_type_init' is deprecated

    'g_type_init' is deprecated

    I get the following error when trying to go get this library:

    # github.com/ziutek/glib
    type.go:19:1: error: 'g_type_init' is deprecated (declared at /usr/include/glib-2.0/gobject/gtype.h:669) [-Werror=deprecated-declarations]
     )
     ^
    cc1: all warnings being treated as errors
    

    I also tried running the examples, they don't work either, giving the same error.

    I'm on Arch Linux x64, Go 1.1, GCC 4.8.1.

    opened by mahmoudhossam 2
  • issues running live_web.go example on go 1.4.1

    issues running live_web.go example on go 1.4.1

    GST_DEBUG=3 go run live_webm.go 0:00:00.023227292 4260 0xc67090 WARN structure gststructure.c:195:gst_structure_validate_name: Invalid character ',' at offset 11 in structure name: video/x-raw,format=yuv

    (live_webm:4260): GStreamer-CRITICAL **: gst_structure_new_empty: assertion 'gst_structure_validate_name (name)' failed

    (live_webm:4260): GStreamer-CRITICAL **: gst_structure_take_value: assertion 'structure != NULL' failed

    (live_webm:4260): GStreamer-CRITICAL **: gst_structure_take_value: assertion 'structure != NULL' failed

    (live_webm:4260): GStreamer-CRITICAL **: gst_structure_take_value: assertion 'structure != NULL' failed 0:00:00.025233199 4260 0xc720a0 FIXME default gstutils.c:3643:gst_pad_create_stream_id_internal: Creating random stream-id, consider implementing a deterministic way of creating a stream-id 0:00:00.029249741 4260 0xc720a0 WARN basesrc gstbasesrc.c:2933:gst_base_src_loop: error: Internal data flow error. 0:00:00.029347884 4260 0xc720a0 WARN basesrc gstbasesrc.c:2933:gst_base_src_loop: error: streaming task paused, reason not-linked (-1)

    go version go1.4.2 linux/amd64 gstreamer version 1.4.3.

    opened by dhoss 3
  • Added basic support for: GstAllocator, GstAppSrc, GstBuffer

    Added basic support for: GstAllocator, GstAppSrc, GstBuffer

    Due to lack of push-behaviour I added some basic GstAppSrc and GstBuffer support which allows to allocate buffer and push it to AppSrc element inside "need-data" handler.

    opened by sergey789 1
  • Windows 8.1 - go.exe get github.com/ziutek/gst fails

    Windows 8.1 - go.exe get github.com/ziutek/gst fails

    I have not found any documentation how to install it for windows 8.1? in windows 8.1 when i apply

    C:\Go\bin>go.exe get github.com/ziutek/gst
    # pkg-config --cflags glib-2.0 gobject-2.0 gthread-2.0
    pkg-config: exec: "pkg-config": executable file not found in %PATH%
    

    Can you please show me how to make it work? (i have Gstreamer SDK in C:\gstreamer\1.0..)

    opened by shamun 3
  • live_webm example broken in go 1.4.1

    live_webm example broken in go 1.4.1

    I've tested the gstreamer bindings in osx.

    gstreamer 1.4.5, go 1.4.1 (built with swig support) are installed, as well as all the dependencies

    The simple example works ok (replacing xvimagesink for autovideosink), but the live_webm fails building and launching it as shown. Any ideas on what's going on?

    fatal error: attempt to execute C code on Go stack

    runtime stack: runtime.throw(0x444a625) /usr/local/Cellar/go/1.4.1/libexec/src/runtime/panic.go:491 +0xad badc() /usr/local/Cellar/go/1.4.1/libexec/src/runtime/stack.c:891 +0x2a runtime.onM(0x4465370) /usr/local/Cellar/go/1.4.1/libexec/src/runtime/asm_amd64.s:257 +0x68 runtime.mstart() /usr/local/Cellar/go/1.4.1/libexec/src/runtime/proc.c:818

    goroutine 1 [running]: runtime.switchtoM() /usr/local/Cellar/go/1.4.1/libexec/src/runtime/asm_amd64.s:198 fp=0xc208009a90 sp=0xc208009a88 runtime.morestackc() /usr/local/Cellar/go/1.4.1/libexec/src/runtime/stack.c:885 +0x1e fp=0xc208009aa8 sp=0xc208009a90 runtime.sighandler(0x5082120, 0x0, 0x0, 0x0) /usr/local/Cellar/go/1.4.1/libexec/src/runtime/signal_amd64x.c:44 +0x14 fp=0xc208009ab0 sp=0xc208009aa8

    goroutine 5 [syscall, locked to thread]: github.com/ziutek/glib._Cfunc_mp_wait(0x0) /Users/bleedinge/src/go/src/github.com/ziutek/glib/:517 +0x4d github.com/ziutek/glib.callbackLoop() /Users/bleedinge/src/go/src/github.com/ziutek/glib/object.go:417 +0x1f created by github.com/ziutek/glib.init·1 /Users/bleedinge/src/go/src/github.com/ziutek/glib/object.go:423 +0x25

    goroutine 17 [syscall, locked to thread]: runtime.goexit() /usr/local/Cellar/go/1.4.1/libexec/src/runtime/asm_amd64.s:2232 +0x1

    opened by bleedinge 4
  • segfault in (*Message).ParseError

    segfault in (*Message).ParseError

    I get a segfault when trying to parse a error message from gstreamer.

    *** glibc detected *** /usr/local/bin/rtp-receiver: free(): invalid pointer: 0x00fd9040 ***
    SIGABRT: abort
    PC=0xb6c1acdc
    
    goroutine 43 [syscall]:
    runtime.cgocall(0xf7f8, 0x8246cb88)
        /usr/lib/go/src/pkg/runtime/cgocall.c:142 +0xdc fp=0x8246cb78 sp=0x8246cb4c
    github.com/ziutek/gst._Cfunc_free(0xfd9040)
        github.com/ziutek/gst/_obj/_cgo_defun.c:82 +0x34 fp=0x8246cb84 sp=0x8246cb78
    github.com/ziutek/gst.(*Message).ParseError(0x10b9c08, 0x96b92bc0, 0x96b2c680, 0x73)
        /home/pi/.go/src/github.com/ziutek/gst/message.go:157 +0x188 fp=0x8246cba8 sp=0x8246cb84
    main.(*Manager).onMessage(0x96b00540, 0x96b0b7a8, 0x10b9c08)
        /home/pi/go/streaming/common-client.go:49 +0xd0 fp=0x8246cc1c sp=0x8246c
    [..]
    

    I tried it with different go versions without any change in behavior.

    My current workaround is to comment out two lines in the library to not make it free the two pointers:

    func (m *Message) ParseError() (err *glib.Error, debug string) {
            var d *C.gchar
            var     e, ret_e *C.GError
    
            C.gst_message_parse_error(m.g(), &e, &d)
            // prevent segfaults by not freeing the pointer
            //defer C.free(unsafe.Pointer(e))
            //defer C.free(unsafe.Pointer(d))
    
            debug = C.GoString((*C.char)(d))
            ret_e = new(C.GError)
            *ret_e = *e
            err = (*glib.Error)(unsafe.Pointer(ret_e))
            return
    }
    

    I'm not sure, if this is the way to fix it. I guess it creates a memory leak.

    opened by felixb 0
Owner
Michał Derkacz
Michał Derkacz
Golang bindings for FFmpeg

goav Golang binding for FFmpeg A comprehensive binding to the ffmpeg video/audio manipulation library. Usage import "github.com/giorgisio/goav/avforma

H. Giorgis 1.9k Dec 27, 2022
Go bindings for libVLC and high-level media player interface

Go bindings for libVLC 2.X/3.X/4.X and high-level media player interface. The package can be useful for adding multimedia capabilities to applications

Adrian-George Bostan 328 Dec 31, 2022
Go4vl is Go library for working with the Video for Linux API (V4L2) natively, without any C bindings.

go4vl A Go library for working with the Video for Linux user API (V4L2). Gov4l hides all the complexities of working with V4L2 and exposes idiomatic G

Vladimir Vivien 143 Dec 23, 2022
Package implement reading and writing popular playlist formats: PLS, ASX, M3U, XSPF and others.

go-playlist ⚠️ WARNING The API is not stable yet and can change. Package playlist implement reading and writing popular playlist formats: PLS, ASX, M3

Roman Kulish 0 Oct 14, 2021
Go bindings for GStreamer (retired: currently I don't use/develop this package)

Retired. I don't use/develop this package anymore. Go bindings for GStreamer at a very early stage of maturity. This package is based on GLib bindings

Michał Derkacz 166 Nov 10, 2022
dont-interface calculates how many interface{} are declared or used in your project?

dont-interface calculates how many interface{} are declared or used in your project?

Ray Eldath 17 Jun 9, 2022
Beerus-DB: a database operation framework, currently only supports Mysql, Use [go-sql-driver/mysql] to do database connection and basic operations

Beerus-DB · Beerus-DB is a database operation framework, currently only supports Mysql, Use [go-sql-driver/mysql] to do database connection and basic

Beerus 7 Oct 29, 2022
sg is the CLI tool that Sourcegraph developers can use to develop Sourcegraph.

sg is the CLI tool that Sourcegraph developers can use to develop Sourcegraph.

Sourcegraph 26 Dec 14, 2022
Herbert Fischer 198 Oct 8, 2022
A Go package for sending and receiving ethernet frames. Currently supporting Linux, Freebsd, and OS X.

ether ether is a go package for sending and receiving ethernet frames. Currently supported platform: BPF based OS X FreeBSD AF_PACKET based Linux Docu

Song Gao 78 Sep 27, 2022
A Go native tabular data extraction package. Currently supports .xls, .xlsx, .csv, .tsv formats.

grate A Go native tabular data extraction package. Currently supports .xls, .xlsx, .csv, .tsv formats. Why? Grate focuses on speed and stability first

Jeremy Jay 110 Dec 26, 2022
An experimental port of TinyRb to Google go, both as a means of learning go and exploring alternate approaches to implementing Ruby. Work is currently focused on the GoLightly VM.

tinyrb¶ ↑ A tiny subset of Ruby with a Lua'esc VM. Everything in TinyRb should run in the big Ruby. (except bugs and things that don't comply to the p

Eleanor McHugh 70 Sep 22, 2022
A tool to list and diagnose Go processes currently running on your system

gops gops is a command to list and diagnose Go processes currently running on your system. $ gops 983 980 uplink-soecks go1.9 /usr/local/bin/u

Google 5.9k Dec 27, 2022
Currently in beta testing. A chess engine written in golang

Weasel Art graciously provided by Alex Table of Contents: About Installing and Compiling from Source Contributing License About Weasel is an 0x88 and

Weasel 20 Dec 30, 2022
Music recognition bot for Reddit powered by audd.io. Note that the code currently needs some cleaning up and doesn't follow the best practices.

Music recognition bot for Reddit u/auddbot identifies music on Reddit. When someone mentions it or writes a question like "what's the song", it sends

AudD 287 Dec 30, 2022
Antenna RPC is an RPC protocol for distributed computing, it's based on QUIC and Colfer. its currently an WIP.

aRPC - Antenna Remote Procedure Call Antenna remote procedure call (aRPC) is an RPC protocol focused on distributed processing and HPC. aRPC is implem

Raphael de Carvalho Almeida 3 Jun 16, 2021
Converts a trace of Datadog to a sequence diagram of PlantUML (Currently, supports only gRPC)

jigsaw Automatically generate a sequence diagram from JSON of Trace in Datadog. ⚠️ Only gRPC calls appear in the sequence diagram. Example w/ response

Yu SERIZAWA 6 Jul 12, 2022
Golang CS:GO external base. Development currently halted due to compiler/runtime Golang bugs.

gogo Golang CS:GO External cheat/base. Also, my first Golang project. Wait! Development momentarily halted due to compiler/runtime bugs. Disclaimer Th

cristei 2 Jun 25, 2022
rtsp to webrtc proxy with websocket signaling, currently limited to single h264 stream per endpoint

rtp-to-webrtc rtp-to-webrtc demonstrates how to consume a RTP stream video UDP, and then send to a WebRTC client. With this example we have pre-made G

Game On 5 Aug 6, 2022