staging.inyokaproject.org

MTS zu MP4

Status: Gelöst | Ubuntu-Version: Ubuntu GNOME 16.04 (Xenial Xerus)
Antworten |

Klinge84

Anmeldungsdatum:
26. Juni 2007

Beiträge: 279

Hallo,

meine Kamera speichert Videos als MTS Datei ab.

diese möchte ich in einen MP4 Container haben und zusätzlich muss das ganze deinterlaced werden.

mit folgendem Code aus dem Internet habe ich es ganz gut hinbekommen. möchte aber das Maximum an Qualität behalten, kann jemand die ganzen Optionen enschlüsseln ?

momentan werden die Ausgangscodecs (H264/AC3) behalten und es wird mit yadif deinterlaced.

1
ffmpeg -threads 4 -i 00000.MTS -vcodec libx264 -deinterlace yadif=1 -cmp +chroma -g 250 -partitions +parti4x4+partp8x8+partb8x8 -i_qfactor 0.71 -keyint_min 25 -b_strategy 1 -flags +loop -acodec ac3 -ar 48000 -ab 256k -ac 2  outputfile.mp4

redknight Team-Icon

Moderator & Supporter
Avatar von redknight

Anmeldungsdatum:
30. Oktober 2008

Beiträge: 21668

Klinge84 schrieb:

momentan werden die Ausgangscodecs (H264/AC3) behalten

Nein, tust Du nicht. Du decodierst den Stream und encodierst ihn neu 😉 Streams belassen wäre der codec copy. Vermutlich muss das Video wegen des deinterlacings sowieso neu encodiert werden, das kann ich aber nciht mit Sicherheit sagen.

und es wird mit yadif deinterlaced.

Dazu kann ich nicht sagen, mit den deinterlacing-filtern habe ich mich bisher nicht befasst.

XM-Franz

Supporter
Avatar von XM-Franz

Anmeldungsdatum:
15. Juni 2010

Beiträge: 3439

Lies mal

und zeige die vollständige Ausgabe - d.h. Prompt, Befehl, Ausgabe, Prompt - zu

ffmpeg -i 0000.mts

hier im Codeblock.

Klinge84

(Themenstarter)

Anmeldungsdatum:
26. Juni 2007

Beiträge: 279

Das meinte ich ja der Codec bleibt der gleiche..

Neu encodieren muss man wegen deinterlacing hab es schon mit Copy probiert dann klappt es nicht..

Klinge84

(Themenstarter)

Anmeldungsdatum:
26. Juni 2007

Beiträge: 279

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
ariel@Acer:~/Schreibtisch/Test$ ffmpeg -i 00000.MTS
ffmpeg version 2.8.6-1ubuntu2 Copyright (c) 2000-2016 the FFmpeg developers
  built with gcc 5.3.1 (Ubuntu 5.3.1-11ubuntu1) 20160311
  configuration: --prefix=/usr --extra-version=1ubuntu2 --build-suffix=-ffmpeg --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --cc=cc --cxx=g++ --enable-gpl --enable-shared --disable-stripping --disable-decoder=libopenjpeg --disable-decoder=libschroedinger --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-librtmp --enable-libschroedinger --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxvid --enable-libzvbi --enable-openal --enable-opengl --enable-x11grab --enable-libdc1394 --enable-libiec61883 --enable-libzmq --enable-frei0r --enable-libx264 --enable-libopencv
  WARNING: library configuration mismatch
  avcodec     configuration: --prefix=/usr --extra-version=1ubuntu2 --build-suffix=-ffmpeg --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --cc=cc --cxx=g++ --enable-gpl --enable-shared --disable-stripping --disable-decoder=libopenjpeg --disable-decoder=libschroedinger --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-librtmp --enable-libschroedinger --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxvid --enable-libzvbi --enable-openal --enable-opengl --enable-x11grab --enable-libdc1394 --enable-libiec61883 --enable-libzmq --enable-frei0r --enable-libx264 --enable-libopencv --enable-version3 --disable-doc --disable-programs --disable-avdevice --disable-avfilter --disable-avformat --disable-avresample --disable-postproc --disable-swscale --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libvo_aacenc --enable-libvo_amrwbenc
  libavutil      54. 31.100 / 54. 31.100
  libavcodec     56. 60.100 / 56. 60.100
  libavformat    56. 40.101 / 56. 40.101
  libavdevice    56.  4.100 / 56.  4.100
  libavfilter     5. 40.101 /  5. 40.101
  libavresample   2.  1.  0 /  2.  1.  0
  libswscale      3.  1.101 /  3.  1.101
  libswresample   1.  2.101 /  1.  2.101
  libpostproc    53.  3.100 / 53.  3.100
