Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- file=$(basename "$1")
- ffprobe -loglevel quiet -show_frames "$1" | while read line
- do
- [[ "$line" = "media_type=video" ]] && videoframe=1
- [[ "$line" = "key_frame=1" ]] && [[ $videoframe ]] && keyframe=1
- [[ "$line" == "[/FRAME]" ]] && unset videoframe && unset keyframe
- if [[ "$line" = pkt_dts_time=* && $videoframe && $keyframe ]]
- then
- IFS="= " read key time <<< $line
- if [[ $(echo "$time<$2"| bc) == 1 ]]
- then
- prevtime=$time
- else
- s=$(echo "$prevtime-0.05" | bc)
- diff=$(echo "$2-$s" | bc)
- t=$(echo "$diff+$3" | bc)
- ffmpeg -i "$1" -ss $s -t $t -acodec copy -vcodec copy -sn "$file-$s.mp4"
- exit
- fi
- fi
- done
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement