Скрипты — Из DVD в *.mkv
Делаем *.mkv из двд со стандартными настройками ( настройки подогнал друг для оптимального рипа с оптимальным временем для моего проца Q6600)
Сами скрипты были предоставлены мне знакомым, игра с настройками пассов рипа желательны только тем кто понимает
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
#!/bin/bash #http://animanda.net/usr/ani/arcalc/ - сайт по расчету сара # source DVD="/home/user/some.ISO" # путь до имаджа двд TITLE="13" #видео тайтл #sample options will come here # other data AIDS="128 129" # звуковые дорожки SIDS="0" # айди сабов # processing (в кропе обрезаем черные полосы надо чтоб делилось на 4 результат, конечная_ширина:конечная_высота:отрезаем_слева:отрезаем_сверху) FILTERS="pullup,softskip,crop=716:464:2:6,harddup,format=i420" #для NTSC #FILTERS="crop=720:428:0:74,format=i420" #для PAL # output SIZE="716x464" #после кропа FPS="24000/1001" #для НТСК, для ПАЛ просто 25 SAR="32:27" #расчитываем сайтом выше ( тут читайте доки, атм надо знать фильм ITU или не нет) BITRATE="1827" #for 1/3 (конечный битрейт что хотим, расчитываеться отдельно) # ---------------------------------------------------------------------------- # rip the audio for AID in ${AIDS}; do mencoder -dvd-device ${DVD} dvd://${TITLE} -nocache \ -aid ${AID} \ -ofps ${FPS} -of rawaudio -ovc copy -oac copy \ -o audio-${AID}.ac3 -really-quiet 2>&1 > /dev/null; done # rip the subs for SID in ${SIDS}; do mencoder -dvd-device ${DVD} dvd://${TITLE} -nocache \ -sid ${SID} -vobsubout subs-${SID} \ -ofps ${FPS} -ovc copy -oac copy \ -o /dev/null -really-quiet 2>&1 > /dev/null; done # extract the chapters info dvdxchap -t ${TITLE} ${DVD} > chapters # ---------------------------------------------------------------------------- #make a pipe rm .tmp.yuv mkfifo .tmp.yuv #we'll make sample #TODO:option if it's only sample,with sample or without ) #mencoder -dvd-device ${DVD} dvd://${TITLE} \ # -ss 2700 \ # -frames 700 \ # -ovc copy -nosound -of rawvideo -o sample.mpg #-dvd-device ${DVD} dvd://${TITLE} -nocache \ # 1st pass (fast) mencoder -dvd-device ${DVD} dvd://${TITLE} -nocache \ -vf ${FILTERS} \ -ofps ${FPS} -of rawvideo -ovc raw -oac copy \ -o .tmp.yuv -really-quiet 2>&1 > /dev/null & x264 --pass 1 --bitrate ${BITRATE} --fps ${FPS} --sar ${SAR} \ --partitions all --8x8dct \ --me esa --subme 9 --merange 24 --b-adapt 2 \ --weightb --bframes 4 --aq-strength 0.6 \ --ref 6 --mixed-refs \ --trellis 2 \ --direct auto --no-fast-pskip \ --deblock -3:-3 --no-dct-decimate \ --threads auto --progress \ --output /dev/null ".tmp.yuv" ${SIZE} # 2nd pass mencoder -dvd-device ${DVD} dvd://${TITLE} -nocache \ -vf ${FILTERS} \ -ofps ${FPS} -of rawvideo -ovc raw -oac copy \ -o .tmp.yuv -really-quiet 2>&1 > /dev/null & x264 --pass 2 --bitrate ${BITRATE} --fps ${FPS} --sar ${SAR} \ --partitions all --8x8dct \ --me esa --subme 9 --merange 24 --b-adapt 2 \ --weightb --bframes 4 --aq-strength 0.6 \ --ref 6 --mixed-refs \ --trellis 2 \ --direct auto --no-fast-pskip \ --deblock -3:-3 --no-dct-decimate \ --threads auto --progress \ --output "encode.264" ".tmp.yuv" ${SIZE} # remove the pipe rm .tmp.yuv |
а потом
mkvmerge --title title -o filename.mkv --chapters chapters --language 0:en --default-duration 0:24000/1001fps (по дефолту идет для пал 25) encode.264 --language 0:en audio-131.ac3 --language 0:en subs-4.idx --language 2:es subs-2.idx
Расчитываем битрейт по длине фильма(сек) битрейту звука(если несколько дорожек сделаете, то сложить надо) и конечному размеру файлы ( лучше идти по стандартам 1/3 2/3 2/5 3/5 двд (4.37гиг)), битрейт оптимальный от 1600-2300 я считаю.
cat /usr/local/bin/calculate-bitrate
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
#!/usr/bin/python import sys def usage(): print "usage: %s LENGTH TARGET-SIZE [AUDIO-BITRATE]" % sys.argv[0] print " LENGTH: movie length (sec)" print " TARGET-SIZE: target filesize (GB)" print " AUDIO-BITRATE: audio bitrate (kbps) [default: 448]" if len(sys.argv) not in [3, 4]: usage() sys.exit() audiorate = 448 overhead = 0.45 # mkv, % length = float(sys.argv[1]) size = float(sys.argv[2]) * (1024 ** 3) # get bytes if len(sys.argv) == 4: audiorate = int(sys.argv[3]) audiosize = audiorate * 1000 * length / 8 videosize = (size - audiosize) / (1.0 + overhead / 100) videorate = int(videosize / length / 1000 * 8) print videorate |