Wie konvertieren von mkv-Filme in mp4 für das streaming auf XBox 360

Ich kaufte vor kurzem eine Synology Diskstation DS412+, und ich habe eine Anzahl von .mkv-Filme, die ich gerne konvertieren/transkodieren in mp4-Dateien, so dass ich kann streamen Sie diese direkt an meine XBox 360. Ich verwende Handbrake auf meinem laptop, aber ich würde lieber haben das geschehen direkt auf meinem NAS.

Ich bin sehr rostig auf Linux und neue zu transkodieren, aber das Skript, das ich derzeit habe ist Folgendes:

#!/bin/bash
for dir in *; do
  if test -d "$dir"; then
    #echo $dir
    for file in "$dir"/*.mkv; do
      noextension=${file%.*}.mp4
      ffmpeg -y -i "$file" -vcodec copy -acodec copy "$noextension"
    done
  fi
done

Welche, so wie ich es verstehe, einfach Kopien der audio-und video-Komponenten in den mkv-container und fügt Sie in eine neue mp4-container. Dieser arbeitete für einige meiner Dateien, aber es gibt eine Zahl, für die diese nicht funktioniert.

Folgende ist ein Beispiel der Ausgabe für eine fehlgeschlagene Ausführung:

ffmpeg version UNKNOWN, Copyright (c) 2000-2011 the FFmpeg developers
  built on Sep 16 2013 00:45:02 with gcc 4.2.1
  configuration: --prefix=/usr/syno --arch=i686 --target-os=linux --cross-prefix=/usr/local/i686-linux-gnu/bin/i686-linux-gnu- --enable-cross-compile --enable-optimizations --disable-yasm --disable-altivec --enable-pic --enable-shared --disable-static --disable-swscale-alpha --disable-ffserver --disable-ffplay --enable-libmp3lame --enable-libfaac --enable-nonfree --enable-version3 --enable-libopencore-amrnb --enable-libopencore-amrwb --disable-decoder=amrnb --disable-indev=alsa --disable-outdev=alsa --disable-encoder=dca --disable-encoder=ac3 --disable-encoder=ac3_fixed --disable-encoder=ac3_float --disable-encoder=eac3 --disable-decoder=dca --disable-decoder=eac3 --disable-decoder=truehd --cc=/usr/local/i686-linux-gnu/bin/i686-linux-gnu-ccache-gcc
  libavutil    50. 40. 1 /50. 40. 1
  libavcodec   52.120. 0 /52.120. 0
  libavformat  52.108. 0 /52.108. 0
  libavdevice  52.  4. 0 /52.  4. 0
  libavfilter   1. 77. 0 / 1. 77. 0
  libswscale    0. 14. 0 / 0. 14. 0
[matroska,webm @ 0x80726c0] Estimating duration from bitrate, this may be inaccurate

Seems stream 1 codec frame rate differs from container frame rate: 47.95 (5994/125) -> 23.98 (24000/1001)

...und dann eine Liste von Eingabe-Kapitel start-und end-Zeiten und dann...

 Stream #0.0(eng): Audio: aac, 48000 Hz, stereo, s16 (default)
 Stream #0.1(eng): Video: h264 (High), yuv420p, 1280x692 [PAR 1:1 DAR 320:173], 23.98 fps, 23.98 tbr, 1k tbn, 47.95 tbc (default)

...und dann eine Liste von Ausgabe-Kapitel start-und end-Zeiten und dann...

Stream #0.0(eng): Video: ![0][0][0] /0x0021, yuv420p, 1280x692 [PAR 1:1 DAR 320:173], q=2-31, 2997 tbn, 23.98 tbc (default)
Stream #0.1(eng): Audio: libfaac, 48000 Hz, stereo (default)
Stream mapping:
  Stream #0.1 -> #0.0
  Stream #0.0 -> #0.1
Press [q] to stop encoding
[mp4 @ 0x808a020] pts < dts in stream 0
av_interleaved_write_frame(): Invalid data found when processing input

Den XBox-support-website bietet detaillierte Informationen über die unterstützten Datei-Typen, mit mp4 aufgenommen im H. 264-standard: http://support.xbox.com/ar-SA/xbox-360/system/audio-video-playback

Ich bin ein bisschen ein Verlust. Ich habe gelesen, durch http://www.ffmpeg.org/ffmpeg.html aber die Fehlermeldung vom ffmpeg scheint nicht sehr hilfreich, und die Ressourcen sind knapp am besten, wenn es ums laufen diese Sachen auf eine Synology-Box.

Habe ich versucht, ein paar Permutationen von meinem script, wie:

ffmpeg -i "$file" "$noextension"

und

ffmpeg -y -i "$file" -vcodec mpeg4 -acodec libfaac "$noextension"

Aber die beiden geben mir die folgende Fehlermeldung:

Error while opening encoder for output stream #0.0 - maybe incorrect parameters such as bit_rate, rate, width or height

Ich davon ausgehen, dass ich ' ll benötigen, geben Sie input-und output-codecs speziell, zusammen mit Sachen wie bitrate, oder das Seitenverhältnis, aber das ist, wo ich hängen geblieben.

Jede Hilfe wäre sehr geschätzt werden!

Ich würde nicht weiter gehen, ohne eine Aktualisierung der ffmpeg-version. Verkaufen, wenn vom Jahr 2011 – das ist jetzt drei Jahre alt. Laden oder kompilieren eine neuere: ffmpeg.org/download.html — versuchen Sie es dann erneut und füge bitte die komplette, ungeschnittene command-line-Ausgang, nicht nur die Teile, die Sie denken, sind relevant. Dank

InformationsquelleAutor Rob Gwynn-Jones | 2014-02-05

Schreibe einen Kommentar