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!
InformationsquelleAutor Rob Gwynn-Jones | 2014-02-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Okay jetzt gibt es eigentlich braucht, um ein detail-video, das schlägt fehl, während der Transcodierung. Aber immer noch an den Fehler, hier sind die versucht, die Sie tun können. Ich wird Sie warnen, dass es verdammt viel Kombinationen möglich, für die Ausgabe(bitrate,framerate, etc.), aber alles, was Sie zu entscheiden haben.
Option 1
Dies ist ähnlich zu
ffmpeg -i ip.mkv op.mp4
aber ich fügte hinzu, codecs explizit.Option 2
Zusätzlichen bitrate, die Sie ändern können wie pro Ihre Notwendigkeit.
Option 3
Hinzugefügt fps von 30.
Sie können auch einen Versuch geben der Mischung von
2 and 3
option.Hoffe, das hilft.Cheers.:)
PS: @slhck gesagt; bitte update ffmpeg und dann versuchen, diese. Auch alle diese sind
re-encoding
Befehle, also, wenn Sie wirklich für Sie gehen; bessere audio-encoder als ich illustriert habe.ja, es tut re-codieren von videos, aber das sind nur mögliche Lösung, um so die Ausgabe.
Ich habe eigentlich kein problem mit re-encoding; meine Präferenz wäre einfacher = besser, aber wenn die einzige Lösung beinhaltet das re-encoding, dann ist das in Ordnung. Ich werde versuchen, die Aktualisierung von ffmpeg und sehen, wie ich gehen später auf.
Wow, ich völlig vergessen, ich hatte diese Frage gestellt, und fand es einfach fast 3 Jahre später. Die Antwort, die ich ging, denn schließlich ist die Verwendung von Plex zum Abspielen von videos in welchem format auch immer Sie kommen, anstatt zu Ringen, Sie zu mp4 für die Wiedergabe auf der XBox 360. Ich habe akzeptiert, dass diese Antwort so viel Mühe gingen klar in es, und war ich mutig genug, zu bestehen ich bin sicher, es wäre schon sehr hilfreich gewesen.
InformationsquelleAutor BlueSword