danielpaulus / quicktime_video_hack

Record iOS device audio and video
MIT License
507 stars 111 forks source link

GStreamer not working #136

Open Alex15190 opened 1 year ago

Alex15190 commented 1 year ago

go run main.go gstreamer

github.com/danielpaulus/gst

cgo-gcc-prolog:110:35: warning: 'gst_element_get_request_pad' is deprecated: Use 'gst_element_request_pad_simple' instead [-Wdeprecated-declarations] /opt/homebrew/Cellar/gstreamer/1.20.3/include/gstreamer-1.0/gst/gstelement.h:1041:9: note: 'gst_element_get_request_pad' has been explicitly marked deprecated here /opt/homebrew/Cellar/glib/2.72.3_1/include/glib-2.0/glib/gmacros.h:1113:44: note: expanded from macro 'G_DEPRECATED_FOR' {"error_message":"no device found to use","original_error":"no iOS devices are connected to this host"} {"level":"info","msg":"found ACheck 15.6.1 for udid UUID","time":"2022-09-06T12:05:41+03:00"} {"level":"info","msg":"Starting Gstreamer..","time":"2022-09-06T12:05:41+03:00"} panic: runtime error: invalid memory address or nil pointer dereference [signal SIGSEGV: segmentation violation code=0x2 addr=0x0 pc=0x10501e92c]

goroutine 1 [running]: github.com/danielpaulus/quicktime_video_hack/screencapture/gstadapter.setUpVideoPipeline(0x140000100c0) /Users/check/Downloads/quicktime_video_hack-main/screencapture/gstadapter/gst_pipeline_builder_mac.go:17 +0x7c github.com/danielpaulus/quicktime_video_hack/screencapture/gstadapter.New() /Users/check/Downloads/quicktime_video_hack-main/screencapture/gstadapter/gst_adapter.go:35 +0x6c main.startGStreamer({{0x0, 0x0}, {0x0, 0x0}, 0x0, 0x0, 0x0, 0x0, {0x0, 0x0}}) /Users/check/Downloads/quicktime_video_hack-main/main.go:296 +0x80 main.main() /Users/check/Downloads/quicktime_video_hack-main/main.go:177 +0x8b8 exit status 2

Alex15190 commented 1 year ago

MacOS 12.5.1

Valkhes commented 1 year ago

This has been reproduced on my side on a mac M1, macOS 12.6, after cloning the repo.

I'm using go version 1.19 darwin/arm64

Maybe do we need to specifically use go version 1.15 ?

EDIT : Seems to be crashing on the SetProperty("is-live",true)

I had to export the env variable GST_PLUGIN_PATH :

"export GST_PLUGIN_PATH=/opt/homebrew/lib/gstreamer-1.0"

It worked after

HardlyAnyHoldings commented 1 year ago

How did you get this working again?

I am still having issues even after doing

"export GST_PLUGIN_PATH=/usr/local/Cellar/gstreamer/1.20.5"

danielpaulus commented 1 year ago

hm weird it just worked on Ventura 13.1 with an USB-C iPAD Air iOS 16.1.1 Let me see if I can repro

danielpaulus commented 1 year ago

same for my iPhone 14, I get this annoying signal: illegal instruction now and then, so I have to start and kill the command like 5 times but eventually it always works. I will investigate if I can make the gstreamer part more stable.

danielpaulus commented 1 year ago

also I am using GStreamer 1.18.4 gst-launch-1.0 --version is that maybe the issue?

danielpaulus commented 1 year ago

I just tried pushing the AV data through the local TCP loopback interface and just running gstreamer in a separate process from qvh and it seems to work perfectly fine. I will try and push a prototype branch tonight. I am fairly confident this will solve all of the gstreamer problems and allow easy use of ffmpeg as well.

dn538j commented 1 year ago

@danielpaulus I am having an issue with running the code too. On the main branch, I run into the original issue posted here. I then switched to using the externalizeGST branch to launch a separate process for gstreamer. Unfortunately, my gst invoke url doesn't seem to be working. Would you mind sharing the gst command you used to get the process going?