Encoding Developer Assignment Questions
1. Create an encoding profile
Your assignment is to write a bash script that uses ffmpeg command line tool and
transcode an input video file according to the requirements below.
Requirements
Please read these requirements carefully. Your assignment will not be accepted otherwise
1. Script must be bash script and can be run from linux command line.
2. Script will be named as “[Link]” and usage will be as below.
Usage: [Link] INPUT_FILE OUTPUT_FILE
e.g: $./[Link] /data/input.mp4 /data/[Link]
3. Script must use ffmpeg command line tool to transcode input file
([Link]).
4. Output file format should comply with the specification in Table 1.1.
5. Output file video track should comply with the specification in Table 1.2.
6. Output file audio track should comply with the specification in Table 1.3.
7. Please comment on your output if there is any discrepancy, and explain possible
ways to address the problem if any.
Table 1.1 : Format Specification
Description Requirement
Format MPEG-TS (Transport Stream)
File Extension .ts
PMT PID 0x01E0 (480)
Video PID (includes PCR) 0x01E1 (481)
Audio PID 0x01E2 (482)
Bitrate 6 Mbps (CBR transport stream)
Table 1.2 : Video Specification
Description Requirement
Codec AVC (H.264 | MPEG-4 Part 10)
Profile AVC Baseline Profile
Resolution 1080p
Aspect Ratio 16:9
Bitrate 5 Mbps (CBR mode)
Chroma Subsampling 4:2:2
GOP size 50
B frames 3
Table 1.3 : Audio Specification
Description Requirement
Codec AAC-HE (High Efficiency Advanced Audio
Coding)
Channels Stereo
Sampling Rate 44100
Bitrate 64 Kbps
Deliverables
Please deliver the following items via email:
1. A bash script named “[Link]”.
2. Any comment on the results in a flat text file named “[Link]”
Deadline
Deliver by the deadline as communicated to you by your recruiter. Deadline is extremely
important.
2. SCTE-35 Parser
Your assignment is to write a C program on linux which will parse a binary file and
output a text file according to the requirements below. Binary file contains one or more
consecutive “SCTE-35 splice_info_section()“ data and will be provided to you
via email by the recruiter. Output text file should contain the field values of “SCTE-35
splice_info_section()“s in human readable form.
Requirements
Please read these requirements carefully. Your assignment will not be accepted otherwise
1. Program must be written in C language on a linux platform. Please use a plain
makefile and use GNU make.
2. Program will be named as “scte35_parser.exe” and usage will be as below.
Usage: scte35_parser.exe INPUT_FILE OUTPUT_FILE
e.g: $./scte35_parser.exe [Link] [Link]
3. Input file contains one or more consecutive “SCTE-35
splice_info_section()“ data. You may only implement splice_insert() and
time_signal() splice command types and segmentation_descriptor() among
splice descriptors. The SCTE-35 standard document url is
[Link]
4. Output file should be a text file containing all the splice_info_section() in
the input file. Example output format is :
splice_info_section() {
table_id : 1
section_syntax_indicator : 1
…
...
splice_command_type : 6
time_signal () {
splice_time () {
time_specified_flag: 0
...
}
}
…
...
}
splice_info_section() {
…
...
}
5. Your program should parse the whole input file first and store all
splice_info_section()’s in memory. Only after parsing is done you should
write this array to the output file.
6. Handle all the errors and show the errors on the screen. In case of error, exit the
program with a non-zero error code.
7. The only exit point of the program should be at the end of main().
8. Do not use 3rd party libraries.
Deliverables
Please deliver the following items via email:
1. A tar file contains the source code and makefile of your program.
2. Any comment on the results in a flat text file named “[Link]”.
Deadline
Deliver by the deadline as communicated to you by your recruiter. Deadline is extremely
important.