{"id":13767825,"url":"https://github.com/diego3g/gcloud-node-video-transcoding","last_synced_at":"2025-06-13T10:09:41.531Z","repository":{"id":37885226,"uuid":"230470400","full_name":"diego3g/gcloud-node-video-transcoding","owner":"diego3g","description":"📹🔥 Transcode Google Cloud Storage video files with Node.js and FFmpeg","archived":false,"fork":false,"pushed_at":"2023-01-24T01:02:07.000Z","size":1296,"stargazers_count":114,"open_issues_count":43,"forks_count":36,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-06-13T10:09:04.734Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/diego3g.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-12-27T15:47:16.000Z","updated_at":"2025-01-08T03:40:15.000Z","dependencies_parsed_at":"2023-02-13T07:30:29.901Z","dependency_job_id":null,"html_url":"https://github.com/diego3g/gcloud-node-video-transcoding","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/diego3g/gcloud-node-video-transcoding","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/diego3g%2Fgcloud-node-video-transcoding","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/diego3g%2Fgcloud-node-video-transcoding/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/diego3g%2Fgcloud-node-video-transcoding/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/diego3g%2Fgcloud-node-video-transcoding/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/diego3g","download_url":"https://codeload.github.com/diego3g/gcloud-node-video-transcoding/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/diego3g%2Fgcloud-node-video-transcoding/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259624736,"owners_count":22886330,"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":[],"created_at":"2024-08-03T16:01:12.716Z","updated_at":"2025-06-13T10:09:41.504Z","avatar_url":"https://github.com/diego3g.png","language":"TypeScript","readme":"\u003ch1 align=\"center\"\u003e\n  \u003cimg src=\"https://rocketseat-cdn.s3-sa-east-1.amazonaws.com/jupiter-transcode-diagram.png\" /\u003e\n\u003c/h1\u003e\n\n\u003ch2 align=\"center\"\u003e\n  Google Cloud Node.js video transcoder\n\u003c/h2\u003e\n\n\u003cp align=\"center\"\u003eUse Google Cloud Storage, Pub/Sub and App Engine to transcode videos to many resolutions.\u003c/p\u003e\n\n## 🔥 Setup\n\n- Clone the app:\n```\ngit clone https://github.com/diego3g/gcloud-node-video-transcoding.git\n```\n- Install all dependencies:\n```\nyarn\nyarn lerna bootstrap\n```\n- Install GCloud CLI following https://cloud.google.com/sdk/docs/quickstarts?hl=pt-br\n- Authenticate to Google Cloud:\n```\ngcloud auth login\n```\n- Setup a Google Cloud Project;\n- Setup `GOOGLE_APPLICATION_CREDENTIALS` environment variable following https://cloud.google.com/docs/authentication/getting-started?hl=pt-br\n- Create origin and destination bucket inside Google Cloud Storage;\n- Create a topic inside Pub/Sub called `jupiter`;\n- Setup Google Cloud Storage notification to new topic, so every file uploaded to bucket will publish a message to the queue:\n```\ngsutil notification create -t jupiter -f json -e OBJECT_FINALIZE gs://ORIGIN_BUCKET_NAME\n```\n*Replace ORIGIN_BUCKET_NAME with your origin bucket name :)*\n- To see all the notifications:\n```\ngsutil notification list gs://ORIGIN_BUCET_NAME\n```\n- Update destination bucket name inside (https://github.com/diego3g/gcloud-node-video-transcoding/blob/master/packages/worker/src/services/transcode.ts#L26)\n```\nconst destinationBucket = storage.bucket('DESTINATION_BUCKET_NAME');\n```\n- Run main application:\n```\nyarn dev:main\n```\n- Run worker application (in another terminal):\n```\nyarn dev:worker\n```\n- Upload `.mp4` file to ORIGIN bucket and monitor logs via:\n```\ngcloud app logs tail -s default\ngcloud app logs tail -s worker\n```\n\n## 📝 License\n\nThis project lives under MIT License. See [LICENSE](LICENSE.md) for more details.","funding_links":[],"categories":["Encoding","HarmonyOS"],"sub_categories":["Talks Presentations Podcasts","Windows Manager"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdiego3g%2Fgcloud-node-video-transcoding","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdiego3g%2Fgcloud-node-video-transcoding","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdiego3g%2Fgcloud-node-video-transcoding/lists"}