charmbracelet / vhs

Your CLI home video recorder 📼
MIT License
15.26k stars 260 forks source link

Unplayable gif output by VHS #529

Open CodesOfRishi opened 2 months ago

CodesOfRishi commented 2 months ago

Describe the bug

Unplayable gif output by VHS. The .mp4 output works as expected but not the .gif output. A gif is created but it's unplayable.

Setup

To Reproduce

Run the below code in your terminal.

vhs demo2.tape

Source Code

Below is the content of my demo2.tape file I am using to create the .gif output.

Output out.gif

# Set WindowBar Colorful
Set FontSize 30
Set Width 3000
Set Height 1000
Set Framerate 30

Sleep 1
Type "# Here's a brief demonstration of the XYZ"
Sleep 2
Backspace 41
Sleep 1

Sleep 2
Ctrl+L
Sleep 1

Type `# As you go through XYZ, it will start recording your activities`
Sleep 2
Enter 1

Sleep 1
Type `# So, let's start with searching and navigating through the logs`
Sleep 3
Enter 1

Sleep 5

Expected behavior

VHS should be creating a .gif file that can be viewed in a browser.

Screenshots

None

Additional context

Below is the output that I get.

File: demo2.tape
Output .gif out.gif
Set FontSize 30
Set Width 3000
Set Height 1000
Set Framerate 30
Sleep 1s
Type # Here's a brief demonstration of the XYZ
Sleep 2s
Backspace 41
Sleep 1s
Sleep 2s
Ctrl L
Sleep 1s
Type # As you go through XYZ, it will start recording your activities
Sleep 2s
Enter 1
Sleep 1s
Type # So, let's start with searching and navigating through the logs
Sleep 3s
Enter 1
Sleep 5s
Creating out.gif...
ffmpeg version 6.1.1-3ubuntu5 Copyright (c) 2000-2023 the FFmpeg developers
  built with gcc 13 (Ubuntu 13.2.0-23ubuntu3)
  configuration: --prefix=/usr --extra-version=3ubuntu5 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --disable-omx --enable-gnutls --enable-libaom --enable-libass --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libdav1d --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libglslang --enable-libgme --enable-libgsm --enable-libharfbuzz --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzimg --enable-openal --enable-opencl --enable-opengl --disable-sndio --enable-libvpl --disable-libmfx --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-ladspa --enable-libbluray --enable-libjack --enable-libpulse --enable-librabbitmq --enable-librist --enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libx264 --enable-libzmq --enable-libzvbi --enable-lv2 --enable-sdl2 --enable-libplacebo --enable-librav1e --enable-pocketsphinx --enable-librsvg --enable-libjxl --enable-shared
  libavutil      58. 29.100 / 58. 29.100
  libavcodec     60. 31.102 / 60. 31.102
  libavformat    60. 16.100 / 60. 16.100
  libavdevice    60.  3.100 / 60.  3.100
  libavfilter     9. 12.100 /  9. 12.100
  libswscale      7.  5.100 /  7.  5.100
  libswresample   4. 12.100 /  4. 12.100
  libpostproc    57.  3.100 / 57.  3.100
Input #0, image2, from '/tmp/vhs36284546/frame-text-%05d.png':
  Duration: 00:00:32.60, start: 0.000000, bitrate: N/A
  Stream #0:0: Video: png, rgba(pc, gbr/bt709/iec61966-2-1), 2850x840, 25 fps, 25 tbr, 25 tbn
Input #1, image2, from '/tmp/vhs36284546/frame-cursor-%05d.png':
  Duration: 00:00:32.60, start: 0.000000, bitrate: N/A
  Stream #1:0: Video: png, rgba(pc, gbr/bt709/iec61966-2-1), 2850x840, 25 fps, 25 tbr, 25 tbn
Input #2, lavfi, from 'color=#171717:s=3000x1000':
  Duration: N/A, start: 0.000000, bitrate: N/A
  Stream #2:0: Video: wrapped_avframe, yuv420p, 3000x1000 [SAR 1:1 DAR 3:1], 25 fps, 25 tbr, 25 tbn
Stream mapping:
  Stream #0:0 (png) -> overlay
  Stream #1:0 (png) -> overlay
  Stream #2:0 (wrapped_avframe) -> scale:default
  paletteuse:default -> Stream #0:0 (gif)
Press [q] to stop, [?] for help
[in#0/image2 @ 0x64b48b15cb40] Thread message queue blocking; consider raising the thread_queue_size option (current value: 8)
[in#1/image2 @ 0x64b48b16eac0] Thread message queue blocking; consider raising the thread_queue_size option (current value: 8)

Host your GIF on vhs.charm.sh: vhs publish <file>.gif
popey commented 2 weeks ago

FWIW, your tape file works fine here on Ubuntu 24.04.

out

CodesOfRishi commented 2 weeks ago

Well ok I may try on Ubuntu then i guess