Giter Site home page Giter Site logo

recordmyscreen's Introduction

RecordMyScreen

Record the display even on non-jailbroken iPhones.

Licenced with the MIT Licence with the following 2 clauses added onto it: You may not use the source code for any commercial product. You may use the videos created from RecordMyScreen for commercial use.

Credits

  • CoolStar (@coolstarorg) - Started the project, and created the initial code.
  • ProtoSphere (@protosphere7) - Helped transition to encoding the video on-the-fly
  • John Coates (@punksomething) - Improved the framerate of the video captured, fixed the screen tearing, and made RecordMyScreen usable on <= A4
  • Brandon Etheredge (@brandonEtheredg) - Added support for the iPad on the UI
  • Nicolas Gomollon (@gomollon) - Prevented other apps from stopping our recording (unfortunately using an iOS 6 only API)
  • Aditya KD (@caughtinflux) - Moved the recording stuff to a separate class. Makes it a lot easier for us to start on the tweak version :)

Technical Specs

  1. ARMv7 device (A5 recommended)
  2. iOS 5 or higher (iOS 6 recommended, may work on iOS 4)
  3. Developer Account or Jailbreak to install
  4. XCode 4.4.1 or higher

Device Compatibility

iPhones

  1. iPhone 3GS
  2. iPhone 4
  3. iPhone 4S
  4. iPhone 5

Notes:

  • iPhone 2G - Not supported: iOS 3 is too ancient, armv6, way too slow, no h.264 encoding support
  • iPhone 3G - Not supported: armv6, too slow, does this even support h.264 encoding?

iPod touch

  1. iPod touch 3G
  2. iPod touch 4
  3. iPod touch 5

Notes:

  • iPod touch 1G - Not Supported: No microphone, iOS 3 is too ancient, armv6, way too slow, no h.264 encoding support
  • iPod touch 2G - Not Supported: armv6, probably doesn't support h.264 encoding
  • iPod touch 2G and 3G will need a headset with mic plugged into the headphone jack for backgrounding to work

iPad's

  1. iPad 1 (maybe, test please?)
  2. iPad 2
  3. iPad 3 (requires additional setup)
  4. iPad 4 (should work with same settings as iPad 3, but needs testing)

Note: iPads with Retina Display have Issue #8 Note for Retina iPads:

  1. You MUST set Video size to 50% scale, as the video encoder doesn't work with the 2048x1536 screen res.
  2. There is a little tearing in the video on retina iPads. We will fix it once we can take a look at it.

Jailbroken users without access to a working iOS toolchain

You may download the latest build of the last stable release (1.0) here: http://d.pr/f/Hnsw

recordmyscreen's People

Contributors

caughtinflux avatar coolstar avatar k06a avatar mp0w avatar nicolasgomollon avatar pyrofilmsfx avatar truehybridx avatar yeongu-dev avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

recordmyscreen's Issues

[Feature] URL Schemes?

I was thinking of adding a few simple URL schemes for maybe starting and stopping recording and for opening the app, may be a nifty feature!

App doesn't play videos recorded during Facetime call

Hello! I'm using this app on a non-jail broken 8GB 4th gen Touch, and it works great on almost every app in which I've tested it, save Facetime. I begin the recording, leave the app, enter and leave FT then return to the app and stop the recording. When I check on it, it has usually been saved as two files, one .mp4 and one .mov, neither of which are playable when I attempt to do so. All other recordings work fine. I'm a novice, so I certainly may be overlooking something obvious, unless this isn't compatible with FT. Any advice would be greatly appreciated. Thanks for your time!

Crash on Record (iPhone)

I've got a crash at line 300 of CSRecordViewController.m

if (buffers.count == 0)
    rawDataObj = [NSMutableData dataWithBytes:baseAddr length:totalBytes];

The crash is a BAD_EXEC

The last logs was:

