Last active
July 10, 2023 15:13
-
-
Save dudewheresmycode/513b5e540fadf11631aa20e581de050e to your computer and use it in GitHub Desktop.
Transcode fragmented MP4s and package into HLS and DASH using shaka-packager
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
packager \ | |
'in=./tmp/output_540p.mp4,stream=video,init_segment=./tmp/output/video_3000_0/video_init.mp4,segment_template=./tmp/output/video_3000_0/video_$Number$.m4s' \ | |
'in=./tmp/output_720p.mp4,stream=video,init_segment=./tmp/output/video_1700_1/video_init.mp4,segment_template=./tmp/output/video_1700_1/video_$Number$.m4s' \ | |
'in=./tmp/output_1080p.mp4,stream=video,init_segment=./tmp/output/video_1200_2/video_init.mp4,segment_template=./tmp/output/video_1200_2/video_$Number$.m4s' \ | |
'in=./tmp/output_audio_128.mp4,stream=audio,language=en,roles=main,hls_name=main_en_2,init_segment=./tmp/output/audio_96_2/audio_init.mp4,segment_template=./tmp/output/audio_96_2/audio_$Number$.m4s' \ | |
'in=./tmp/output_audio_196.mp4,stream=audio,language=en,roles=main,hls_name=main_en_3,init_segment=./tmp/output/audio_64_3/audio_init.mp4,segment_template=./tmp/output/audio_64_3/audio_$Number$.m4s' \ | |
--fragment_duration 6 \ | |
--segment_duration 6 \ | |
--hls_playlist_type vod \ | |
--hls_master_playlist_output "./tmp/output/main.m3u8" \ | |
--generate_static_live_mpd \ | |
--mpd_output \ | |
"./tmp/output/manifest.mpd" | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
INPUT_FILE=/path/to/mp4 | |
COMMON_OPTS="-c:v libx264 -movflags frag_keyframe+empty_moov -frag_duration 6000000 -sc_threshold 0 -g 144" | |
ffmpeg \ | |
-i $INPUT_FILE \ | |
-threads 2 \ | |
-filter_complex "[v:0]split=3[in1][in2][in3];[a:0]asplit=2[aud1][aud2];[in1]scale=w=1920:h=1080:force_original_aspect_ratio=decrease[out1];[in2]scale=w=1280:h=720:force_original_aspect_ratio=decrease[out2];[in3]scale=w=960:h=540:force_original_aspect_ratio=decrease[out3]" \ | |
-map "[out1]" $COMMON_OPTS -b:v 8000k -maxrate 8000k -bufsize 4000k ./tmp/output_1080p.mp4 \ | |
-map "[out2]" $COMMON_OPTS -b:v 3000k -maxrate 3000k -bufsize 1500k ./tmp/output_720p.mp4 \ | |
-map "[out3]" $COMMON_OPTS -b:v 1200k -maxrate 1200k -bufsize 600k ./tmp/output_540p.mp4 \ | |
-map "[aud1]" -c:a aac -b:a 128k -ac 2 ./tmp/output_audio_128.mp4 \ | |
-map "[aud2]" -c:a aac -b:a 192k -ac 2 ./tmp/output_audio_196.mp4 | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment