GithubHelp home page GithubHelp logo

cucumber-school-subtitles's Introduction

cucumber-school-captions

Generating captions for Cucumber School videos!

Vocabulary

  • caption frame - a set of text displayed between a start and end time in a video. Example:
2
00:00:19.712 --> 00:00:23.900
Last time we learned how to use
conversations about concrete examples

Steps

  • Upload video as unlisted to Youtube. (YT) Their service should automatically generate a subtitles file.
  • Edit YT's file in their interface to correct anything that might be wrong with the auto generated text.
  • Update the caption file and then download it in its .srt format.
  • Use ffmpeg to combine the caption file with the video
    • Example: ffmpeg -i "Cucumber School - 01x01 - Give Me An Example.mp4" -i "Cucumber School - 01x01 - Give Me An Example.vtt" -metadata:s:s:0 language=eng -c copy -c:s mov_text "Cucumber School - 01x01 - Give Me An Example - Captions.mp4"
  • Upload to Google Drive in a subs directory under each lesson's directory
  • Success!

Style Guidelines

Some notes taken from a couple different style guidelines and decided on by myself.

  • No ending commas or periods
  • Prefer to have one caption lead immediately into another where it makes sense. This is meant to make the caption reading experience less jarring and smoother. The start time of one frame should be the same as the frame that precedes it so that there is no 'flashing' as one caption disappears and the next appears. Cases when and when not to do this follow:
    • Sentences that span multiple caption frames must be connected
    • Sentences that are within approximately a half second of one another should also be connected.
  • Maximum of 2 lines per caption frame
  • Maximum of 45 characters per line, where possible, with preference toward shorter lines
  • Minimum of 1 seconds of on screen time for shorter frames if possible
  • For commands that are to be input, wrap them in 'single quotes'
  • For file names or other things like variables, if they are capitalized in the video, make them capital in the caption.

Status

Captions and videos go through a number of statuses in their life cycle and will be tracked below.

  • Creation - This step is performed in YouTube's caption tool, in order to modify their auto-generated captions, fixing incorrect words, timing, and spacing.
  • Final - This is the final step for the caption files, meant to ensure that everything is correct. Must be done after all have been finished.
  • Complete - ๐ŸŽ‰
Video Language Creation Final Complete
01 Shared โˆš โˆš โˆš
02
Ruby โˆš โˆš โˆš
Java โˆš โˆš โˆš
03
Ruby โˆš โˆš โˆš
Java โˆš โˆš โˆš
04
Ruby โˆš โˆš โˆš
Java โˆš โˆš โˆš
05
Ruby โˆš โˆš โˆš
Java โˆš โˆš โˆš
06
Ruby โˆš โˆš โˆš
Java โˆš โˆš โˆš
07
Ruby โˆš โˆš โˆš
Java โˆš โˆš โˆš
08
Ruby โˆš โˆš โˆš
Java โˆš โˆš โˆš
09-10
Ruby โˆš โˆš โˆš
Java โˆš โˆš โˆš
11-12
Ruby โˆš โˆš โˆš
Java โˆš โˆš โˆš

Embed

Here's what I actually used on Windows. This assumes the ffmpeg executable has been moved to a bin directory in the root of the project. This set up made it easy to swap directory and file names out across different videos.

.\bin\ffmpeg.exe ^
    -i ".\09_10_acceptance_tests_vs_unit_tests\java\Cucumber School - 01x09+10 - Acceptance Tests vs Unit Tests (Java).mp4" ^
    -i ".\09_10_acceptance_tests_vs_unit_tests\java\Cucumber School - 01x09+10 - Acceptance Tests vs Unit Tests (Java).srt" ^
    -c copy -c:s mov_text -metadata:s:s:0 language=eng ^
    ".\09_10_acceptance_tests_vs_unit_tests\java\Cucumber School - 01x09+10 - Acceptance Tests vs Unit Tests (Java) - Subs.mp4"

.\bin\ffmpeg.exe ^
    -i ".\09_10_acceptance_tests_vs_unit_tests\ruby\Cucumber School - 01x09+10 - Acceptance Tests vs Unit Tests (Ruby).mp4" ^
    -i ".\09_10_acceptance_tests_vs_unit_tests\ruby\Cucumber School - 01x09+10 - Acceptance Tests vs Unit Tests (Ruby).srt" ^
    -c copy -c:s mov_text -metadata:s:s:0 language=eng ^
    ".\09_10_acceptance_tests_vs_unit_tests\ruby\Cucumber School - 01x09+10 - Acceptance Tests vs Unit Tests (Ruby) - Subs.mp4"

cucumber-school-subtitles's People

Contributors

mxygem avatar

Watchers

Matt Wynne avatar James Cloos avatar

cucumber-school-subtitles's Issues

Licensing

I'm thinking we should put this repo under the cucumber-ltd owner, with (c) Cucumber Ltd, license it as creative commons non-commercial, and make it a public repo.

It feels like that way someone else might potentially take on the work of translating these, and I really see no reason to hide them.

@jaysonesmith @jbpros can you see any reason why that would be a bad idea?

Need script for massaging caption frame numbers

Each caption 'frame' is numbered in the webvtt file and through my corrections, the numbers get thrown off. While VLC and Quicktime don't seem to care, in pursuit of outputting a well-done product, this should be fixed.

I used to have one created, but need to redo it as I've lost it.

Revisit ALL videos after initial run

Need to make sure that all videos are consistent across the board after all have been worked on. Things like style, timing, and line length/count will be key to get consistent.

This replaces and expands on #3 & #4

US English -> UK English

Need to make sure the things like behaviour are consistent across all videos. Additionally, things where UK english would use an s instead of a z should be investigated.

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.