2013-01-16 00:39:23.419 RecordMyScreen[2903:907] [MPAVController] Autoplay: Skipping autoplay, not enough buffered to keep up.
2013-01-16 00:39:25.422 RecordMyScreen[2903:510f] -[NSMallocBlock count]: unrecognized selector sent to instance 0x2080b0c0
2013-01-16 00:39:25.425 RecordMyScreen[2903:510f] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSMallocBlock count]: unrecognized selector sent to instance 0x2080b0c0'
*** First throw call stack:
(0x3814a3e7 0x34b82963 0x3814df31 0x3814c64d 0x380a4208 0x567c9 0x55c4d 0x3181d793 0x31821657 0x318217d9 0x342387f1 0x34238684)
libc++abi.dylib: terminate called throwing an exception

Also the audio is not being recorded from the MPMediaPlayer

Regression:
iPhone 5
iOS 6

Crash on Record (iPod Touch)

iPod Touch 4th Generation.

The app keeps crashing after hitting the record button while it opens. I emailed one of the developers and they said to post here, and to send them the output of the file "/var/mobile/Library/Logs/CrashReporter/RecordMyScreen-xxx.plist" but when I went to the "/var/mobile/Library/Logs/CrashReporter/" directory, it was not there. The first link is what is inside that directory, the second link is the Syslog from the very first time RecordMyScreen is mentioned to the very last time it is mentioned after trying to run it.

/var/mobile/Library/Logs/CrashReporter/: http://pastebin.com/0Wp17vyU
Syslog: http://pastebin.com/UQ83jEmt

Updates are closed source.

It was nice to have RecordMyScreen available on github for people to learn from it, and for easy deploying to non-jailbroken devices. However, I'm sad to say the source code is no longer being maintained and updates are binary only due to @akinGames copying the source, violating the license, and selling a copy app on the App Store. I wish I could update the source, but I unfortunately can't let others profit off of this illegally. If you wish to get updates, you may download the binary release from Cydia (jailbroken) or use "codesign" to sign the binary and load it on a non-jailbroken devices. It was a fun and cool project, and it was nice to see the support for the community, however I'll have to stop providing source updates due to a license violation by @akinGames.

The person who violated the license is https://twitter.com/akinGames.

Don't works on iOS 6.1

I have tried it on both iPhone 4 and iPhone 5.
App don't crashes, but it records nothing...

video & audio does not sync.

after done recording. I merge the video & audio. I found video & audio does not sync.
here is my code:

  • (void)screenRecorderDidStopRecording:(CSScreenRecorder *)recorder
    {
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

    AVAsset *videoAsset = [[AVURLAsset alloc] initWithURL:[NSURL fileURLWithPath:self.recordingVideoFilePath isDirectory:NO] options:nil];
    AVAsset *audioAsset = [[AVURLAsset alloc] initWithURL:[NSURL fileURLWithPath:self.recordingAudioFilePath isDirectory:NO] options:nil];
    
    if (videoAsset != nil)
    {
        // 1 - Create AVMutableComposition object. This object will hold your AVMutableCompositionTrack instances.
        AVMutableComposition *mixComposition = [[AVMutableComposition alloc] init];
        // 2 - Video track
        AVMutableCompositionTrack *videoTrack = [mixComposition addMutableTrackWithMediaType:AVMediaTypeVideo
                                                                            preferredTrackID:kCMPersistentTrackID_Invalid];
        [videoTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, videoAsset.duration)
                            ofTrack:[[videoAsset tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0] atTime:kCMTimeZero error:nil];
    
        // 3 - Audio track
        if (audioAsset != nil){
            AVMutableCompositionTrack *audioTrack = [mixComposition addMutableTrackWithMediaType:AVMediaTypeAudio
                                                                                preferredTrackID:kCMPersistentTrackID_Invalid];
            [audioTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, audioAsset.duration)
                                ofTrack:[[audioAsset tracksWithMediaType:AVMediaTypeAudio] objectAtIndex:0] atTime:kCMTimeZero error:nil];
        }
    
        // 4 - Get path
        NSURL *fileURL = [NSURL fileURLWithPath:self.videoFileSavePath isDirectory:NO];
    
        // 5 - Create exporter
        NSArray *compatiblePresets = [AVAssetExportSession exportPresetsCompatibleWithAsset:mixComposition];
        if ([compatiblePresets containsObject:AVAssetExportPresetMediumQuality]) {
    
            AVAssetExportSession *exporter = [[AVAssetExportSession alloc] initWithAsset:mixComposition presetName:AVAssetExportPresetPassthrough];
            exporter.outputURL = fileURL;
            exporter.outputFileType = AVFileTypeMPEG4;
            exporter.shouldOptimizeForNetworkUse = YES;
            [exporter exportAsynchronouslyWithCompletionHandler:^{
    
                switch (exporter.status)
                {
                    case AVAssetExportSessionStatusCompleted:
                    {
    

    // [[NSFileManager defaultManager] removeItemAtPath:self.recordingVideoFilePath error:nil];
    // [[NSFileManager defaultManager] removeItemAtPath:self.recordingAudioFilePath error:nil];
    break;
    }

                    case AVAssetExportSessionStatusFailed:
                        NSLog(@"Export Failed");
                        NSLog(@"ExportSessionError: %@", [exporter.error localizedDescription]);
                        //                export error (see exportSession.error)
                        break;
                    case AVAssetExportSessionStatusCancelled:
                        NSLog(@"Export Failed");
                        NSLog(@"ExportSessionError: %@", [exporter.error localizedDescription]);
                        //                export cancelled
                        break;
                }
    
                dispatch_async(dispatch_get_main_queue(), ^{
    
                    [_HUD removeFromSuperview];
                });
            }];
    
            dispatch_async(dispatch_get_main_queue(), ^{
    
                _HUD = [[MBProgressHUD alloc] initWithView:self.view];
                [self.view addSubview:_HUD];
                _HUD.mode = MBProgressHUDModeDeterminate;
                _HUD.labelText = @"Mergeing";
                [_HUD showAnimated:YES whileExecutingBlock:^{
    
                    while (exporter.progress < 1.0f) {
                        _HUD.progress = exporter.progress;
                        sleep(0.3);
                    }
                }];
            });
        }
    }
    

    });
    }

