.ts in H264 wandeln (ffmpeg)

Sound, Digitalkameras, TV+Video und Spiele.
Antworten
Michahe
Beiträge: 85
Registriert: 21.03.2016 19:27:53
Lizenz eigener Beiträge: GNU General Public License

.ts in H264 wandeln (ffmpeg)

Beitrag von Michahe » 16.09.2021 20:06:34

Hallo,
ich möchte eine Video-Aufnahme in H.264 wandeln. Leider hat die Datei Abschnitte in den Formaten 16:9 und 4:3. Normalerweise nutze ich AVIDEMUX für solche Wandlungen; das versagt hier, da der gesamte Output entweder 16:9 oder 4:3 angezeigt wird.
Ich habe ffmpeg versucht, erhalte aber einen Fehler:

Code: Alles auswählen

$ ffmpeg -i gesamt.ts -b 1500k -ab 192k -ar 44100 -pass 2 -vcodec libx264 -acodec mp3 -passlogfile /dev/null neu.ts
[libx264 @ 0x56033ba5c300] ratecontrol_init: can't open stats file
Wie geht's richtig?
Danke, Michael

wanne
Moderator
Beiträge: 7463
Registriert: 24.05.2010 12:39:42

Re: .ts in H264 wandeln (ffmpeg)

Beitrag von wanne » 17.09.2021 03:08:10

Hasst du ne ahnung was du da machst oder einfach mal wild zeug aus dem Internet kopiert? Das ist reichlich absurd, was du da machst.
Schmeiß die Optionen weg, die du nicht verstehst, und das wird vermutlich funktionieren. (Ich bin mir nicht ganz sicher, ob FFMPEG mit unterschiedlichen Auflösungen zurecht kommt.) Ich tippe du musst den Film halt in seine Einzelteile zerschneiden und dann wieder zusammensetzen.
sowas:

Code: Alles auswählen

ffmpeg -i gesamt.ts -c:v libx264 out.ts

Wenn dir das nicht reicht, musst du ein bisschen verraten. Du machst 2-Pass auf konstante Bitrate von 1500k/Bit. Derartig konstante Bitraten sind sinnvoll für Übertragungen, wo man eine feste Bandbreite hat. (Z.B. beim Lesen einer CD oder übertragen per Broadcast-Funk (DVB-T)) Für 1x-CD-Laufwerke ist es aber gerade ein bisschen zu fett und sonst fällt mir nichts ein, was so wenig Bandbreite hat. Schon gar nicht in Kombination mit Geräten die den "modernen" h.264 können. Ähnliches gilt für mp3. Kombiniert miserable Kompression mit vergleichsweise schlechtem Support in Videoplayern. (Im Gegensatz zu Audioplayern so der Breite support ein echtes argument ist) (AC-3/AAC/DTS/mp2/Opus ist bei Videos einfach viel verbreiteter AAC und Opus komprimieren bei gleicher Qualität viel besser.)
Ich weigere mich jetzt einfach mal das minimalst anzupassen, dass es funktioniert, weil das ziemlich sicher nicht das ist, was du willst. (Tipp: Gibt ein Stats-File an einem Ort an an dem man auch vernünftig schreiben kann, wenn er meckert dass er das nicht öffnen kann.)
rot: Moderator wanne spricht, default: User wanne spricht.

Michahe
Beiträge: 85
Registriert: 21.03.2016 19:27:53
Lizenz eigener Beiträge: GNU General Public License

Re: .ts in H264 wandeln (ffmpeg)

Beitrag von Michahe » 17.09.2021 09:01:21

Danke @wanne,
das Thema ist absolut nicht mein "Fachgebiet" :roll:. Ich hatte die Optionen aus dieser Webseite zusammengesetzt.
Vorher hatte ich den Film in die 16:9 und 4:3 - Bestandteile zerschnitten und versucht, die Teile wie üblich mit AVIDEMUX H264 codiert. Die Versuche, die Teile mit AVIDEMUX und ffmpeg wieder zusammenzufügen endeten mit Fehlermeldungen "Unterschiedliche Formate" ...
Jetzt habe ich auf das Original mit den Deinen Code

Code: Alles auswählen

ffmpeg -i gesamt.ts -c:v libx264 out.ts
angewandt. Das funktioniert, die beiden Abschnitte werden unverzerrt wiedergegeben. Herzlichen Dank dafür!
Vielleicht magst Du einmal meine AVIDEMUX-Optionen (.py) anschauen und mir Verbesserungsvorschläge geben?

Code: Alles auswählen

#PY  <- Needed to identify #
# Anleitung: http://www.avidemux.org/admWiki/doku.php?id=tutorial:presets

adm = Avidemux()
adm.videoCodec("x264",
"useAdvancedConfiguration=True",
"general.params=2PASSBITRATE=1500",
"general.threads=0",
"general.preset=ultrafast",
"general.tuning=film",
"general.profile=baseline",
"general.fast_decode=False",
"general.zero_latency=False",
"general.fast_first_pass=True",
"general.blueray_compatibility=False",
"general.fake_interlaced=False",
"level=-1",
"vui.sar_height=45",
"vui.sar_width=64",
"MaxRefFrames=3",
"MinIdr=25",
"MaxIdr=250",
"i_scenecut_threshold=40",
"intra_refresh=False",
"MaxBFrame=3",
"i_bframe_adaptive=1",
"i_bframe_bias=0",
"i_bframe_pyramid=2",
"b_deblocking_filter=True",
"i_deblocking_filter_alphac0=0",
"i_deblocking_filter_beta=0",
"cabac=True",
"interlaced=False",
"constrained_intra=False",
"tff=True",
"fake_interlaced=False",
"analyze.b_8x8=True",
"analyze.b_i4x4=True",
"analyze.b_i8x8=True",
"analyze.b_p8x8=True",
"analyze.b_p16x16=True",
"analyze.b_b16x16=True",
"analyze.weighted_pred=2",
"analyze.weighted_bipred=True",
"analyze.direct_mv_pred=1",
"analyze.chroma_offset=0",
"analyze.me_method=1",
"analyze.me_range=16",
"analyze.mv_range=-1",
"analyze.mv_range_thread=-1",
"analyze.subpel_refine=5",
"analyze.chroma_me=True",
"analyze.mixed_references=True",
"analyze.trellis=1",
"analyze.psy_rd=1.000000",
"analyze.psy_trellis=0.000000",
"analyze.fast_pskip=True",
"analyze.dct_decimate=True",
"analyze.noise_reduction=0",
"analyze.psy=True",
"analyze.intra_luma=11",
"analyze.inter_luma=21",
"ratecontrol.rc_method=0",
"ratecontrol.qp_constant=0",
"ratecontrol.qp_min=10",
"ratecontrol.qp_max=69",
"ratecontrol.qp_step=4",
"ratecontrol.bitrate=0",
"ratecontrol.rate_tolerance=1.000000",
"ratecontrol.vbv_max_bitrate=0",
"ratecontrol.vbv_buffer_size=0",
"ratecontrol.vbv_buffer_init=0",
"ratecontrol.ip_factor=1.400000",
"ratecontrol.pb_factor=1.300000",
"ratecontrol.aq_mode=1",
"ratecontrol.aq_strength=1.000000",
"ratecontrol.mb_tree=True",
"ratecontrol.lookahead=40")

adm.audioCodec(0, "Lame", "bitrate=128", "preset=0", "quality=5", "disableBitReservoir=False");
adm.audioSetDrc(0, 0)
adm.audioSetShift(0, 0,0)
adm.setContainer("ffTS", "acceptNonCompliant=False", "vbr=True", "muxRateInMBits=10")
Danke, Michael
Zuletzt geändert von Michahe am 17.09.2021 10:26:10, insgesamt 1-mal geändert.

Benutzeravatar
TRex
Moderator
Beiträge: 8074
Registriert: 23.11.2006 12:23:54
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: KA

Re: .ts in H264 wandeln (ffmpeg)

Beitrag von TRex » 17.09.2021 10:02:35

Bäh :lol:

Vielleicht machst du aus den Optionen ne Liste (pro Zeile eine Option oder nur zusammengehörige Optionen), sodass man das auch lesen kann.
Jesus saves. Buddha does incremental backups.
Windows ist doof, Linux funktioniert nichtDon't break debian!Wie man widerspricht

Michahe
Beiträge: 85
Registriert: 21.03.2016 19:27:53
Lizenz eigener Beiträge: GNU General Public License

Re: .ts in H264 wandeln (ffmpeg)

Beitrag von Michahe » 17.09.2021 10:28:29

Sorry, @TRex,
Bäh :lol:
hab's hier verbessert ...

