Verständisfrage - Warum kann eine alte FFmpeg Version aus 2010 neue MPEG4-AVC decoden/encoden?

  • Ich bin gerade dabei für meine PSP Konsole Videos umzuwandeln, damit diese auch von der PSP Konsole abgespielt werden können.



    Dazu benutze ich folgendes FFmpeg Script hier im Test mit 2 verschiedenen FFmpeg Versionen.

    Die erste ist aus dem Jahr 2010

    und die zweite aus dem Jahr 2017


    Code
    1. "ffmpeg2010.exe" -i "Test-Video.mp4" -f psp -r 29.97 -b 768k -ar 24000 -ab 64k -s 320x240 "Test-Video-ffmpeg2010-psp.mp4"
    2. "ffmpeg2017.exe" -i "Test-Video.mp4" -f psp -r 29.97 -b 768k -ar 24000 -ab 64k -s 320x240 "Test-Video-ffmpeg2017-psp.mp4"


    Beide neu umgewandelte Videos, sind nun auf die PSP Konsole kopiert worden und siehe da:

    Das MP4 Video was mit der FFmpeg Version aus dem Jahr 2017 umgewandelt worden ist, wird nicht erkannt!

    Das andere mit der FFmpeg Version aus dem Jahr 2010 funktioniert einwandfrei und wird sofort von der PSP Konsole erkannt :)


    Kann es sein, das neue MPEG4-AVC Codecs, die viel weiter entwickelt sind als noch vor 8 oder 10 Jahren

    andere Eigenschaften aufweisen, das sie von bestimmten Geräten nicht mehr erkannt werden?


    Es handelt sich um MPEG4-AVC mit den gleichen FFmpeg Befehlen zur Umwandlung.

    Siehe oberes FFmpeg Script.


    Und wiso kann die FFmpeg Version aus dem Jahr 2010

    überhaupt neuere MP4 MPEG4-AVC Videos verarbeiten (decodieren und encodieren) ?

  • Um diese Frage zu klären, müssten wir all diejenigen Eckdaten vergleichen, die gerade nicht aus der Kommandozeile hervorgehen. Vielleicht multiplext ein neues ffmpeg den MP4-Container anders. Vielleicht sind da andere Metadaten enthalten. Vielleicht verwendet ein Stream für bestimmte Eigenschaften andere Standardwerte.


    Stell uns doch mal zwei Clips von wenigen Sekunden mit ansonsten identischem Material bereit.

  • https://www.file-upload.net/do…/PSP-Test-Videos3.7z.html


    ^ Bitte, hier sind alle 3 Video-Test Files drin enthalten.


    1.) Test-Video-1Original-Ursprung.mp4

    2.) Test-Video-ffmpeg2010-psp.mp4 = Umgewandelt mit einer FFmpeg Version aus 2010

    3.) Test-Video-ffmpeg2017-psp.mp4 = Umgewandelt mit einer FFmpeg Version aus 2017


    2.) und 3.) mit den gleichen FFmpeg Script Parametern - Siehe Oben aus Beitrag 1


    Wünsch euch allen einen guten Rutsch ins neue Jahr :)

  • video 2010 ist ein MPEG4-Video (part2) im Simple-Profile (vorgäger von h.264, ähnlich dem DivX codec)

    video 2017 ist AVC/h.264 im High-Proviele mit CABAC coding


    lade dir selber mal selber MediaInfo herrunter, und mache es zu deinem Sandard-Werkzeug.


    meine schlussfolderung ist,

    dass das "neue" PSP-Profile, von der 2017er version, entweder ein fehlerhaftes h.264-profiele erzeugt,

    oder es gibt PSP geräte da draußen, die nicht mit h.264 kompatibel sind.

    (erste generation oder alte firmware; müsste erfoscht werden.)


    lade dir doch mal die aktuelle 2020... äääh... 2021 version herunter... :D

    ---



  • lade dir selber mal selber MediaInfo herrunter, und mache es zu deinem Sandard-Werkzeug.


    ........


    oder es gibt PSP geräte da draußen, die nicht mit h.264 kompatibel sind.

    MediaInfo habe ich seit 2012 zum Standard Werkzeug ;)


    Aufgefallen ist mir schon, das das 2010er umgewandelte folgende Eigenschaften hat:


    MPEG-4 Visual

    Simple@L1

    Matrix : Default (H.263)

    mp4v-20


    und das 2017er umgewandelte:


    AVC

    High@L2

    CABAC / 4 Ref Frames

    avc1


    Deine Vermutung, dass das FFmpeg PSP Profil bei neueren Versionen fehlerhaft ist, könnte hinkommen!


    Ich habe eine der letzten alten Generationen der PSP 3004 im Einsatz.

    Dann gibt es ja noch die PSP Vita - Der Nachfolger ab 2011/2012

    Die PSP Vita kann man nicht mit den alten PSP Modellen vergleichen.
    Sie hat eine komplett andere moderne CPU / GPU Architektur.


    Normalerweise müssten neuere FFmpeg Versionen folgende PSP Profile haben:

    -f -psp_old

    -f -psp_vita


    So wäre es dann korrekt :)


    Was mich überhaupt wundert ist, warum eine FFmpeg Version aus dem Jahr 2010
    überhaupt neuere MP4 MPEG4-AVC Videos verarbeiten (decodieren und encodieren) kann ?

  • Das Teste ich später mal aus...


    Update:

    Das Video wird von der PSP nicht erkannt.

    Dann bleibe ich bei der FFmpeg Version aus dem Jahr 2010 um Videos für die PSP zu erstellen.

  • Was mich überhaupt wundert ist, warum eine FFmpeg Version aus dem Jahr 2010
    überhaupt neuere MP4 MPEG4-AVC Videos verarbeiten (decodieren und encodieren) kann ?

    Warum verwundert dich das? Der Standard wurde in erster Version 2003 veröffentlicht, an den grundlegenden Spezifikationen für die verbreitetsten Anwendungsfälle (Profile BL/M/H) hat sich nichts erheblich geändert (abgesehen von kleinen Korrekturen, Erweiterungen in einzelnen Flags, die keinen direkten Einfluss auf die Encodierung haben, und ansonsten kamen neue Inhalte nur in Bereichen dazu, die für Heimanwender kaum verfügbar sind)... Die Encoder optimieren seitdem nur noch die Effizienz, halten sich aber immer noch an die ursprüngliche Spezifikation. Kompatibilität bleibt gewahrt. Für die korrekte Wiedergabe in Hardware muss man nur maximale Profile@Level beachten, und manche verlangen noch ein paar Besonderheiten im Container (z.B. Apple mit Branding-Atoms).

  • Okay, da hatte ich einen Denkfehler ;)


    Hab in Generation gedacht wie bei mancher PC Hardware,

    das gewisse Standards nicht mehr abwärtskompatible oder ebem höhere Versionen vertragen.


    Bestes Beispiel bei alten Laptops beim PCMCIA CardBus Typ 1, 2 und 3


    Zitat aus Wikipedia:

    Code
    1. Die Technik ist voll abwärtskompatibilie.
    2. Slots für CardBus-Karten können also auch 16-Bit-Karten betreiben, aber nicht umgekehrt.
    3. Typ-II-Slots nehmen auch Typ-I-, aber keine Typ-III-Karten auf.