MTS zu MOV konvertieren §

Dies ist eine Methode, nicht die einzige und nicht generell gültig.

Diesen Code habe ich mir aus verschiedenen Vorlagen aus dem Netz zusammengestellt und stelle ihn hier, wie gewohnt (ohne alles) zur Verfügung:

#! /usr/bin/env bash

EXT="MTS"

function transcode
  {
  echo Recoding "${1}"

  FILE="${1}"
  ffmpeg -y -i "${FILE}.${EXT}" -vn -acodec pcm_s16le -ac 2 "_${FILE}.wav"

  YUV=`ffmpeg -i "${FILE}.${EXT}" 2>&1 | grep yuv | cut -d, -f2 | cut -d\  -f2`
  FPS=`ffmpeg -i "${FILE}.${EXT}" 2>&1 | grep yuv | cut -d, -f5 | cut -d\  -f2`
  ffmpeg -y -r ${FPS} -i "${FILE}.${EXT}" -an -pix_fmt ${YUV} -r ${FPS} -f rawvideo "_${FILE}.yuv"

  SIZ=`ffmpeg -i "${FILE}.${EXT}" 2>&1 | grep yuv | cut -d, -f3 | cut -d\  -f2`
  ffmpeg -y -i "_${FILE}.wav" -s ${SIZ} -i "_${FILE}.yuv" -acodec pcm_s16le -ac 2 \
         -vcodec mpeg4 -sameq -s hd1080 -aspect 16:9 -r ${FPS} -copyts "${FILE}.mov"

  rm "_${FILE}.wav"
  rm "_${FILE}.yuv"

  mkdir -p fertig
  mv "${FILE}.mov" fertig
  mv "${FILE}.${EXT}" fertig
  }

IFS="
"
for F in `ls -1 *.${EXT}`
  do
  FILE="${F%%.*}"
  transcode "${FILE}"
  done

Die Arbeitsweise ist primitiv

  1. Isolieren der Audiospuren als wav-Datei
  2. Konvertieren der Videodaten zu yuv-raw-Format
  3. Kombinieren beider Dateien und recodieren der Videodaten zur mov-Datei

Die Videozwischendatei kann riesig werden da sie die Bilder einzeln enhält um die Qualitätsverluste so gering wie möglich zu halten. Der Parameter '-sameq' sorgt dafür, dass das Ergebnis die gleiche Qualität hat wie das Original.

Das Skript hüllt den gesamten Vorgang in eine Schleife, die dafür sorgt, dass alle MTS-Dateien im aktuellen Verzeichnis nacheinander konvertiert werden. Die Originale bleiben dabei erhalten. Dennoch: Vorsicht, das Skript enthält zwei 'rm'-Befehle, deren Parameter nicht kontrolliert wird.

Das Ergebnis lässt sich mit iMovie, Final Cut Pro X und anderen Programmen, die mov-Dateien nehmen, verarbeiten.

- 25.10.2010 bis 28.07.2011 -

Freigesetzt