Input #0, mpegts, from '00000.MTS':
  Duration: 00:00:18.72, start: 1.040000, bitrate: 22853 kb/s
  Program 1 
    Stream #0:0[0x1011]: Video: h264 (High) (HDMV / 0x564D4448), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 25 fps, 25 tbr, 90k tbn, 50 tbc
    Stream #0:1[0x1100]: Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, stereo, fltp, 256 kb/s
    Stream #0:2[0x1200]: Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090), 1920x1080
At least one output file must be specified
ariel@Acer:~/Schreibtisch/Test$

mediaDS

Anmeldungsdatum:
30. März 2009

Beiträge: 236

Klinge84 schrieb:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
ariel@Acer:~/Schreibtisch/Test$ ffmpeg -i 00000.MTS
ffmpeg version 2.8.6-1ubuntu2 Copyright (c) 2000-2016 the FFmpeg developers
  built with gcc 5.3.1 (Ubuntu 5.3.1-11ubuntu1) 20160311
  configuration: --prefix=/usr --extra-version=1ubuntu2 --build-suffix=-ffmpeg --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --cc=cc --cxx=g++ --enable-gpl --enable-shared --disable-stripping --disable-decoder=libopenjpeg --disable-decoder=libschroedinger --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-librtmp --enable-libschroedinger --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxvid --enable-libzvbi --enable-openal --enable-opengl --enable-x11grab --enable-libdc1394 --enable-libiec61883 --enable-libzmq --enable-frei0r --enable-libx264 --enable-libopencv
  WARNING: library configuration mismatch
  avcodec     configuration: --prefix=/usr --extra-version=1ubuntu2 --build-suffix=-ffmpeg --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --cc=cc --cxx=g++ --enable-gpl --enable-shared --disable-stripping --disable-decoder=libopenjpeg --disable-decoder=libschroedinger --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-librtmp --enable-libschroedinger --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxvid --enable-libzvbi --enable-openal --enable-opengl --enable-x11grab --enable-libdc1394 --enable-libiec61883 --enable-libzmq --enable-frei0r --enable-libx264 --enable-libopencv --enable-version3 --disable-doc --disable-programs --disable-avdevice --disable-avfilter --disable-avformat --disable-avresample --disable-postproc --disable-swscale --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libvo_aacenc --enable-libvo_amrwbenc
  libavutil      54. 31.100 / 54. 31.100
  libavcodec     56. 60.100 / 56. 60.100
  libavformat    56. 40.101 / 56. 40.101
  libavdevice    56.  4.100 / 56.  4.100
  libavfilter     5. 40.101 /  5. 40.101
  libavresample   2.  1.  0 /  2.  1.  0
  libswscale      3.  1.101 /  3.  1.101
  libswresample   1.  2.101 /  1.  2.101
  libpostproc    53.  3.100 / 53.  3.100
Input #0, mpegts, from '00000.MTS':
  Duration: 00:00:18.72, start: 1.040000, bitrate: 22853 kb/s
  Program 1 
    Stream #0:0[0x1011]: Video: h264 (High) (HDMV / 0x564D4448), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 25 fps, 25 tbr, 90k tbn, 50 tbc
    Stream #0:1[0x1100]: Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, stereo, fltp, 256 kb/s
    Stream #0:2[0x1200]: Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090), 1920x1080
At least one output file must be specified
ariel@Acer:~/Schreibtisch/Test$

Was willst du uns mit diesem bedeutungs-schwangeren Codeblock sagen ?

Die relevanten Fehlermeldungen bzw. Warnungen stehen doch drin. Wenn du die Qualität erhalten willst, nimm DnxHD oder ProRes - sogenannte Intermediate Codecs. Hängt alles davon ab, was du nach dem Transkodieren mit dem Video machen willst.

redknight Team-Icon

Moderator & Supporter
Avatar von redknight

Anmeldungsdatum:
30. Oktober 2008

Beiträge: 21668

mediaDS schrieb:

Was willst du uns mit diesem bedeutungs-schwangeren Codeblock sagen ?

Dass er das getan hat, was XM-Franz angefordert hat 😉

Wenn du die Qualität erhalten willst, nimm DnxHD oder ProRes - sogenannte Intermediate Codecs.

Macht es noch Sinn, von H.264 zu einem Intermediate zu kodieren und danach wieder davon weg?

mediaDS

Anmeldungsdatum:
30. März 2009

Beiträge: 236

redknight schrieb:

mediaDS schrieb: Dass er das getan hat, was XM-Franz angefordert hat 😉

Bin blind. Kaufe Brille 😉

Macht es noch Sinn, von H.264 zu einem Intermediate zu kodieren und danach wieder davon weg?

Hängt davon ab. Wenn ich Rohmaterial in h.264 bekomme, transkodiere ich es nach ProRes als Master bzw. Intermediate, um es dann beliebig und ohne Qualitätsverlust in Lightworks Pro oder Natron weiterverarbeiten zu können. Und daraus wird dann das Endergebnis wieder nach h.264 erstellt. Wenn er natürlich nichts weiter machen möchte, ist ein Transkodieren vom Ausgangsformat im .mts Container nach hochbittigem h.264 im .mkv oder .mp4 Container vollkommen ausreichend, um die Qualität weitgehend zu erhalten.

TE möchte das Ausgangsvideo nur in höchstmöglicher Qualität anschauen = h.264 mit hoher Bitrate (variabel)

TE möchte ein Master für Bearbeitung erstellen = ProRes oder DnxHD (sehr hohe Bitrate, grosse Datei)

Vielleicht kann er ja mit seinem NLE der Wahl bereits die .mts laden - deinterlacen und dann exportieren. Das spart einen unnötigen Qualitätsverlust durch ffmpeg-Transkodierung. Aber das muss er ja selber entscheiden.

MisterIgo

Anmeldungsdatum:
23. April 2009

Beiträge: 945

Um mal die Ursprungsfrage zu beantworten. Klinge84 schrieb:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
ffmpeg
-threads 4                               # 4 Threads benutzen, überflüssig, erkennt FFmpeg von selbst
-i 00000.MTS                             # Inputdatei
-vcodec libx264                          # x264 als Encoder nutzen, besser ist das neuere -c:v libx264
-deinterlace yadif=1                     # Mit yadif im Modus "send_field" deinterlacen
                                         # Der Parameter -deinterlace ist veraltet, am besten -filter:v yadif=1 benutzen
                                         # Ich habe Yadif bislang immer im Standard "send_frame"-Modus ausprobiert, ob das =1 Vorteile hat,
                                         # kann ich nicht sagen, siehe auch 'man ffmpeg-filters'
-cmp +chroma                             # Eine Option von x264, ziemlich sicher unnötig
-g 250                                   # Eine weitere undokumentierte Funktion von x264, ich schätze mal das maximale Intervall an nicht I-Frames
-partitions +parti4x4+partp8x8+partb8x8  # Eine Option von x264, die Art der erlaubten Partitionen
-i_qfactor 0.71                          # Eine Option von x264, anscheinend die Wahrscheinlichkeit mit der I- und P-Frames ausgewählt werden
-keyint_min 25                           # Eine Option von x264, minimale Anzahl Frames zwischen zwei I-Frames
-b_strategy 1                            # Eine Option von x264, Strategie, mit der I/P/B-Frames gesetzt werden
-flags +loop                             # Aktiviert den Deblocking-Filter von x264, der sowieso angeschaltet ist
-acodec ac3                              # ac3 als Ausgabeton nutzen, auch hier ist das neuere -c:a ac3 besser
-ar 48000                                # 48000 kBit/s als Audio-Samplerate nutzen, diese Option macht für gewöhnlich keinen Sinn
-ab 256k                                 # Den Ton mit einer Bitrate von 265 kBit/s codieren, dies beeinflusst maßgeblich die Qualität
-ac 2                                    # Den Ton in Stereo umwandeln oder so lassen
outputfile.mp4                           # Ausgabedatei

