Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/danielpaulus/quicktime_video_hack
Record iOS device audio and video
https://github.com/danielpaulus/quicktime_video_hack
audio gstreamer ios iosscreencaptureassistant libimobiledevice macos quicktime screenmirror video
Last synced: 9 days ago
JSON representation
Record iOS device audio and video
- Host: GitHub
- URL: https://github.com/danielpaulus/quicktime_video_hack
- Owner: danielpaulus
- License: mit
- Created: 2019-09-13T18:23:46.000Z (about 5 years ago)
- Default Branch: main
- Last Pushed: 2023-05-04T10:49:50.000Z (over 1 year ago)
- Last Synced: 2024-08-01T13:29:40.028Z (3 months ago)
- Topics: audio, gstreamer, ios, iosscreencaptureassistant, libimobiledevice, macos, quicktime, screenmirror, video
- Language: Go
- Homepage:
- Size: 22.1 MB
- Stars: 508
- Watchers: 24
- Forks: 110
- Open Issues: 55
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
[![](https://dcbadge.vercel.app/api/server/Zr8J3bCdkv)](https://discord.gg/Zr8J3bCdkv)
[![Gitpod Ready-to-Code](https://img.shields.io/badge/Gitpod-Ready--to--Code-blue?logo=gitpod)](https://gitpod.io/#https://github.com/danielpaulus/quicktime_video_hack)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![CircleCI](https://circleci.com/gh/danielpaulus/quicktime_video_hack.svg?style=svg)](https://circleci.com/gh/danielpaulus/quicktime_video_hack)
[![codecov](https://codecov.io/gh/danielpaulus/quicktime_video_hack/branch/master/graph/badge.svg)](https://codecov.io/gh/danielpaulus/quicktime_video_hack)
[![Go Report](https://goreportcard.com/badge/github.com/danielpaulus/quicktime_video_hack)](https://goreportcard.com/report/github.com/danielpaulus/quicktime_video_hack)Release 0.6
- qvh without Gstreamer is finally stable on MacOSX. I ran it for 16 hours straight on parallel devices and it worked flawlessly.
- before a 1.0 Release I need to see if Gstreamer is stable enough and maybe fix or switch to ffmpeg
- Linux support needs to be improved. It works but it is hard to get going currently.
- Create an issue if you miss anything## 1. What is this?
This is an Operating System indepedent implementation for Quicktime Screensharing for iOS devices :-)
[Check out my presentation](https://danielpaulus.github.io/quicktime_video_hack_presentation)
[See me talk about it at GoWayFest](https://www.youtube.com/watch?v=jghi4nCBRwc)
[See a demo on YouTube](https://youtu.be/8v5f_ybSjHk)
This repository contains all the code you will need to grab and record video and audio from one or more iPhone(s) or iPad(s)
without needing one of these expensive MacOS X computers or the hard to use QuickTime Player :-D- You can record video and audio as raw h264 and wave audio in the Apple demonstration mode (Device shows 9:41am, full battery and no cellphone carrier in the status bar)
- Also you can just grab device audio as wave, ogg or mp3 without the Apple demonstration mode now 🎉
- You can use custom Gstreamer Pipelines to transcode the AV data into whatever you like## 2. Installation
### 2.1 Mac OSX
1. On MacOS run `brew install libusb pkg-config gstreamer gst-plugins-bad gst-plugins-good gst-plugins-base gst-plugins-ugly`
2. To just run: Download the latest release and run it
3. To develop: Clone the repo and execute `go run main.go` (need to install golang of course)### 2.2 Linux
1. Run with Docker: the Docker files are [here](https://github.com/danielpaulus/quicktime_video_hack/tree/master/docker). There is one for just building and one for running.
2. If you want to build/run locally then copy paste the dependencies from this [Dockerfile](https://github.com/danielpaulus/quicktime_video_hack/blob/master/docker/Dockerfile.debian) and install with apt.
3. Git clone the repo and start hacking or download the latest release and run the binary :-D## 3. Usage
- For just displaying the screen run `qvh gstreamer` and it will work.
- For just getting raw media output without Gstreamer involved use `qvh record out.h264 out.wav` or `qvh audio out.wav --wav` for audio only
- For troubleshooting run `qvh diagnostics metrics.csv --dump=binary.bin` which will persist logs to a file, dump all usb transfers and gather metrics.
- See `qvh gstreamer --examples` for transcoding media or streaming.
- For creating mp3 or ogg in audio only mode see `qvh audio out.mp3 --mp3` and `qvh audio out.ogg --ogg`## 4. Technical Docs/ Roll your own implementation
QVH probably does something similar to what `QuickTime` and `com.apple.cmio.iOSScreenCaptureAssistant` are doing on MacOS.
I have written some documentation here [doc/technical_documentation.md](https://github.com/danielpaulus/quicktime_video_hack/blob/master/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.
Also I have extracted binary dumps of all messages for writing unit tests and re-develop this in your preferred language in a test driven style.I have given up on windows support :-)
~~[Port to Windows](https://github.com/danielpaulus/quicktime_video_hack/tree/windows/windows) (I don't know why, but still people use Windows nowadays)~~ Did not find a way to do it