wanne
Moderator
Beiträge: 7463
Registriert: 24.05.2010 12:39:42

Re: .ts in H264 wandeln (ffmpeg)

Beitrag von wanne » 18.09.2021 07:29:29

Michahe hat geschrieben: ↑ zum Beitrag ↑
17.09.2021 09:01:21
Vorher hatte ich den Film in die 16:9 und 4:3 - Bestandteile zerschnitten und versucht, die Teile wie üblich mit AVIDEMUX H264 codiert. Die Versuche, die Teile mit AVIDEMUX und ffmpeg wieder zusammenzufügen endeten mit Fehlermeldungen "Unterschiedliche Formate" ...
Das coole an .ts ist, dass du es einfach mit cat zusammensetzen kannst:

Code: Alles auswählen

cat teil01.ts teil02.ts teil03.ts ... > gesamt.ts
bzw:

Code: Alles auswählen

cat teil*.ts > gesamt.ts
rot: Moderator wanne spricht, default: User wanne spricht.

Michahe
Beiträge: 85
Registriert: 21.03.2016 19:27:53
Lizenz eigener Beiträge: GNU General Public License

Re: .ts in H264 wandeln (ffmpeg)

Beitrag von Michahe » 18.09.2021 14:50:27

Danke @wanne,
cat teil01.ts teil02.ts teil03.ts ... > gesamt.ts
funktioniert perfekt. Damit habe ich zwei Varianten:
1. Größe 1100 MB: Film in die 16:9 und 4:3 - Bestandteile zerschnitten und mit AVIDEMUX H264 (Settings siehe oben) codiert.
2. Größe 330 MB: Original mit 16:9 und 4:3 - Bestandteilen gewandelt mit Deinem Code

Code: Alles auswählen

ffmpeg -i gesamt.ts -c:v libx264 out.ts
Sichtbare / hörbare Unterschiede erkenne ich nicht. Vielleicht hilft mir noch jemand, meine AVIDEMUX-Setings zu optimieren?

wanne
Moderator
Beiträge: 7463
Registriert: 24.05.2010 12:39:42

Re: .ts in H264 wandeln (ffmpeg)

Beitrag von wanne » 19.09.2021 15:42:28

Vielleicht magst Du einmal meine AVIDEMUX-Optionen (.py) anschauen und mir Verbesserungsvorschläge geben?
profile=baseline
params=2PASSBITRATE=1500
Das ist ein Setting um für extreme Low-End Geräte mit einigen hundert kiB Speicher lesbar zu sein. Auf kosten von Größe und Qualität. Seit selbst Kleinstgeräte wie Rasberry PIs Gigabyteweise RAM haben ist das eher nicht sinnvoll.
preset=ultrafast
Das macht das encoden wahnsinnig schnell. Und den File ~4x so groß.
Die Defaultwerte sind sinnvoller. ( -profile=high, -preset=medium, -crf=23 ) – Deswegen habe ich die auch im ffmpeg weggelassen.
Wenn du mehr Zeit zum Encoden für kleinere Dateien (bei gleicher Qualität) investieren willst, kannst du preset ändern ultrafast > superfast > veryfast > faster > fast > medium > slow > slower > veryslow
Genau so kannst du mit crf Qualität vs. Dateigröße Abwägn je kleiner die CRF desto größer die Qualität und Dateigröße. Ich nehme 20 für SD inhalte und 22-23 für HD. Wenn ich eh schlechte Qualität habe (selbstgedrehtes) 25.

Ich würde dir zum Audio-Encoding aac zum h.264 Empfeheln. Komprimiert bei gleicher Qualität besser als mp3 oder mp2 und praktisch alles was h.264 kann, kann auch aac. Opus komprimiert nochmal besser und wird von neuen Geräten ähnlich häufig wie mp3 verstanden. Aber auch da gibt es wie bei mp3 hin und wieder Probleme, dass das irgend wo nicht abspielt.

Code: Alles auswählen

-c:a aac
rot: Moderator wanne spricht, default: User wanne spricht.

Michahe
Beiträge: 85
Registriert: 21.03.2016 19:27:53
Lizenz eigener Beiträge: GNU General Public License

Re: .ts in H264 wandeln (ffmpeg)

Beitrag von Michahe » 20.09.2021 10:42:34

Danke @wanne,
tolle Anleitung, klappt wunderbar, habe viel gelernt!

Antworten