This is relatively straight-forward with ffmpeg:
ffmpeg -i input -ss 00:10:07 -to 01:28:57 -vf "fade=in:start_time=00:10:07:duration=1,fade=out:start_time=01:28:57:duration=1" -c:a copy output
Add the video encoder options to your linking.
Please note that this will re-compress the entire video. If processing power is the bottle-neck, you can (in theory) apply the fades separately and then concatenate around the main part.
Assuming your input is x264 in mp4 with 30 fps with I-frames every 10 seconds and libx264 produces a byte-stream that is reasonably compatible to what the input is made out of, you can try this:
# fist, find the I-frames (this does not do anything, you need to look at it yourself)
ffprobe -v error -skip_frame nokey -show_entries frame=pts_time -select_streams v -of csv=p=0 input.mp4
# for the fade-in, using the to specifier I move the end time of the segment right in front of the next I-frame (I know the I-frame's presentation time from the prior command)
ffmpeg -i input.mp4 -ss 00:10:07 -to 00:10:9.96666666 -vf "fade=in:start_time=$((10*60+7)):duration=1" -c:v libx264 -crf 18 -c:a copy fade_in_part.mp4
# for the fade-out, I use an accurate seek with the ss after the input. the to is where the fade shall end. the fade's start_time is absolute.
ffmpeg -i input.mp4 -ss 01:28:50 -to 01:28:58 -vf "fade=out:start_time=$((1*3600+28*60+57)):duration=1" -c:v libx264 -crf 18 -c:a copy fade_out_part.mp4
# for the main part, I use I-frame seeks (with ss and to before the input)
ffmpeg -ss 00:10:10 -to 01:28:49.96666666 -i input.mp4 -c copy main_part.mp4
# now put the three parts together
ffmpeg -f concat -safe 0 -i file_list.txt -c copy output.mp4
Where file_list.txt contains:
file 'fade_in_part.mp4'
file 'main_part.mp4'
file 'fade_out_part.mp4'
This way, you will write the main part twice, making the I/O the bottleneck.
I regard this method as finicky and hard to get right.