Peek: Cannot record GIF or APNG

Created on 22 Oct 2017  ·  21Comments  ·  Source: phw/peek

I am using arch linux and on the latest development version I can no longer recorder GIF or APNG file formats. Release 1.1.0 works perfectly.

Output file is empty, nothing was encoded (check -ss / -t / -frames parameters if used) /home/user/.cache/peek/peekQTVC8Y.png: Invalid data found when processing input Error: Child process exited with code 1 Temp file delete error: Error removing file /home/user/.cache/peek/peekQ5IH8Y.gif: No such file or directory

bug

Most helpful comment

This is fixed in the git master branch.

All 21 comments

Weird. Looks like something goes wrong when the palette file gets generated. Can you post the complete output of Peek? I suspect the actual issue is already earlier, maybe we can see something in the output. Also it is important to know whether the ffmpeg or gnome shell backend was used (it will always be ffmpeg unless you are using gnome shell).

For a quick workaround run peek with PEEK_POSTPROCESSOR=imagemagick peek and it will use the old approach for GIF (this won't help with APNG, this only works with the new code).

Using screen recorder backend ffmpeg
webmgifffmpeg version 3.4 Copyright (c) 2000-2017 the FFmpeg developers
built with gcc 7.2.0 (GCC)
configuration: --prefix=/usr --disable-debug --disable-static --disable-stripping --enable-avisynth --enable-avresample --enable-fontconfig --enable-gmp --enable-gnutls --enable-gpl --enable-ladspa --enable-libass --enable-libbluray --enable-libfreetype --enable-libfribidi --enable-libgsm --enable-libiec61883 --enable-libmodplug --enable-libmp3lame --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libv4l2 --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxcb --enable-libxvid --enable-shared --enable-version3
libavutil 55. 78.100 / 55. 78.100
libavcodec 57.107.100 / 57.107.100
libavformat 57. 83.100 / 57. 83.100
libavdevice 57. 10.100 / 57. 10.100
libavfilter 6.107.100 / 6.107.100
libavresample 3. 7. 0 / 3. 7. 0
libswscale 4. 8.100 / 4. 8.100
libswresample 2. 9.100 / 2. 9.100
libpostproc 54. 7.100 / 54. 7.100
Input #0, x11grab, from ':0+227,101':
Duration: N/A, start: 1508689385.013648, bitrate: N/A
Stream #0:0: Video: rawvideo (BGR[0] / 0x524742), bgr0, 479x193, 10 fps, 10 tbr, 1000k tbn, 1000k tbc
Stream mapping:
Stream #0:0 -> #0:0 (rawvideo (native) -> pam (native))
Press [q] to stop, [?] for help
Finishing stream 0:0 without any data written to it.
Output #0, rawvideo, to '/home/alessandro/.cache/peek/peekB8527Y.pam':
Metadata:
encoder : Lavf57.83.100
Stream #0:0: Video: pam, rgb24, 479x193, q=2-31, 200 kb/s, 10 fps, 10 tbn, 10 tbc
Metadata:
encoder : Lavc57.107.100 pam
frame= 0 fps=0.0 q=0.0 Lsize= 0kB time=00:00:00.00 bitrate=N/A speed= 0x
video:0kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
Output file is empty, nothing was encoded (check -ss / -t / -frames parameters if used)
ffmpeg version 3.4 Copyright (c) 2000-2017 the FFmpeg developers
built with gcc 7.2.0 (GCC)
configuration: --prefix=/usr --disable-debug --disable-static --disable-stripping --enable-avisynth --enable-avresample --enable-fontconfig --enable-gmp --enable-gnutls --enable-gpl --enable-ladspa --enable-libass --enable-libbluray --enable-libfreetype --enable-libfribidi --enable-libgsm --enable-libiec61883 --enable-libmodplug --enable-libmp3lame --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libv4l2 --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxcb --enable-libxvid --enable-shared --enable-version3
libavutil 55. 78.100 / 55. 78.100
libavcodec 57.107.100 / 57.107.100
libavformat 57. 83.100 / 57. 83.100
libavdevice 57. 10.100 / 57. 10.100
libavfilter 6.107.100 / 6.107.100
libavresample 3. 7. 0 / 3. 7. 0
libswscale 4. 8.100 / 4. 8.100
libswresample 2. 9.100 / 2. 9.100
libpostproc 54. 7.100 / 54. 7.100
/home/alessandro/.cache/peek/peekB8527Y.pam: Invalid data found when processing input
Error: Child process exited with code 1
ffmpeg version 3.4 Copyright (c) 2000-2017 the FFmpeg developers
built with gcc 7.2.0 (GCC)
configuration: --prefix=/usr --disable-debug --disable-static --disable-stripping --enable-avisynth --enable-avresample --enable-fontconfig --enable-gmp --enable-gnutls --enable-gpl --enable-ladspa --enable-libass --enable-libbluray --enable-libfreetype --enable-libfribidi --enable-libgsm --enable-libiec61883 --enable-libmodplug --enable-libmp3lame --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libv4l2 --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxcb --enable-libxvid --enable-shared --enable-version3
libavutil 55. 78.100 / 55. 78.100
libavcodec 57.107.100 / 57.107.100
libavformat 57. 83.100 / 57. 83.100
libavdevice 57. 10.100 / 57. 10.100
libavfilter 6.107.100 / 6.107.100
libavresample 3. 7. 0 / 3. 7. 0
libswscale 4. 8.100 / 4. 8.100
libswresample 2. 9.100 / 2. 9.100
libpostproc 54. 7.100 / 54. 7.100
/home/alessandro/.cache/peek/peekB8527Y.pam: Invalid data found when processing input
Error: Child process exited with code 1
Error deleting palette file: Error removing file /home/alessandro/.cache/peek/peekQNCC8Y.png: No such file or directory
File save error: Error when getting information for file “/home/alessandro/.cache/peek/peek3LEG8Y.gif”: No such file or directory
Temp file delete error: Error removing file /home/alessandro/.cache/peek/peek3LEG8Y.gif: No such file or directory

Here is the output with the workaround

PEEK_POSTPROCESSOR=imagemagick ./peek
Using screen recorder backend ffmpeg
gifffmpeg version 3.4 Copyright (c) 2000-2017 the FFmpeg developers
built with gcc 7.2.0 (GCC)
configuration: --prefix=/usr --disable-debug --disable-static --disable-stripping --enable-avisynth --enable-avresample --enable-fontconfig --enable-gmp --enable-gnutls --enable-gpl --enable-ladspa --enable-libass --enable-libbluray --enable-libfreetype --enable-libfribidi --enable-libgsm --enable-libiec61883 --enable-libmodplug --enable-libmp3lame --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libv4l2 --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxcb --enable-libxvid --enable-shared --enable-version3
libavutil 55. 78.100 / 55. 78.100
libavcodec 57.107.100 / 57.107.100
libavformat 57. 83.100 / 57. 83.100
libavdevice 57. 10.100 / 57. 10.100
libavfilter 6.107.100 / 6.107.100
libavresample 3. 7. 0 / 3. 7. 0
libswscale 4. 8.100 / 4. 8.100
libswresample 2. 9.100 / 2. 9.100
libpostproc 54. 7.100 / 54. 7.100
Input #0, x11grab, from ':0+227,101':
Duration: N/A, start: 1508689469.701404, bitrate: N/A
Stream #0:0: Video: rawvideo (BGR[0] / 0x524742), bgr0, 479x193, 10 fps, 10 tbr, 1000k tbn, 1000k tbc
Stream mapping:
Stream #0:0 -> #0:0 (rawvideo (native) -> pam (native))
Press [q] to stop, [?] for help
Finishing stream 0:0 without any data written to it.
Output #0, rawvideo, to '/home/alessandro/.cache/peek/peekYD067Y.pam':
Metadata:
encoder : Lavf57.83.100
Stream #0:0: Video: pam, rgb24, 479x193, q=2-31, 200 kb/s, 10 fps, 10 tbn, 10 tbc
Metadata:
encoder : Lavc57.107.100 pam
frame= 0 fps=0.0 q=0.0 Lsize= 0kB time=00:00:00.00 bitrate=N/A speed= 0x
video:0kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
Output file is empty, nothing was encoded (check -ss / -t / -frames parameters if used)
convert: improper image header /home/alessandro/.cache/peek/peekYD067Y.pam' @ error/pnm.c/ReadPNMImage/284. convert: no images defined/home/alessandro/.cache/peek/peek3L1I8Y.gif' @ error/convert.c/ConvertImageCommand/3258.
Error: Child process exited with code 1
File save error: Error when getting information for file “/home/alessandro/.cache/peek/peek3L1I8Y.gif”: No such file or directory
Temp file delete error: Error removing file /home/alessandro/.cache/peek/peek3L1I8Y.gif: No such file or directory

Also I just tested on Ubuntu 17.10 if backed is gnome-shell it works brilliantly, but if I use ffmpeg it saves the file as a gif but unfortunately it is just a static image.

peek 2017-10-22 19-34

I have the same problem with Ubuntu 17.10

WARNING: library configuration mismatch

@gort818 This is very strange, are you sure release 1.1.0 works? Because your ffmpeg recording already fails, in both cases the recorded file is empty ("Output file is empty, nothing was encoded" and "Finishing stream 0:0 without any data written to it."). And absolutely nothing changed in this regard, ffmpeg in 1.1.0 gets called exactly as in the current development version. For how long did you record? What desktop environment are you using?

@irk3n-dev Likely a different issue, please open a new issue and post the full console output of Peek there.

@phw Here is the output using release peek-1.1.0 it works beautifully , I am using Cinnamon. I tried recording for a few seconds and up to a minute

./peek-1.1.0
Using screen recorder backend ffmpeg
ffmpeg version 3.4 Copyright (c) 2000-2017 the FFmpeg developers
built with gcc 7.2.0 (GCC)
configuration: --prefix=/usr --disable-debug --disable-static --disable-stripping --enable-avisynth --enable-avresample --enable-fontconfig --enable-gmp --enable-gnutls --enable-gpl --enable-ladspa --enable-libass --enable-libbluray --enable-libfreetype --enable-libfribidi --enable-libgsm --enable-libiec61883 --enable-libmodplug --enable-libmp3lame --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libv4l2 --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxcb --enable-libxvid --enable-shared --enable-version3
libavutil 55. 78.100 / 55. 78.100
libavcodec 57.107.100 / 57.107.100
libavformat 57. 83.100 / 57. 83.100
libavdevice 57. 10.100 / 57. 10.100
libavfilter 6.107.100 / 6.107.100
libavresample 3. 7. 0 / 3. 7. 0
libswscale 4. 8.100 / 4. 8.100
libswresample 2. 9.100 / 2. 9.100
libpostproc 54. 7.100 / 54. 7.100
Input #0, x11grab, from ':0+331,138':
Duration: N/A, start: 1508974958.940594, bitrate: N/A
Stream #0:0: Video: rawvideo (BGR[0] / 0x524742), bgr0, 677x450, 10 fps, 10 tbr, 1000k tbn, 1000k tbc
Stream mapping:
Stream #0:0 -> #0:0 (rawvideo (native) -> pam (native))
Press [q] to stop, [?] for help
Output #0, rawvideo, to '/home/alessandro/.cache/peek/peekXXXXXX.pam':
Metadata:
encoder : Lavf57.83.100
Stream #0:0: Video: pam, rgb24, 677x450, q=2-31, 200 kb/s, 10 fps, 10 tbn, 10 tbc
Metadata:
encoder : Lavc57.107.100 pam
frame= 11 fps=0.0 q=-0.0 size= 9728kB time=00:00:01.10 bitrate=72447.1kbitsframe= 16 fps= 16 q=-0.0 size= 14080kB time=00:00:01.60 bitrate=72089.6kbitsframe= 22 fps= 14 q=-0.0 size= 19456kB time=00:00:02.20 bitrate=72447.1kbitsframe= 28 fps= 13 q=-0.0 size= 24832kB time=00:00:02.80 bitrate=72651.3kbitsframe= 34 fps= 12 q=-0.0 size= 30208kB time=00:00:03.40 bitrate=72783.5kbitsframe= 40 fps= 12 q=-0.0 size= 35584kB time=00:00:04.00 bitrate=72876.0kbitsframe= 45 fps= 12 q=-0.0 size= 39936kB time=00:00:04.50 bitrate=72701.3kbitsframe= 51 fps= 11 q=-0.0 size= 45312kB time=00:00:05.10 bitrate=72783.5kbitsframe= 57 fps= 11 q=-0.0 size= 50688kB time=00:00:05.70 bitrate=72848.4kbitsframe= 63 fps= 11 q=-0.0 size= 56064kB time=00:00:06.30 bitrate=72901.0kbitsframe= 69 fps= 11 q=-0.0 size= 61440kB time=00:00:06.90 bitrate=72944.4kbitsframe= 75 fps= 11 q=-0.0 size= 66816kB time=00:00:07.50 bitrate=72980.9kbitsframe= 80 fps= 11 q=-0.0 size= 71168kB time=00:00:08.00 bitrate=72876.0kbitsframe= 85 fps= 11 q=-0.0 Lsize= 75870kB time=00:00:08.50 bitrate=73121.0kbits/s speed=1.06x
video:75870kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.000000%
peek 2017-10-25 16-42

Still not sure what is happening here. I checked, the recording of the pam file is completely unchanged compared to 1.1.0 . Also cannot reproduce, maybe I have to test with Cinnamon.

I have this exact issue too. Going from AUR package peek-git to peek (which is version 1.1.0) solves the issue.

@sQVe What de are you using?

@gort818 I'm not using a DE. I only use i3 as a window manager.

I'm using Arch Linux with KDE and I have problems with Peek built from the peek as well as from the peek-git package. The final GIF has only ~10KiB. I can see the size of the ~/.cache/peek/peekXXXXXX.pam file is increasing but if I try to play it with VLC, it loops only the first second (like in the final GIF). There are no errors in the Peek logs:

$ peek                               
Using screen recorder backend ffmpeg
ffmpeg version 3.4 Copyright (c) 2000-2017 the FFmpeg developers
  built with gcc 7.2.0 (GCC)
  configuration: --prefix=/usr --disable-debug --disable-static --disable-stripping --enable-avisynth --enable-avresample --enable-fontconfig --enable-gmp --enable-gnutls --enable-gpl --enable-ladspa --enable-libass --enable-libbluray --enable-libfreetype --enable-libfribidi --enable-libgsm --enable-libiec61883 --enable-libmodplug --enable-libmp3lame --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libv4l2 --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxcb --enable-libxvid --enable-shared --enable-version3
  libavutil      55. 78.100 / 55. 78.100
  libavcodec     57.107.100 / 57.107.100
  libavformat    57. 83.100 / 57. 83.100
  libavdevice    57. 10.100 / 57. 10.100
  libavfilter     6.107.100 /  6.107.100
  libavresample   3.  7.  0 /  3.  7.  0
  libswscale      4.  8.100 /  4.  8.100
  libswresample   2.  9.100 /  2.  9.100
  libpostproc    54.  7.100 / 54.  7.100
Input #0, x11grab, from ':0+959,494':
  Duration: N/A, start: 1509278715.154771, bitrate: N/A
    Stream #0:0: Video: rawvideo (BGR[0] / 0x524742), bgr0, 955x548, 10 fps, 10 tbr, 1000k tbn, 1000k tbc
Stream mapping:
  Stream #0:0 -> #0:0 (rawvideo (native) -> pam (native))
Press [q] to stop, [?] for help
Output #0, rawvideo, to '/home/user/.cache/peek/peekXXXXXX.pam':
  Metadata:
    encoder         : Lavf57.83.100
    Stream #0:0: Video: pam, rgb24, 955x548, q=2-31, 200 kb/s, 10 fps, 10 tbn, 10 tbc
    Metadata:
      encoder         : Lavc57.107.100 pam
frame=  123 fps= 10 q=-0.0 Lsize=  188594kB time=00:00:12.30 bitrate=125606.6kbits/s speed=1.02x    
video:188594kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.000000%

EDIT: I have discovered that if I disable Plasma 5 effects (CTRL+ALT+F12), it starts recording just fine.

Can you all try the latest git revision again? I could finally reproduce, changed the intermediary output format. This is probably an intermediate fix, but curious if it fixes your issues.

Can you all try the latest git revision again? I could finally reproduce, changed the intermediary output format. This is probably an intermediate fix, but curious if it fixes your issues.

@phw fixes the problem for me 👍.

@phw ah, maybe you already know, but also note that the fix broke PEEK_POSTPROCESSOR=imagemagick for me. With the fix, I get this:

~ PEEK_POSTPROCESSOR=imagemagick /opt/peek/build/peek

** (peek:30606): WARNING **: Binding '<Ctrl><Alt>R' failed!
Using screen recorder backend ffmpeg
ffmpeg version 3.4-static http://johnvansickle.com/ffmpeg/  Copyright (c) 2000-2017 the FFmpeg developers
  built with gcc 6.4.0 (Debian 6.4.0-7) 20170920
  configuration: --enable-gpl --enable-version3 --enable-static --disable-debug --disable-ffplay --disable-indev=sndio --disable-outdev=sndio --cc=gcc-6 --enable-fontconfig --enable-frei0r --enable-gnutls --enable-gray --enable-libfribidi --enable-libass --enable-libvmaf --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librubberband --enable-librtmp --enable-libsoxr --enable-libspeex --enable-libvorbis --enable-libopus --enable-libtheora --enable-libvidstab --enable-libvo-amrwbenc --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --enable-libzimg
  libavutil      55. 78.100 / 55. 78.100
  libavcodec     57.107.100 / 57.107.100
  libavformat    57. 83.100 / 57. 83.100
  libavdevice    57. 10.100 / 57. 10.100
  libavfilter     6.107.100 /  6.107.100
  libswscale      4.  8.100 /  4.  8.100
  libswresample   2.  9.100 /  2.  9.100
  libpostproc    54.  7.100 / 54.  7.100
[x11grab @ 0x48d9ee0] Stream #0: not enough frames to estimate rate; consider increasing probesize
Input #0, x11grab, from ':0+654,459':
  Duration: N/A, start: 1509724229.505680, bitrate: N/A
    Stream #0:0: Video: rawvideo (BGR[0] / 0x524742), bgr0, 1233x547, 5 fps, 1000k tbr, 1000k tbn, 1000k tbc
Stream mapping:
  Stream #0:0 -> #0:0 (rawvideo (native) -> ffvhuff (native))
Press [q] to stop, [?] for help
Output #0, matroska, to '/home/ronj/.cache/peek/peekHFWZ8Y.mkv':
  Metadata:
    encoder         : Lavf57.83.100
    Stream #0:0: Video: ffvhuff (FFVH / 0x48564646), rgb24, 1233x547, q=2-31, 200 kb/s, 5 fps, 1k tbn, 5 tbc
    Metadata:
      encoder         : Lavc57.107.100 ffvhuff
frame=   53 fps=5.2 q=-0.0 Lsize=   37271kB time=00:00:10.40 bitrate=29355.4kbits/s speed=1.02x
video:37268kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.009093%
convert: no decode delegate for this image format `MKV' @ error/constitute.c/ReadImage/501.
convert: no images defined `/home/ronj/.cache/peek/peekM6ZQ8Y.gif' @ error/convert.c/ConvertImageCommand/3210.
Error: Child process exited with code 1
File save error: Error when getting information for file '/home/ronj/.cache/peek/peekM6ZQ8Y.gif': No such file or directory
Temp file delete error: Error removing file: No such file or directory

ah, maybe you already know,

I didn't know, but I kind of expected this (it works for me, but ImageMagick relies on global config files for this). But I think the ImageMagick backend just has to go, especially when we have both ffmpeg (fast, low RAM usage, small gif size, ok quality) and gifski (slow, low RAM usage, large GIF size, excellent quality) ImageMagick does not bring anything to the table (slow, huge RAM usage, small gif size, ok quality)

This is fixed in the git master branch.

@phw Awesome thanks !

@phw
Please do a release with this bugfix, it took me a while to figure out why I can't take any video ^^

@C0rn3j This specific bug was never released and is already fixed. If you have issues recording with the current stable version I recommend trying the latest development version. But there will be a new release soon.

I did indeed have issues on the stable version, using devel version made it work.

Good to hear a release is gonna come soon.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

chteuchteu picture chteuchteu  ·  6Comments

jjnilton picture jjnilton  ·  7Comments

ttatanepvp123 picture ttatanepvp123  ·  4Comments

austincunningham picture austincunningham  ·  3Comments

fbruetting picture fbruetting  ·  6Comments