Weird recording screen

When I start recording and watch the recording the recording is pretty messed up here let me show u how it looks in this picture
image
There is like a weird thingy on the right side that messes up how it looks

.mov file won't play, left with unmerged .caf audio and .mp4 files

Hi everyone, I was recording on my un-jailbroken iPad (iOS 6.1) today. When I finished, my 16 minute video was shown in three different files, one .mov file (359 MB), one .mp4 file (607 MB), and one .caf file (82 MB). The .mov file was unable to play anything, the .mp4 was able to play the video without sound, and the .caf could play the audio. Any help? Thanks.

New to this

Hey I am new to GitHub. I see that some content has been updated on this main project, and I forked it before the edits were made. How do I pull/merge data from this repository into my forked version?

audio recording at low volume

audio (from microphone) is recorded at low volume on Iphone5 with ios6.1.4

somehow using Disp Recorder at the same time forces the audio to record at full volume in RecordMyScreen.

How to start capture using activator?

Hello
I'm trying to start a capture without entering the app recordmyscreen, when I creat a shortcut action in activator it's just open recordmyscreen .. How can I creat capture/ record action?

running unjailbroken

I saw this as a tweak on cydia, however I would also like to be able to run it on an iPhone which I can't jailbreak because it is my phone of my work. I can't find it in the appstore, also I don't have access to an apple pc for xcode. Is there any way I could get an ipa file to install through itunes?

RecordMyScreen source code compile issue ---ld: framework not found IOSurface

Dear all,
I am new to iOS. I have no idea whether is suitable to post this issue. If not, please info me to delete it. Thanks in advance!
After downloaded "RecordMyScreen" from github, I tried to build it. But I encountered an issue while compiling. Could you please give some advice how to fixed it?

I already install iOSOpenDev successfully.
My Mac OS X is lion 10.7.5, Xcode 4.6.2 (iOS 6.1)
try to add private framework from link binaries from library(from iOS 6.1) or link binaries from library(from other like iOSOpenDev framework), but still got the same issue.

Issue Log:

Ld /Users/user/Library/Developer/Xcode/DerivedData/RecordMyScreen-dlwucvtqjaaetdcesjbmwqryvkxk/Build/Products/Release-iphonesimulator/RecordMyScreen.app/RecordMyScreen normal i386

