This is an Operating System indepedent implementation for Quicktime Screensharing for iOS devices :-)
This repository contains all the code you will need to grab and record video and audio from your iPhone or iPad
without needing one of these expensive MacOS X computers :-D
It probably does something similar to what QuickTime and com.apple.cmio.iOSScreenCaptureAssistant are doing on MacOS.
Currently you can use it to dump a h264 file and a wave file or mirror your device in a desktop window. Transcoding it to anything else is very easy since I used Gstreamer to render the AV data.
- Install Gstreamer and LibUSB with brew or apt depending on your platform.
Run
brew install libusbandbrew install pkg-configandbrew install gstreamer gst-plugins-bad gst-plugins-good gst-plugins-base gst-plugins-ugly - Download the latest release and run it
- Make sure to use either this fork
https://github.com/GroundControl-Solutions/libusbor a LibUsb version BELOW 1.0.20 or iOS devices won't be found on Mac OS X. See Github Issue
Q.uickTime V.ideo H.ack (qvh) v0.2-beta
Usage:
qvh devices [-v]
qvh activate [--udid=<udid>] [-v]
qvh record <h264file> <wavfile> [-v] [--udid=<udid>]
qvh gstreamer [-v]
qvh --version | version
Options:
-h --help Show this screen.
-v Enable verbose mode (debug logging).
--version Show version.
--udid=<udid> UDID of the device. If not specified, the first found device will be used automatically.
The commands work as following:
devices lists iOS devices attached to this host and tells you if video streaming was activated for them
activate enables the video streaming config for the device specified by --udid
record will start video&audio recording. Video will be saved in a raw h264 file playable by VLC.
Audio will be saved in a uncompressed wav file.
Run like: "qvh record /home/yourname/out.h264 /home/yourname/out.wav"
gstreamer qvh will open a new window and push AV data to gstreamer.
I have written some documentation here doc/technical_documentation.md So if you are just interested in the protocol or if you want to implement this in a different programming language than golang, read the docs.
I have given up on windows support :-)
Port to Windows (I don't know why, but still people use Windows nowadays) Did not find a way to do it