# mkv2mp4 ffmpeg/ffprobe wrapper [![pknw1logo-white.png](https://bookstack.pknw1.co.uk/uploads/images/gallery/2025-01/scaled-1680-/HLPpknw1logo-white-png.png)](https://bookstack.pknw1.co.uk/uploads/images/gallery/2025-01/scaled-1680-/HLPpknw1logo-white-png.png) ##### `/usr/local/bin/mkv2mp4.sh` ****Quick MKV to MP4 conversion with FFMPEG**** Converts from MKV to MP4 to allow rapid streaming for media ``` #!/bin/bash # mkv2mp4.sh function quit() { echo "[FAIL] - ${1}" exit } function success() { echo "[ OK ] - ${1}" } [[ -z $1 ]] && quit "no source file specified" ! [[ -z $(which ffmpeg) ]] && success "ffmpeg binary located" || quit "unable to locate ffmpeg" ! [[ -z $(which ffprobe) ]] && success "ffprobe binary located" || quit "unable to locate ffprobe" ! [[ -z $(which figlet) ]] && success "figlet binary located" || quit "unable to locate figlet" INPUT="${1}" FULL_SOURCE=$(realpath "${INPUT}") FOLDER=$(dirname "${FULL_SOURCE}") SOURCE_FILE=$(echo "${FULL_SOURCE}"| awk -F/ '{print $NF}') SOURCE_EXT=$(echo "${SOURCE_FILE}"| awk -F. '{print $NF}') TARGET_FILE=$(echo "${SOURCE_FILE}"| sed 's/.mkv/.mp4/') cd "${FOLDER}" figlet MKV2MP4 >> "${FOLDER}/mkv2mp4.log" cat << EOF >> "${FOLDER}/mkv2mp4.log" DATE : $(date) SOURCE : ${FULL_SOURCE} TARGET : ${FOLDER}/${TARGET_FILE} EOF #[[ -f "${SOURCE_FILE}" ]] && success "source file located" || quit "unable to access source file" #touch /tmp/test/.mkv2mp4 && success "folder writeable" || quit "no permission to write to folder" #[[ -f "${FOLDER}/${TARGET_FILE}" ]] && quit "target file ${TARGET_FILE} already exists" || success "target filename ${TARGET} is available" #figlet SOURCE >> "${FOLDER}/mkv2mp4.log" #echo $(date) >> "${FOLDER}/mkv2mp4.log" #ffprobe "${FULL_SOURCE}" >> "${FOLDER}/mkv2mp4.log" || quit "ffprobe failed to scan file" #figlet ENCODE >> "${FOLDER}/mkv2mp4.log" #echo $(date) >> "${FOLDER}/mkv2mp4.log" ffmpeg -i "${FULL_SOURCE}" -c copy "${TARGET_FILE}" && mv "${FULL_SOURCE}" /tmp/encodes/ #figlet OUTPUT >> "${FOLDER}/mkv2mp4.log" #echo $(date) >> "${FOLDER}/mkv2mp4.log" #ffprobe "${FOLDER}/${TARGET_FILE}" >> "${FOLDER}/mkv2mp4.log" || quit "ffprobe failed to scan file" #[[ -f "${FOLDER}/${TARGET_FILE}" ]] && mv "${FULL_SOURCE}" /tmp/encodes/ sudo chmod -R 777 "${FOLDER}" ``` ****execution****
- [ ] `mkv2mp4.sh ` - [ ] reads the source file - [ ] uses ffprobe to get metadata - [ ] fast re-code the mkv to mp4 - [ ] replace bad charachters in file and foldernames
****further info****
****Product Home**** [Link](https://www.pknw1.co.uk)
****Documentation**** [Link](https://www.pknw1.co.uk)
****Github**** [Link](https://www.pknw1.co.uk)
****DockerHub**** [Link](https://www.pknw1.co.uk)
****Misc**** [Link](https://www.pknw1.co.uk)
more text more text