Aufgrund der Inputwerte des Videos würde ich dir dieses Kommando empfehlen:

ffmpeg -i 00000.MTS -c copy -c:v libx264 -crf <...> -preset slow -filter:v yadif -map 0 outputfile.mp4

Aufschlüsselung:

1
2
3
4
5
6
7
8
9
ffmpeg
-i 00000.MTS
-c copy          # alle Codecs kopieren (verlustlos)
-c:v libx264     # außer den für Video, da rekodieren um zu deinterlacen
-crf <...>       # Videoqualität setzen, sinnvolle Werte grob zwischen 15 und 35, kleiner ergibt bessere Qualität und größere Dateien
-preset slow     # etwas bessere Features vom Codec aktivieren, dafür braucht das Encoding dann länger
-filter:v yadif  # Yadif als Deinterlacer benutzen
-map 0           # alle Streams beibehalten, auch den Untertitelstream
outputfile.mp4

Parka_Boy

Avatar von Parka_Boy

Anmeldungsdatum:
28. Juni 2008

Beiträge: Zähle...

Sofern das x264 Video überhaupt Interlaced ist, was meiner Erfahrung ehr nicht der Fall ist. Da das nicht mit ffmpeg -i angezeigt wird, kann man mal mit mediainfo den Scan type prüfen. Sollte es nicht Interlaced kann man sich die neu Encoden sparen.

Klinge84

(Themenstarter)

Anmeldungsdatum:
26. Juni 2007

Beiträge: 279

Danke für die Hilfe..

habe das Kommando von MisterIgo übernommen..

Nino.73

Anmeldungsdatum:
15. Februar 2018

Beiträge: Zähle...

hallo ich brauche bisler hilfe weil seite tage werde ich verrücht halso ich mache einbissler trascoding und gehe ich so vor wegen die verschowenlaufen titel

pipe:///usr/bin/ffmpeg -i inputlink -vf yadif=0:0:0 -vcodec libx264 -preset veryfast -s 1280x720 -b 2500k -minrate 2500k -maxrate 2500k -bufsize 2500k -acodec aac -ab 128k -ar 44100 -strict -2 -metadata service_provider=TTVSTREAM -metadata service_name=TGCOM24 -f mpegts -tune zerolatency pipe:1

das ist ok

wen nur mit logo ohne -vf yadif=0:0:0 werde ich so

pipe:///usr/bin/ffmpeg -i inputlink -i /home/logo.png -filter_complex overlay=main_w-overlay_w-1750:main_h-overlay_h-995 -vcodec libx264 -preset veryfast -s 1280x720 -b 2500k -minrate 2500k -maxrate 2500k -bufsize 2500k -acodec aac -ab 128k -ar 44100 -strict -2 -metadata service_provider=TTVSTREAM -metadata service_name=TGCOM24 -f mpegts -tune zerolatency pipe:1

das ist ok aber die laufen titel sied verschwomen

dann will ich auch dazu meine logo und -vf yadif=0:0:0(deinterlacing) gehe ich so vor

pipe:///usr/bin/ffmpeg -i inputlink -i /home/logo.png -filter_complex overlay=main_w-overlay_w-1750:main_h-overlay_h-995 -vf yadif=0:0:0 -vcodec libx264 -preset veryfast -s 1280x720 -b 2500k -minrate 2500k -maxrate 2500k -bufsize 2500k -acodec aac -ab 128k -ar 44100 -strict -2 -metadata service_provider=TTVSTREAM -metadata service_name=TGCOM24 -f mpegts -tune zerolatency pipe:1

das probelm kommt fail kann jemand mir helfen danke

Antworten |