यह मेरा समाधान है, यह ubuntu-16.04.02-LTS पर अच्छी तरह से काम करता है। यह एक और पोस्ट किए गए समाधान पर आधारित है लेकिन अध्याय के अध्याय और प्रत्येक अध्याय के लिए उत्पन्न फ़ाइलों को संभालने में सुधार हुआ है।
यह एक नमूना निष्पादन है:
$ mkv-split-chapters some-mkv-file.mkv
Filename: some-mkv-file
Extension: mkv
Filedir: .
ffmpeg -i some-mkv-file.mkv -ss 0.000000 -to 394.800000 -acodec copy -vcodec copy ./some-mkv-file-#00.mkv
[...]
ffmpeg -i some-mkv-file.mkv -ss 394.800000 -to 767.160000 -acodec copy -vcodec copy ./some-mkv-file-#01.mkv
[...]
ffmpeg -i some-mkv-file.mkv -ss 757.160000 -to 1216.720000 -acodec copy -vcodec copy ./some-mkv-file-#02.mkv
[...]
यह स्क्रिप्ट है:
$ cat /usr/local/bin/mkv-split-chapters
#!/bin/bash
file="$1"
if [ -z "$file" ]; then
echo "Missing file argument!"
exit 1
fi
filename=$(basename "$file")
fileextension="${filename##*.}"
filename="${filename%.*}"
filedir=$(dirname "$file")
echo "Filename: $filename"
echo "Extension: $fileextension"
echo "Filedir: $filedir"
ffmpeg -i $file 2>&1 | grep 'Chapter' | grep 'start' | grep ', end' | awk "{
chapter=\$2
# replace : with nil
gsub(/:/, \"\", chapter)
start=\$4
# remove everything but 0-9.
gsub(/[^0123456789\.]/, \"\", start)
end=\$6
command=sprintf(\"ffmpeg -i $file -ss %s -to %s -acodec copy -vcodec copy $filedir/$filename-%s.$fileextension\n\", start, end, chapter)
print(command)
system(command)
}"
स्क्रिप्ट भी यहाँ उपलब्ध है:
https://github.com/dpsenner/mkv-split-chapters