Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- #параметры, вынесенные сначала, которые наверняка придётся когда-нибудь менять
- OUTPUT="output_$(date +%s).webm" #как будем сохранять результат
- MXS=12400 #максимальный размер выходного файла в килобайтах
- AB=64 #битрейт аудио kbit/s
- FPARAM='-y -loglevel warning' #дополнительные глобальные параметры ffmpeg
- #временные файлы
- TMPA=./.temp_audio.ogg #имя и путь до аудиодорожки
- TMPV=./.temp_video.webm #имя и путь до видеопотока
- ###
- echo "Введите путь до исходного файла"
- read INPUTH
- until [[ -r $INPUTH ]]; do
- echo "Неверный путь. Введите путь до исходного файла."
- read INPUTH
- done
- echo "Введите начало отрезка в формате мин:сек"
- read STRT
- echo "Введите продолжительность фрагмента в секундах."
- read TIME
- echo "Введите путь до субтитров или нажмите ENTER, чтобы пропустить."
- read SUBS
- echo "Чтобы не добавлять аудиодорожку, впечатайте "N""
- read AITEM
- # теперь примерно посчитаем битрейт видео, математика уровня /b/
- let GB=$MXS/$TIME
- let VB=$[$GB*8]-$[$AB*0,9]
- VCPARAM=" -c:v libvpx-vp9 -b:v ${VB}k -lag-in-frames 16 " #параметры видеокодека
- #кодирум с субтитрами или без них
- if [[ ! -r $SUBS ]]; then
- echo "Субтитры не указаны или указаны неверно. Продолжаем без них."
- echo "Кодируем видео. Первый проход..."
- ffmpeg $FPARAM -ss $STRT -i "$INPUTH" -t $TIME -an -sn $VCPARAM -pass 1 "$TMPV"&&
- echo "Кодируем видео. Второй проход..."&&
- ffmpeg $FPARAM -ss $STRT -i "$INPUTH" -t $TIME -an -sn $VCPARAM -auto-alt-ref 1 -quality good -pass 2 "$TMPV"
- else
- echo "Субтитры будут добавлены."
- echo "Кодируем видео. Первый проход..."
- ffmpeg $FPARAM -i "$INPUTH" -ss $STRT -t $TIME -an -vf subtitles="$SUBS" $VCPARAM -pass 1 "$TMPV"&&
- echo "Кодируем видео. Второй проход..."&&
- ffmpeg $FPARAM -i "$INPUTH" -ss $STRT -t $TIME -an -vf subtitles="$SUBS" $VCPARAM -auto-alt-ref 1 -quality good -pass 2 "$TMPV"
- fi
- #кодируем аудиодорожку и муксим файлы, или не делаем этого
- case "$AITEM" in
- N|n) echo "Аудиодорожка добавлена не будет."
- mv "$TMPV" "$OUTPUT";;
- *) echo "Кодируем звук..."
- ffmpeg $FPARAM -ss $STRT -i "$INPUTH" -t $TIME -vn -sn -c:a libopus -ac 2 -b:a ${AB}k -vbr on "$TMPA"&&
- echo "Склеиваем звук и видео..."&&
- ffmpeg $FPARAM -i "$TMPV" -i "$TMPA" -c copy "$OUTPUT"&&
- echo "Удаляем временные файлы..."
- rm "$TMPA"
- rm "$TMPV"
- esac
- rm ./ffmpeg2pass-0.log
- echo "готово: "$(ls -d -s -h "$OUTPUT")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement