From d3a941a7251e8a80fbef66a50d419f7c58b62a7c Mon Sep 17 00:00:00 2001 From: aweaver Date: Sat, 15 Apr 2017 14:02:23 -0700 Subject: [PATCH 1/5] add script for audio --- check_audio_framemd5.sh | 77 +++++++++++++++++++++++++++++++++++++++++ index.html | 2 +- 2 files changed, 78 insertions(+), 1 deletion(-) create mode 100755 check_audio_framemd5.sh diff --git a/check_audio_framemd5.sh b/check_audio_framemd5.sh new file mode 100755 index 0000000..ecae7f4 --- /dev/null +++ b/check_audio_framemd5.sh @@ -0,0 +1,77 @@ +#!/usr/bin/env bash + SCRIPT=$(basename "${0}") + VERSION='2017-04-15' + AUTHOR='ffmprovisr' + RED='\033[1;31m' + BLUE='\033[1;34m' + NC='\033[0m' + +if [[ ${OSTYPE} = "cygwin" ]] || [ ! $(which diff) ]; then + echo -e "${RED}Error: 'diff' is not installed by default. Please install 'diffutils' from Cygwin.${NC}" + exit 1 +fi + +_output_prompt(){ + cat < -m ] +EOF + exit 1 +} + +_output_help(){ + cat < -m + Pass to the script the audio-visual file and the corresponding MD5 + file to check. +Dependency: + ffmpeg +About: + Version: ${VERSION} + Website: https://github.com/amiaopensource/ffmprovisr/blob/gh-pages/check_framemd5.sh +EOF + exit 0 +} + +unset input_file +unset input_hash + +while getopts ":hi:m:" opt; do + case "${opt}" in + h) _output_help ;; + i) input_file=$OPTARG ;; + m) input_hash=$OPTARG ;; + :) echo -e "${RED}Error: option -${OPTARG} requires an argument${NC}" ; _output_prompt ;; + *) echo -e "${RED}Error: bad option -${OPTARG}${NC}" ; _output_prompt ;; + esac +done + +[[ -z "${#}" || ! ${input_file} || ! ${input_hash} ]] && _output_prompt +echo -e "${BLUE}Please wait...${NC}" +unset md5_tmp +if [[ $OSTYPE = "cygwin" ]]; then + md5_tmp=""${USERPROFILE}/$(basename ${input_hash}).tmp"" +else + md5_tmp="${HOME}/$(basename ${input_hash}).tmp" +fi +# Find audio frame size for hash calculation +sample_rate=$(grep -v '^#' ${input_hash} | head -n 1 | tr -d ' ' | cut -d',' -f4) +$(ffmpeg -i ${input_file} -loglevel 0 -filter_complex "asetnsamples=n='$sample_rate'" -f framemd5 -vn ${md5_tmp}) +[[ ! -f ${md5_tmp} ]] && { echo -e "${RED}Error: '${input_file}' is not a valid audio-visual file.${NC}" ; _output_prompt ; } +unset old_file +unset tmp_file +unset sample_rate +old_file=$(grep -v '^#' ${input_hash}) +tmp_file=$(grep -v '^#' ${md5_tmp}) +if [[ "${old_file}" = "${tmp_file}" ]]; then + echo -e "${BLUE}'$(basename ${input_file})' matches '$(basename ${input_hash})'${NC}" + rm "${md5_tmp}" +else + echo -e "${RED}The following differences were detected between '$(basename ${input_file})' and '$(basename ${input_hash})':${NC}" + diff "${input_hash}" "${md5_tmp}" + rm "${md5_tmp}" +fi diff --git a/index.html b/index.html index 43b1fc9..ce2f726 100644 --- a/index.html +++ b/index.html @@ -1201,7 +1201,7 @@ foreach ($file in $inputfiles) {
-vn
ignores the video stream (video no)
output_file
path, name and extension of the output file
-

You may verify an MD5 checksum file created this way by using a Bash script.

+

You may verify an MD5 checksum file created this way by using a Bash script.

From 321d998b5a3d2c1f3a39187f22cd4827620c39d9 Mon Sep 17 00:00:00 2001 From: aweaver Date: Sun, 16 Apr 2017 07:01:40 -0700 Subject: [PATCH 2/5] name,filter and spaces --- check_audio_framemd5.sh | 16 ++++++++-------- check_framemd5.sh => check_video_framemd5.sh | 0 index.html | 4 ++-- 3 files changed, 10 insertions(+), 10 deletions(-) rename check_framemd5.sh => check_video_framemd5.sh (100%) diff --git a/check_audio_framemd5.sh b/check_audio_framemd5.sh index ecae7f4..ca987a1 100755 --- a/check_audio_framemd5.sh +++ b/check_audio_framemd5.sh @@ -54,24 +54,24 @@ done echo -e "${BLUE}Please wait...${NC}" unset md5_tmp if [[ $OSTYPE = "cygwin" ]]; then - md5_tmp=""${USERPROFILE}/$(basename ${input_hash}).tmp"" + md5_tmp="${USERPROFILE}/$(basename "${input_hash}").tmp" else - md5_tmp="${HOME}/$(basename ${input_hash}).tmp" + md5_tmp="${HOME}/$(basename "${input_hash}").tmp" fi # Find audio frame size for hash calculation -sample_rate=$(grep -v '^#' ${input_hash} | head -n 1 | tr -d ' ' | cut -d',' -f4) -$(ffmpeg -i ${input_file} -loglevel 0 -filter_complex "asetnsamples=n='$sample_rate'" -f framemd5 -vn ${md5_tmp}) +sample_rate=$(grep -v '^#' "${input_hash}" | head -n 1 | tr -d ' ' | cut -d',' -f4) +ffmpeg -i "${input_file}" -loglevel 0 -af "asetnsamples=n='$sample_rate'" -f framemd5 -vn "${md5_tmp}" [[ ! -f ${md5_tmp} ]] && { echo -e "${RED}Error: '${input_file}' is not a valid audio-visual file.${NC}" ; _output_prompt ; } unset old_file unset tmp_file unset sample_rate -old_file=$(grep -v '^#' ${input_hash}) -tmp_file=$(grep -v '^#' ${md5_tmp}) +old_file=$(grep -v '^#' "${input_hash}") +tmp_file=$(grep -v '^#' "${md5_tmp}") if [[ "${old_file}" = "${tmp_file}" ]]; then - echo -e "${BLUE}'$(basename ${input_file})' matches '$(basename ${input_hash})'${NC}" + echo -e "${BLUE}'$(basename "${input_file}")' matches '$(basename "${input_hash}")'${NC}" rm "${md5_tmp}" else - echo -e "${RED}The following differences were detected between '$(basename ${input_file})' and '$(basename ${input_hash})':${NC}" + echo -e "${RED}The following differences were detected between '$(basename "${input_file}")' and '$(basename "${input_hash}")':${NC}" diff "${input_hash}" "${md5_tmp}" rm "${md5_tmp}" fi diff --git a/check_framemd5.sh b/check_video_framemd5.sh similarity index 100% rename from check_framemd5.sh rename to check_video_framemd5.sh diff --git a/index.html b/index.html index ce2f726..5631605 100644 --- a/index.html +++ b/index.html @@ -1172,7 +1172,7 @@ foreach ($file in $inputfiles) {
-an
ignores the audio stream (audio no)
output_file
path, name and extension of the output file
-

You may verify an MD5 checksum file created this way by using a Bash script.

+

You may verify an MD5 checksum file created this way by using a Bash script.

@@ -1187,7 +1187,7 @@ foreach ($file in $inputfiles) {