Adding CEA Captions To MP4 Stream.

Adding CEA Captions To MP4 Stream.

Create an srt file

1
00:00:00,000 --> 00:00:10,000
Random sentence 1

2
00:00:10,000 --> 00:00:20,000
Random sentence 2

3
00:00:20,000 --> 00:00:30,000
Random sentence 3

...

54
00:08:50,000 --> 00:09:00,000
Random sentence 54

Convert the .srt file to .scc

pip install pycaption

Write a simple python script to make the conversion.

import sys
from pycaption import SRTReader, SCCWriter

def convert_srt_to_scc(input_srt, output_scc):
    with open(input_srt, 'r') as srt_file:
        srt_content = srt_file.read()

    captions = SRTReader().read(srt_content)
    scc_content = SCCWriter().write(captions)

    with open(output_scc, 'w') as scc_file:
        scc_file.write(scc_content)

if __name__ == "__main__":
    if len(sys.argv) != 3:
        print("Usage: python srt_to_scc.py input.srt output.scc")
        sys.exit(1)

    input_srt = sys.argv[1]
    output_scc = sys.argv[2]

    convert_srt_to_scc(input_srt, output_scc)

Convert the file with.

python srt_to_scc.py input.srt output.scc

Now use ffmpeg to add the captions to the mp4.

ffmpeg -i BigBuckBunny.mp4 -i output.scc -c copy -scodec mov_text -metadata:s:s:0 language=eng output.mp4

Done