Ich muss ein Video in ein anderes mit den folgenden Eigenschaften transcodieren:
Gibt es eine Möglichkeit, dies mit ffmpeg zu tun?
Außerdem wäre es großartig, wenn Sie mir auch eine einfache Möglichkeit nennen könnten, all dies zu überprüfen (vielleicht mit ffprobe?).
Minimale Befehlszeile für eine GOP-Größe von 2 Sekunden:
ffmpeg -i input -force_key_frames expr:gte(t,n_forced*2) -c:v libx265 -x265-params open-gop=0:scenecut=0:repeat-headers=1 output.hevc
Überprüfung:
ffmpeg -i output.hevc -c copy -bsf:v trace_headers -f null -
Nach jeder Zeile, die Schlüsselbilder enthält, z. B.
Packet: 18115 bytes, key frame, no pts, dts 2319977, duration 40000.
Sie sollten VPS/SPS/PPS sehen. Die erste Slice Segment Header
, die folgt, sollte einen NAL-Einheitentyp haben, 20
der IDR_N_LP ist.
ffprobe kann keine Bitstromfilter aufrufen.
expr:gte(t,n_forced*2)
muss der Teil des ersten ffmpeg-Befehls in Anführungszeichen gesetzt werden. Ich hatte vorgeschlagen, dass Sie das im Interesse der zukünftigen Copy-Paster bearbeiten!n_forced*2
GOP-Größe bestimmt wird, und ich habe sie in geändert n_forced*10
). Ich habe versucht, min-keyint=250:keyint=250
die x2675-Parameter hinzuzufügen. Kein Effekt. Ich habe auch die -g
Option von ffmpeg ausprobiert. Es passiert immer noch das Gleiche.Keyframe min / max / scenecut : 126 / 250 / 0
obwohl ich sowohl min-keyint
als auch keyint
auf 250 gesetzt habe.
Gyan
Elektrito
Gyan
Elektrito