cd /Users/user/Documents/rufusding/iOS/recordMyscreenIpadMini/RecordMyScreen-master

setenv IPHONEOS_DEPLOYMENT_TARGET 5.0

setenv PATH "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch i386 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator6.1.sdk -L/Users/user/Library/Developer/Xcode/DerivedData/RecordMyScreen-dlwucvtqjaaetdcesjbmwqryvkxk/Build/Products/Release-iphonesimulator -F/Users/user/Library/Developer/Xcode/DerivedData/RecordMyScreen-dlwucvtqjaaetdcesjbmwqryvkxk/Build/Products/Release-iphonesimulator -F/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator6.1.sdk/System/Library/PrivateFrameworks -F/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator6.1.sdk/System/Library/PrivateFrameworks -filelist /Users/user/Library/Developer/Xcode/DerivedData/RecordMyScreen-dlwucvtqjaaetdcesjbmwqryvkxk/Build/Intermediates/RecordMyScreen.build/Release-iphonesimulator/RecordMyScreen.build/Objects-normal/i386/RecordMyScreen.LinkFileList -Xlinker -objc_abi_version -Xlinker 2 -framework IOSurface -framework CoreSurface -framework IOMobileFramebuffer -framework IOKit -fobjc-link-runtime -Xlinker -no_implicit_dylibs -mios-simulator-version-min=5.0 -framework AVFoundation -framework CoreGraphics -framework CoreMedia -framework CoreVideo -framework Foundation -framework GraphicsServices -framework MediaPlayer -framework MessageUI -framework QuartzCore -framework UIKit -o /Users/user/Library/Developer/Xcode/DerivedData/RecordMyScreen-dlwucvtqjaaetdcesjbmwqryvkxk/Build/Products/Release-iphonesimulator/RecordMyScreen.app/RecordMyScreen

ld: framework not found IOSurface

clang: error: linker command failed with exit code 1 (use -v to see invocation)

Best regards,

Cavasding

iPad Mini Screen Cut-Off

Is there any code to fix the fact that whenever an iPad Mini is recorded the screen is cut off? This is not just me, I signed the app with an enterprise account and released it for other users to use, so far thats the problem

Crashes on second record

Crashes with an EXC_BAD_ACCESS on every second recording on my non-jailbroken iPod Touch 5G running iOS 6.0.1. It crashes immediately after I press the record button the second time.
The first recording works without any problems.

RecordMyScreenCrash

EDIT: It seems to crash in captureShot:
Bildschirmfoto 2013-01-20 um 14 51 06

EDIT 2: Same crash on 1st Gen iPad.

Screen Tearing on Retina Display iPads

Once 50% mode is set for the retina iPads, some minor screen-tearing is reported to have been noticed. While I couldn't see it as I'm on an iPod touch 5, it seems CADisplayLink has what we need. If anyone would like to take up this issue, please feel free :). CADisplayLink is a documented API, btw. ;)

Recordmyscreen could not be installed at this time - please help :(

Please help when I try to download it stops halfway and says "recordmyscreen could not be installed at this time" I downloaded it perfectly, then I tried to download gba4ios, and it replaced it! I deleted gba4ios, then I downloaded recordmyscreen again. And it gave me that message :(

Not recording OpenGL apps

I'm trying to record an app that uses OpenGL to draw and I"m getting a black screen whenever I try to record it. Any ideas on how to fix this? Any pointers would be highly appreciated as it's next to impossible to find good documentation on the APIs you used.

Pretty cool project though. Thanks for sharing this!

XCode 5 - iOKit not found

Hey there,

First of all, I want to say you guys have done an amazing job.

When I try to compile the project on XCode 5, it says IOKit not found, any idea?
Works well on XCode 4.6.

Thanks.

iOS7 support

Hi,

Cool program!

In iOS7 it records only itself. When I switch to other screens, it stops recording.
Any chance you could check on that?

Thanks,
Shimon

FPS

Hi,

what is the realistic fps value to expect with this project? On my iPhone 5 (iOS 6.x) it seems to record with less than 30 fps. This is not an issue for apps, but would be for game demos. As an iOS developer I am still looking for a good method to record gameplay videos (for trailers). So far I haven't found anything that can reach 60fps. Other solutions like Everyplay or AirServer+Screen recording can reach only 30fps.

Crash on Record (iPad)

Tapping "Record" on my 4th gen iPad leads to a crash, with the following output:

2013-01-05 03:04:12.831 RecordMyScreen[2566:907] *** Assertion failure in -[CSRecordViewController setupVideoContext], RecordMyScreen/CSRecordViewController.m:335
2013-01-05 03:04:12.833 RecordMyScreen[2566:907] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Invalid parameter not satisfying: _pixelBufferAdaptor.pixelBufferPool != NULL'

Not Running

When I run the application, it builds and installs the app, but it doesn't run the app and gives me this message:

No such file or directory (/Users/AKaufer/Library/Developer/Xcode/DerivedData/RecordMyScreen-colaqzfhwqmzpzctrpsavefigyac/Build/Products/Debug-iphoneos/RecordMyScreen.app/RecordMyScreen)

IASKAppSettingsViewController.h

It says 'IASKAppSettingsViewController.h' file not found, could you upload it and give me a Download? (I'm swiss sorry for bad English).

Audio/video out of sync!

I was talking to the developer of RecordScreen and he informed me of this apps new update. Becuae he was the one to merge the audio/video. He proceeded to tell me one of the users on this app explained how to fix the issue, and he added the fix to his own app. Works perfectly. But was the fix actually added to RecordMyScreen? If not, it is much appreciated!

iOS Default Style Icon

Thanks for reading.
I think the icon currently using is pretty. However, I prefer a rounded square icon which is iOS Default Style Icon to a circle one. The advantage of using a rounded square icon is the app icon will not look different from other icons. Also, there is a black rounded square shadow which will be placed on the app icon just at the moment we press the app icon, this makes the circle icon currently using a little bit strange.
Although the circle icon is not bad, I prefer a rounded square icon to it. Or maybe we can choose the icon we want in the app.

Video processing crashes on old devices

I tried the app on my ipod touch 4g with ios 6.0,
however the app crashes when stopping the video because of too low free memory.
It doesn't matter how long the video is, the app always seems to crash.
Maybe some more optimisation is possible to use a little fewer memory in the video composing method?

Recordings rotated

Although recording works on the 1st Gen iPad, the resulting videos are rotated 180 degrees.

EDIT: It seems like videos on my iPod 5G are always assumed to be portrait and videos of the iPad are assumed to be landscape (home button right).

Corrupt movie on iPhone 5s

The resulting movies do not seem playable (corrupt) when recording on iPhone 5s - it worked for iPhone 5.

It's a pity the project "closed" - it was such a great tool to produce product-tour videos. Because of special requirements, we linked the files directly into a dedicated beta-version of our app just to produce nice looking videos.

Install?

I'm a noob to Xcode, I used my provisioning profile and tried to build it, but get this error.

(null): Framework not found IOSurface

Missing Files

Doesnt run, gives error stating that it cant find certain files.
error: no such file or directory: '/Users/(username)/Desktop/RecordMyScreen-master/InAppSettingsKit/InAppSettingsKit/Models/IASKSettingsReader.m' clang: error: no input files Command

Red bar still shows!

I still get the red bar on an iPod touch 5g, running 6.1.3.

The red bar doesn't show in the app itself, but when you go out it it, then it shows.

It's a really awesome app you have here, but it's basically unusable with the red bar. Is it something that can be fixed?

It's the same problem as these people have - #28 - seems like it's not fully fixed.

Can someone fix it or point in the direction of where one would start fixing it?

Possible to capture portion of the surface?

I try your project, its working nice. i try to change the code based on my requirement it i struggle to change.

My requirement is need to capture portion of the surface.i need to set CGRect for surface.

If possible please guide us.

thanks

[Feature Request] Audio capturing

Adding audio queue capturing to record audio from audio queue input.
Need to handle different applications settings for the AudioQueue (mix with others, duck, etc)

Not work on iPad3

Hi~
I built RecordMyScreen, it works perfectly on my iPhone4s and iPad2. But it doesnt work on iPad3.
Thanks.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.