Seite 3 von 4 ErsteErste 1234 LetzteLetzte
Ergebnis 21 bis 30 von 39

Thema: ffmpeg mit quicksync

  1. #21
    Erklär-Bär Avatar von LigH
    Registriert seit
    19. April 2003
    Ort
    OPAL-Invalidengebiet Altmark
    Alter
    43
    Beiträge
    42.765

    Standard AW: ffmpeg mit quicksync


    Auf gute Zusammenarbeit:

    REGELN befolgen | SUCHE benutzen | FAQ lesen | STICKIES beachten




  2. #22
    Routinier
    Registriert seit
    14. December 2011
    Beiträge
    252

    Standard AW: ffmpeg mit quicksync

    Vielen Dank.

  3. #23
    Tripel-As
    Registriert seit
    5. March 2009
    Beiträge
    240

    Standard AW: ffmpeg mit quicksync

    Zitat Zitat von LigH Beitrag anzeigen
    Kannst du auch hier ein issue öffnen?

    https://github.com/intel/intel-vaapi-driver/issues

    Schaut mir nach Bug aus bzw. wird nur der Programmierer genau wissen, was der Assert hier schützen soll.

  4. #24
    Erklär-Bär Avatar von LigH
    Registriert seit
    19. April 2003
    Ort
    OPAL-Invalidengebiet Altmark
    Alter
    43
    Beiträge
    42.765

    Standard AW: ffmpeg mit quicksync


    Auf gute Zusammenarbeit:

    REGELN befolgen | SUCHE benutzen | FAQ lesen | STICKIES beachten




  5. #25
    Erklär-Bär Avatar von LigH
    Registriert seit
    19. April 2003
    Ort
    OPAL-Invalidengebiet Altmark
    Alter
    43
    Beiträge
    42.765

    Standard AW: ffmpeg mit quicksync

    Antwort bei doom9:

    Wenn es deine GPU nicht kann (entweder MJPEG 4:2:2 speziell nicht, oder MJPEG ganz allgemein nicht), geht's halt nicht; und außerdem wäre die CPU alleine beim Decodieren vielleicht eh schneller als die GPU (inklusive des Transfers in die GPU und daraus zurück).

    Auf gute Zusammenarbeit:

    REGELN befolgen | SUCHE benutzen | FAQ lesen | STICKIES beachten




  6. #26
    Routinier
    Registriert seit
    14. December 2011
    Beiträge
    252

    Standard AW: ffmpeg mit quicksync

    Danke dir.

    Ich hab mal testweise ein AVI mit libx264, lossless encodet um dieses 4:2:0 chroma subsampling zu erhalten (lossless ist Voraussetzung):
    Code:
    .... -c:a ac3 -b:a 256k -c:v libx264 -preset ultrafast -crf 0  -pix_fmt yuv420p -y 420ll.mkv
    mediainfo:
    Code:
    Video
    ID                                       : 1
    Format                                   : AVC
    Format/Info                              : Advanced Video Codec
    Format profile                           : High 4:4:4 Predictive@L4
    Format settings                          : 1 Ref Frames
    Format settings, CABAC                   : No
    Format settings, ReFrames                : 1 frame
    Codec ID                                 : V_MPEG4/ISO/AVC
    Duration                                 : 5 min 0 s
    Bit rate                                 : 133 Mb/s
    Width                                    : 1 920 pixels
    Height                                   : 1 080 pixels
    Display aspect ratio                     : 16:9
    Frame rate mode                          : Constant
    Frame rate                               : 23.976 (24000/1001) FPS
    Color space                              : YUV
    Chroma subsampling                       : 4:2:0
    Bit depth                                : 8 bits
    Scan type                                : Progressive
    Bits/(Pixel*Frame)                       : 2.679
    Stream size                              : 4.66 GiB (98%)
    Writing library                          : x264 core 152 r2854 e9a5903
    Encoding settings                        : cabac=0 / ref=1 / deblock=0:0:0 / analyse=0:0 / me=dia / subme=0 / psy=0 / mixed_ref=0 / me_range=16 / chroma_me=1 / trellis=0 / 8x8dct=0 / cqm=0 / deadzone=21,11 / fast_pskip=0 / chroma_qp_offset=0 / threads=12 / lookahead_threads=2 / sliced_threads=0 / nr=0 / decimate=1 / interlaced=0 / bluray_compat=0 / constrained_intra=0 / bframes=0 / weightp=0 / keyint=250 / keyint_min=23 / scenecut=0 / intra_refresh=0 / rc=cqp / mbtree=0 / qp=0
    Default                                  : Yes
    Forced                                   : No
    Funktioniert auch nicht mit vaapi transcoding:
    Code:
    $ ffmpeg -hide_banner -hwaccel vaapi -hwaccel_device /dev/dri/renderD128 -hwaccel_output_format vaapi -i 420ll.mkv -c:v h264_vaapi -b:v 10M -y output.mkv
    Input #0, matroska,webm, from '420ll.mkv':
      Metadata:
        ENCODER         : Lavf58.12.100
      Duration: 00:05:00.47, start: 0.000000, bitrate: 136154 kb/s
        Stream #0:0: Video: h264 (High 4:4:4 Predictive), yuv420p(progressive), 1920x1080, 23.98 fps, 23.98 tbr, 1k tbn, 47.95 tbc (default)
        Metadata:
          ENCODER         : Lavc58.18.100 libx264
          DURATION        : 00:05:00.472000000
        Stream #0:1: Audio: ac3, 48000 Hz, stereo, fltp, 256 kb/s (default)
        Metadata:
          ENCODER         : Lavc58.18.100 ac3
          DURATION        : 00:05:00.416000000
    Stream mapping:
      Stream #0:0 -> #0:0 (h264 (native) -> h264 (h264_vaapi))
      Stream #0:1 -> #0:1 (ac3 (native) -> vorbis (libvorbis))
    Press [q] to stop, [?] for help
    [h264 @ 0x5575607b4980] Failed setup for format vaapi_vld: hwaccel initialisation returned error.
    Impossible to convert between the formats supported by the filter 'Parsed_null_0' and the filter 'auto_scaler_0'
    Error reinitializing filters!
    Failed to inject frame into filter network: Function not implemented
    Error while processing the decoded data for stream #0:0
    [libvorbis @ 0x5575604a4fc0] 39 frames left in the queue on closing
    Conversion failed!
    Ich kann natürlich auf das Hardwaredecoding verzichten und folgendes ausführen:
    Code:
    ffmpeg -hide_banner -vaapi_device /dev/dri/renderD128 -i 420ll.mkv -acodec copy -vf 'format=nv12,hwupload' -vcodec h264_vaapi -y -b:v 10M -profile:v high -level 41 -quality 1 -bf 3 -y output.mkv
    Damit erreiche ich max. 4x speed. Das geht einigermaßen. Das erklärt aber auch nicht warum das Hardwaredecoding nicht funktioniert.

    Mit dem mjpeg-avi (yuvj422p) erreiche ich so erbämliche 1,7x speed.
    Ich frage mich, warum ist das mjpeg-decoding unter Linux (arch) so unglaublich langsam ? Unter Windows erreiche ich mit dieser Datei erheblich bessere Performance.

    Ob das vielleicht ein ffmpeg Problem ist ? Weiß jemand wie man mit mencoder dieses 422-Avi nach 4:2:0 wandelt und an ffmpeg übergibt ? Diese piperei ist mir auch ein Buch mit sieben Siegeln. Muß ich mir mal bei Hybrid anschauen.

    Gruß ggrub

  7. #27
    . Avatar von Selur
    Registriert seit
    19. April 2003
    Ort
    underground
    Beiträge
    24.872

    Standard AW: ffmpeg mit quicksync

    libx264, lossless encodet um dieses 4:2:0 chroma subsampling zu erhalten
    Nur als Anmerkung: Lossless ist mit 422 nicht standard konform. Lossless ist nur in Hi444PP erlaubt.
    (Darum geht lossless in Hybrid nur mit 'High 4:4:4' oder 'unrestricted'.)

    Weiß jemand wie man mit mencoder dieses 422-Avi nach 4:2:0 wandelt und an ffmpeg übergibt ?
    Welchen Sinn hat das denn? Dann kannst Du auch mehrere ffmpeg Instanzen verwenden, das hattest Du doch schon,..
    (Alles was Du in zwei ffmpeg aufrufen hast, wobei der eine den anderen füttert sollte auch in einem Aufruf gehen.)

    ---
    Code:
    ffmpeg -vaapi_device /dev/dri/renderD128 -i test_01.avi -vf 'format=yuvj422p,hwupload' -c:v h264_vaapi -threads 8 -qp 18 output.mkv
    Ging ja und war nur langsam, wie sieht es denn aus, wenn Du dort 'format=yuv420p' verwendest anstatt yuvj422p?
    Ist denn bekannt welche Formate hwupload entgegen nehmen kann?

    Cu Selur
    Hybrid hier im Board, Homepage (www.selur.de), Forum

  8. #28
    Routinier
    Registriert seit
    14. December 2011
    Beiträge
    252

    Standard AW: ffmpeg mit quicksync

    Lossless ist mit 422 nicht standard konform
    Ok, hab ich notiert. Bleibe ich also bei dem was die Capturekarte direkt zur Verfüung stellt: mjpeg yuvj422p.
    Code:
    $ ffmpeg -hide_banner -vaapi_device /dev/dri/renderD128 -i mjpeg422.avi -vf 'format=yuv420p,hwupload' -c:v h264_vaapi -threads 8 -qp 18 -y output.mkv
    Guessed Channel Layout for Input Stream #0.1 : stereo
    Input #0, avi, from 'mjpeg422.avi':
      Duration: 00:01:00.60, start: 0.000000, bitrate: 49137 kb/s
        Stream #0:0: Video: mjpeg (MJPG / 0x47504A4D), yuvj422p(pc, bt470bg/unknown/unknown), 1920x1080, 46824 kb/s, 23.98 fps, 23.98 tbr, 23.98 tbn, 23.98 tbc
        Stream #0:1: Audio: pcm_s24le ([1][0][0][0] / 0x0001), 48000 Hz, stereo, s32 (24 bit), 2304 kb/s
    Stream mapping:
      Stream #0:0 -> #0:0 (mjpeg (native) -> h264 (h264_vaapi))
      Stream #0:1 -> #0:1 (pcm_s24le (native) -> vorbis (libvorbis))
    Press [q] to stop, [?] for help
    Duplicate formats in ff_merge_formats detected
    [swscaler @ 0x5655068339c0] deprecated pixel format used, make sure you did set range correctly
    [h264_vaapi @ 0x5655067e5300] Failed to end picture encode issue: 6 (invalid VASurfaceID).
    [h264_vaapi @ 0x5655067e5300] Encode failed: -5.
    Video encoding failed
    Conversion failed!
    Informationen was "hwupload" oder "hwaccel" überhaupt verarbeiten können sind spärlich zu finden und CPU-abhängig. Um das einigermaßen herauszufinden zeigt "vainfo" an:
    Code:
    $ vainfo
    libva info: VA-API version 1.1.0
    libva info: va_getDriverName() returns 0
    libva info: User requested driver 'i965'
    libva info: Trying to open /usr/lib/dri/i965_drv_video.so
    libva info: Found init function __vaDriverInit_1_1
    libva info: va_openDriver() returns 0
    vainfo: VA-API version: 1.1 (libva 2.1.0)
    vainfo: Driver version: Intel i965 driver for Intel(R) Skylake - 2.1.0
    vainfo: Supported profile and entrypoints
          VAProfileMPEG2Simple            :    VAEntrypointVLD
          VAProfileMPEG2Simple            :    VAEntrypointEncSlice
          VAProfileMPEG2Main              :    VAEntrypointVLD
          VAProfileMPEG2Main              :    VAEntrypointEncSlice
          VAProfileH264ConstrainedBaseline:    VAEntrypointVLD
          VAProfileH264ConstrainedBaseline:    VAEntrypointEncSlice
          VAProfileH264ConstrainedBaseline:    VAEntrypointEncSliceLP
          VAProfileH264ConstrainedBaseline:    VAEntrypointFEI
          VAProfileH264ConstrainedBaseline:    VAEntrypointStats
          VAProfileH264Main               :    VAEntrypointVLD
          VAProfileH264Main               :    VAEntrypointEncSlice
          VAProfileH264Main               :    VAEntrypointEncSliceLP
          VAProfileH264Main               :    VAEntrypointFEI
          VAProfileH264Main               :    VAEntrypointStats
          VAProfileH264High               :    VAEntrypointVLD
          VAProfileH264High               :    VAEntrypointEncSlice
          VAProfileH264High               :    VAEntrypointEncSliceLP
          VAProfileH264High               :    VAEntrypointFEI
          VAProfileH264High               :    VAEntrypointStats
          VAProfileH264MultiviewHigh      :    VAEntrypointVLD
          VAProfileH264MultiviewHigh      :    VAEntrypointEncSlice
          VAProfileH264StereoHigh         :    VAEntrypointVLD
          VAProfileH264StereoHigh         :    VAEntrypointEncSlice
          VAProfileVC1Simple              :    VAEntrypointVLD
          VAProfileVC1Main                :    VAEntrypointVLD
          VAProfileVC1Advanced            :    VAEntrypointVLD
          VAProfileNone                   :    VAEntrypointVideoProc
          VAProfileJPEGBaseline           :    VAEntrypointVLD
          VAProfileJPEGBaseline           :    VAEntrypointEncPicture
          VAProfileVP8Version0_3          :    VAEntrypointVLD
          VAProfileVP8Version0_3          :    VAEntrypointEncSlice
          VAProfileHEVCMain               :    VAEntrypointVLD
          VAProfileHEVCMain               :    VAEntrypointEncSlice
    Unterstützte Kodierungsformate werden mit VAEntrypointEncSlice angezeigt, und alle Dekodierungsformate werden mit VAEntryPointVLD- und VAEntrypointVideoProc angezeigt.

    Wenn man nun davon ausgehen muß das "VAEntrypointEncPicture" ungleich "VAEntrypointEncSlice" ist, funktioniert das Transcoding nicht. Das erklärt aber nicht warum das Hardwaredecoding (VAEntryPointVLD) nicht funktioniert.
    Code:
    $ ffmpeg -hide_banner -hwaccel vaapi -hwaccel_device /dev/dri/renderD128 -hwaccel_output_format vaapi -i mjpeg422.avi -f null -
    Guessed Channel Layout for Input Stream #0.1 : stereo
    Input #0, avi, from 'mjpeg422.avi':
      Duration: 00:01:00.60, start: 0.000000, bitrate: 49137 kb/s
        Stream #0:0: Video: mjpeg (MJPG / 0x47504A4D), yuvj422p(pc, bt470bg/unknown/unknown), 1920x1080, 46824 kb/s, 23.98 fps, 23.98 tbr, 23.98 tbn, 23.98 tbc
        Stream #0:1: Audio: pcm_s24le ([1][0][0][0] / 0x0001), 48000 Hz, stereo, s32 (24 bit), 2304 kb/s
    Stream mapping:
      Stream #0:0 -> #0:0 (mjpeg (native) -> wrapped_avframe (native))
      Stream #0:1 -> #0:1 (pcm_s24le (native) -> pcm_s16le (native))
    Press [q] to stop, [?] for help
    ffmpeg: gen8_mfd.c:2602: gen8_mfd_jpeg_bsd_object: Assertion `0' failed.
    Abgebrochen (Speicherabzug geschrieben)
    Ok, dann muß ein anderer Weg her damit das Transcoding funktioniert. Voraussetzung ist nur das lossless Capture.
    Man kann das Capture so konfigurieren das mit ffmpeg, 8bit YUV abgegriffen wird:
    Code:
    Format                                   : YUV
    Codec ID                                 : UYVY
    Codec ID/Info                            : Uncompressed 16bpp. YUV 4:2:2 (Y sample at every pixel, U and V sampled at every second pixel horizontally on each line). A macropixel contains 2 pixels in 1 u_int32.
    Duration                                 : 1 min 0 s
    Bit rate                                 : 795 Mb/s
    Width                                    : 1 920 pixels
    Height                                   : 1 080 pixels
    Display aspect ratio                     : 16:9
    Frame rate                               : 23.976 (24000/1001) FPS
    Color space                              : YUV
    Chroma subsampling                       : 4:2:2
    Compression mode                         : Lossless
    ffmpeg greift also direct auf das Capturedevice zu.
    Zum Encoden "on the fly" kann ich somit jeden internen ffmpeg-codec verwenden. Der muß halt lossless sein und anschließend für´s Transcoding taugen.

    Hat jemand eine Idee ?

  9. #29
    Erklär-Bär Avatar von LigH
    Registriert seit
    19. April 2003
    Ort
    OPAL-Invalidengebiet Altmark
    Alter
    43
    Beiträge
    42.765

    Standard AW: ffmpeg mit quicksync

    Sollen wir dir jetzt verlustfrei komprimierende Codecs aufzählen, die ffmpeg für YUV 4:2:2 unterstützt (z.B. Huffyuv / ffvhuff, FFV1, Ut, MagicYUV)? Die sind den Leuten, die im Analog-Capturing-Bereich Interesse haben, schon länger bekannt.

    Auf gute Zusammenarbeit:

    REGELN befolgen | SUCHE benutzen | FAQ lesen | STICKIES beachten




  10. #30
    Routinier
    Registriert seit
    14. December 2011
    Beiträge
    252

    Standard AW: ffmpeg mit quicksync

    ???

    Nein, mit 4:2:2 ist doch kein Transcoding möglich. Ich beende das jetzt auch hiermit.

    Es ist aber sehr wohl möglich Hardware mjpeg-Decoding auszuführen: https://github.com/FFmpeg/FFmpeg/com...7bd1af9c406241

    Allerdings ist das wohl (noch) nicht mit reinkompiliert worden. Sieht man ja hier:
    Code:
    ffmpeg -codecs | grep vaapi
    DEVIL. mjpeg                Motion JPEG (decoders: mjpeg mjpeg_cuvid ) (encoders: mjpeg mjpeg_vaapi )
    Also ist nur Encoding mit mjpeg_vaapi möglich.

    Gruß ggrub

Seite 3 von 4 ErsteErste 1234 LetzteLetzte

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Ähnliche Themen

  1. Handbrake + Quicksync: Parameter-Format?
    Von GGRUB im Forum MPEG-4-Encoding-Tools
    Antworten: 2
    Letzter Beitrag: 1. September 2014, 14:10
  2. Antworten: 6
    Letzter Beitrag: 18. May 2014, 18:53
  3. A's Video Converter - QuickSync powered encoder Gui
    Von Selur im Forum MPEG-4-Encoding-Tools
    Antworten: 0
    Letzter Beitrag: 10. February 2013, 21:14
  4. ffmpeg CBR MP3
    Von TS1234 im Forum Audio – Bearbeitung und Konvertierung
    Antworten: 3
    Letzter Beitrag: 11. November 2009, 00:15
  5. Ffmpeg svn ?
    Von AnImeFaN1991 im Forum MPEG-4-Encoding-Tools
    Antworten: 5
    Letzter Beitrag: 9. December 2008, 11:26

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •