Search code examples
iosstreamingm3u8

iOS Streaming Media - Media File Segmenter


Just wondering if anyone knows of a script or program that does this automatically and / or as a batch process for say 50 mp4 videos. I'm talking about the process of segmenting a video using the CLI mediafilesegmenter command for streaming from Amazon S3 as a m3u8 and then creating a variant playlist file.


Solution

  • #!/bin/sh -x
    #set variables for naming conventions
    
    path="$1"
    
    if [[ -d $path ]]; then
    
        cd "$path"
    
        for file in *{.mov,.mp4}
    
        do
    
            if [[ -a $file ]]; then
    
                file_name="$file"
                file_no_extension=${file_name%.*}
                file_base_name=$(basename "$file_no_extension")
                file_output_dir="$file_no_extension/high"
                file_plist="$file_no_extension.plist"
    
    
                #Make directories per video
                mkdir "$file_no_extension"
                mkdir "$file_output_dir"
    
                #Segment Video
                mediafilesegmenter -t 5 -I "$file_name" -f "$file_output_dir"
    
                #Move plist file
                mv "$file_plist" "$file_output_dir/$file_base_name.plist"
    
                #Change directories
                cd "$file_no_extension"
    
                #Generate Playlist
                variantplaylistcreator "high/prog_index.m3u8" "high/$file_base_name.plist"
    
                cd ".."
            fi
    
        done
    
    elif [[ -f $path ]]; then
    
        file=$1
        file_name="$file"
        file_no_extension=${file_name%.*}
        file_base_name=$(basename "$file_no_extension")
        file_output_dir="$file_no_extension/high"
        file_plist="$file_no_extension.plist"
    
    
        #Make directories per video
        mkdir "$file_no_extension"
        mkdir "$file_output_dir"
    
        #Segment Video
        mediafilesegmenter -t 5 -I "$file_name" -f "$file_output_dir"
    
        #Move plist file
        mv "$file_plist" "$file_output_dir/$file_base_name.plist"
    
        #Change directories
        cd "$file_no_extension"
    
        #Generate Playlist
        variantplaylistcreator "high/prog_index.m3u8" "high/$file_base_name.plist"
    
        cd ".."
    fi