{"id":18341358,"url":"https://github.com/hamoid/video_export_processing","last_synced_at":"2025-04-05T10:08:33.561Z","repository":{"id":26364767,"uuid":"29813940","full_name":"hamoid/video_export_processing","owner":"hamoid","description":"Processing library that interfaces with ffmpeg to export video files","archived":false,"fork":false,"pushed_at":"2025-01-24T12:32:12.000Z","size":4505,"stargazers_count":118,"open_issues_count":13,"forks_count":20,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-03-29T09:09:44.072Z","etag":null,"topics":["creative-coding","processing"],"latest_commit_sha":null,"homepage":"http://funprogramming.org/VideoExport-for-Processing/","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hamoid.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"license.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2015-01-25T12:52:51.000Z","updated_at":"2024-12-06T13:21:29.000Z","dependencies_parsed_at":"2025-02-07T12:08:21.548Z","dependency_job_id":null,"html_url":"https://github.com/hamoid/video_export_processing","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hamoid%2Fvideo_export_processing","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hamoid%2Fvideo_export_processing/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hamoid%2Fvideo_export_processing/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hamoid%2Fvideo_export_processing/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hamoid","download_url":"https://codeload.github.com/hamoid/video_export_processing/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247318744,"owners_count":20919484,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["creative-coding","processing"],"created_at":"2024-11-05T20:26:28.252Z","updated_at":"2025-04-05T10:08:33.545Z","avatar_url":"https://github.com/hamoid.png","language":"Java","readme":"Notes:\n\n### 1. I'm looking for someone to **maintain** this library. Get in contact if you are using it and would like to continue its development. I can help by answering any questions you may have.\n\n### 2. There's a newer **rewrite** of the library using Kotlin and Gradle. Download it from https://github.com/hamoid/video_export_processing/tree/kotlinGradle\n\n# Video Export for Processing\n\nThis library interfaces with FFmpeg and makes it easy to export video files out\nof Processing.\n\n## Example\n\n```java\nimport com.hamoid.*;\n\nVideoExport videoExport;\n\nvoid setup() {\n  size(600, 600);\n  videoExport = new VideoExport(this, \"hello.mp4\");\n  videoExport.startMovie();\n}\nvoid draw() {\n  background(#224488);\n  rect(frameCount * frameCount % width, 0, 40, height);\n  videoExport.saveFrame();\n}\nvoid keyPressed() {\n  if (key == 'q') {\n    videoExport.endMovie();\n    exit();\n  }\n}\n```\n\n## FFmpeg\n\nYou need to download and install [FFmpeg](http://ffmpeg.org/) on your system before you can use this library.\nNote that you might already have it installed! You can find out by typing ffmpeg or ffmpeg.exe\nin the terminal. If the program is not found:\n\n* GNU/Linux systems: use your favorite package manager.\n* Windows: get a [static 32bit or 64bit binary](http://ffmpeg.zeranoe.com/builds/)\n* Mac: get a [static 64bit binary](http://evermeet.cx/ffmpeg/)\n\nFor more details and download links, check the official FFmpeg website: [http://ffmpeg.org](http://ffmpeg.org/)\n\nWhen you start a Processing sketch that uses this library you may be asked to indicate the location\nof your FFmpeg executable.\n\n## Frequent issues and questions\n\n### What if I change the location of FFmpeg?\n\nThe library should notice and ask you for its location again. The location\ninformation is saved in a json file which you can find in the library location.\nIf you delete this json file the library will ask you for the location of FFmpeg\nand create the file again with the updated information.\n\n### Sometimes the resulting mp4 video files are not working. Why?\n\nmp4 files contain essential metadata at the end of the file.\nThe video export library saves this metadata when you call the\n`endMovie()` method. If you don't call it, the movie may be\nincomplete. The endMovie() method was added in version 0.1.5.\n\n### I see an FFmpeg error related to \"crf\". Why?\n\nThis happens if your copy of FFmpeg does not include the h264 encoder.\nNot all FFmpeg binaries are equal, some include more features than others.\nTry downloading a different or more recent binary. Let me know if that\ndoesn't work.\n\n### Odd widths and heights not allowed\n\nThe exported video is compressed using the h264 codec. This codec does not allow odd image sizes like 111 x 113. Some computer screens actually have odd sizes like 1920 x 1059. If you use fullScreen() with such a screen, exporting will fail with an error like `height not divisible by 2 (1920x1059)`. This will be fixed in future versions by auto correcting the requested size to an even number and notifying the user.\n\n### How can I tweak the FFmpeg command the library runs?\n\nThe first time the library runs it will produce a settings.json file, which will\nbe placed in the library folder. This file can be carefully edited to adjust the\nFFmpeg parameters used during the video creation. Why would you do this? FFmpeg\naccepts hundreds of parametrs to define which codec to use, how the codec should\nbehave, etc. FFmpeg also includes hundreds of audio and video filters that can\nbe used and configured. It would not make sense for me to create hundreds of\nmethods in the video export library to let you access all those features. \nIf you are and advanced user, you can tweak those settings yourself by editing\nsettings.json to change the codec settings or apply special effects to the \nresulting video files. See [this example](https://forum.processing.org/two/discussion/comment/95710/#Comment_95710).\n\n### NoSuchMethodError when calling endMovie()\n\nThere seems to be a conflict between the Video Export library and the Video library. Both use different versions of the JNA library. See this discussion: https://github.com/hamoid/video_export_processing/issues/38\n\n## change log\n\n* 0.2.3 - February 28th, 2018\n  * Allow spaces in the FFmpeg command (#37)\n  * Allow setting the FFmpeg command settings from code, not just in the json\n  file (#36)\n* 0.2.2 - February 11th, 2018\n  * Re-add jna.jar and jna-platform.jar, fixing broken exported applications\n    (issue [47](https://github.com/hamoid/video_export_processing/issues/47) ) \n    and the Windows version.\n* 0.2.1 - November 8th, 2017\n  * Add .setFfmpegPath() and fix [issue 41](https://github.com/hamoid/video_export_processing/issues/41)\n* 0.2.0 - October 22nd, 2017\n  * Minor change: when calling nf(), replace ',' with '.'. Some systems may use\n    ',' due to localization, which fails later when parsing the csv file.\n* 0.1.9 - April 22nd, 2017\n  * https URL is now known by the IDE, so it's possible to install again without\n    leaving the IDE.\n  * Solve issue when attaching sound. In Ubuntu, the AAC codec inside FFmpeg is\n    experimental, and had to be enabled in the command line.\n  * Allow user customization of the FFmpeg commands that the library runs by including\n    them inside settings.json, found in the library folder. This enables the user\n    to tweak the commands to enable filters like blur, vignette, add noise,\n    crop, etc. In future versions space characters should be allowed in those\n    filter arguments.\n* 0.1.8 - April 17th, 2017\n  * Switch server url to https (attempt to solve broken installation inside the IDE)\n* 0.1.7 - April 1st, 2017\n  * Setting are now saved in the libray folder. Using the Java Preferences was\n    giving errors on some Windows versions.\n  * New example added to produce a video based on FFT data and making sure audio\n    and video stay in sync.\n  * In Windows, when ending a video, CTRL+C is sent to FFmpeg to terminate\n    properly. This seems to fix corrupted videos on Windows.\n  * The library now notices if FFmpeg is not found (maybe because it was moved)\n    and asks again for its location.\n* 0.1.6 - December 8th, 2016\n  * Fix for high dpi screens (Thanks to @LodenRietveld)\n* 0.1.5 - December 2nd, 2016\n  * Refactoring. Clean up code.\n  * Add .startMovie() and .endMovie() to prevent possible \"missing-end-of-movie corruption\".\n  * Allow attaching a sound file to the produced movie.\n  * Allow exporting multiple video files using the same videoExport object.\n* 0.1.4 - August 4th, 2016\n  * Attempt to fix randomly corrupted videos on Windows \n* 0.1.3 - July 24th, 2016\n  * Add webcam saving example.\n  * Add getFfmpegPath() public method (requested by [@ffd8](https://github.com/ffd8)).\n  * Replace PGraphics with PImage, enables webcam/movie saving (requested by [@transfluxus](https://github.com/transfluxus)).\n* 0.1.1 - June 15th, 2016\n  * Use .waitFor() to reduce chances of video corruption.\n* ...\n* 0.0.1 - January 25th, 2015\n\n## Download\n\nhttp://funprogramming.org/VideoExport-for-Processing/\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhamoid%2Fvideo_export_processing","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhamoid%2Fvideo_export_processing","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhamoid%2Fvideo_export_processing/lists"}