Comment faire pour convertir des films mkv en mp4 pour la lecture en continu pour XBox 360

J'ai récemment acheté un Synology Diskstation DS412+, et j'ai un certain nombre de .des films mkv qui je voudrais le convertir/transcodage de fichiers mp4, afin que je puisse les diffuser directement sur ma XBox 360. J'utilise le Frein à main sur mon portable, mais je préfère que cela se produise directement sur mon NAS.

Je suis très rouillé sur Linux et les nouvelles de transcodage, mais le script que j'ai actuellement est la suivante:

#!/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

Qui, comme je le comprends, copie simplement les composants audio et vidéo dans le conteneur mkv, et les insère dans un nouveau conteneur mp4. Cela a fonctionné pour plusieurs de mes fichiers, mais il y a un nombre pour lequel cela ne fonctionne pas.

L'exemple suivant est un exemple de la sortie d'un échec à l'exécution:

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)

...et puis une liste d'entrée chapitre de début et de fin des temps et puis...

 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)

...et puis une liste de sortie chapitre de début et de fin des temps et puis...

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

Le support technique XBox site web donne des détails sur les types de fichiers supportés, avec mp4 inclus dans le H. 264 standard: http://support.xbox.com/ar-SA/xbox-360/system/audio-video-playback

J'en suis à un peu de perte. J'ai lu à travers http://www.ffmpeg.org/ffmpeg.html mais le message d'erreur de ffmpeg ne semble pas très utile, et les ressources sont rares, au mieux, quand il s'agit de l'exécution de ce genre de choses sur un Synology Boîte.

J'ai essayé quelques permutations de mon script, tels que:

ffmpeg -i "$file" "$noextension"

et

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

Mais ces deux me donner le message d'erreur suivant:

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

Je suppose que je vais avoir besoin de préciser d'entrée et de sortie les codecs spécifiquement, avec des choses comme le débit, ou l'aspect ratio, mais c'est là d'où je viens décoller.

Toute aide serait grandement appréciée!

Je ne voudrais pas aller plus loin sans mise à jour de votre version de ffmpeg en premier. Le vôtre si, à partir de 2011 – qui est maintenant âgé de trois ans. S'il vous plaît télécharger ou de compiler une version plus récente: ffmpeg.org/download.html — puis essayez à nouveau et s'il vous plaît inclure le plein, non coupé sortie de ligne de commande, et pas seulement les pièces que vous jugez pertinentes. Merci

OriginalL'auteur Rob Gwynn-Jones | 2014-02-05