Gnome tiene una herramienta de screencast incorporada que usa ctrl
plus shift
plus alt
plus R
. ¡Es una gran herramienta con una salida de vídeo de calidad constante!
Pero necesito la salida en mp4. He probado esto: ffmpeg -i screencast.webm -crf 0 screencast.mp4
como se especifica en otras publicaciones de AskUbuntu, pero no me funciona bien, aunque se supone que no tiene pérdidas.
Mi screencast en mp4 salta, se congela en un solo fotograma y los tamaños de los archivos son drásticamente diferentes.
Necesito h.264 mp4, idealmente con una velocidad de fotogramas constante, en alta definición.
¿Qué comando ffmpeg puedo usar?
Aquí hay un archivo de ejemplo:ffmpeg -i input.webm
$ ffmpeg -i Screencast\ from\ 03-18-2023\ 04\:57\:59\ PM.webm
ffmpeg version 4.4.2-0ubuntu0.22.04.1 Copyright (c) 2000-2021 the FFmpeg developers
built with gcc 11 (Ubuntu 11.2.0-19ubuntu1)
configuration: --prefix=/usr --extra-version=0ubuntu0.22.04.1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libdav1d --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librabbitmq --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzimg --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl --enable-sdl2 --enable-pocketsphinx --enable-librsvg --enable-libmfx --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared
WARNING: library configuration mismatch
avcodec configuration: --prefix=/usr --extra-version=0ubuntu0.22.04.1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libdav1d --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librabbitmq --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzimg --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl --enable-sdl2 --enable-pocketsphinx --enable-librsvg --enable-libmfx --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared --enable-version3 --disable-doc --disable-programs --enable-libaribb24 --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libtesseract --enable-libvo_amrwbenc --enable-libsmbclient
libavutil 56. 70.100 / 56. 70.100
libavcodec 58.134.100 / 58.134.100
libavformat 58. 76.100 / 58. 76.100
libavdevice 58. 13.100 / 58. 13.100
libavfilter 7.110.100 / 7.110.100
libswscale 5. 9.100 / 5. 9.100
libswresample 3. 9.100 / 3. 9.100
libpostproc 55. 9.100 / 55. 9.100
Input #0, matroska,webm, from 'Screencast from 03-18-2023 04:57:59 PM.webm':
Metadata:
encoder : GStreamer matroskamux version 1.20.3
creation_time : 2023-03-18T20:57:59.129336Z
Duration: 00:16:48.47, start: 0.028000, bitrate: 858 kb/s
Stream #0:0(eng): Video: vp8, yuv420p(tv, bt709, progressive), 1920x1080, SAR 1:1 DAR 16:9, 1k tbr, 1k tbn, 1k tbc (default)
Metadata:
title : Video
At least one output file must be specified
Respuesta1
Esto funciona para generar su screencast como un mp4
video que se reproduce como se esperaba enVLCy otros:
ffmpeg -i screencast.webm -filter:v "fps=30" screencast.mp4
Esto funciona en más casos y evita ffmpeg
generar errores de "no divisible por 2":
ffmpeg -i screencast.webm -filter:v "scale=trunc(iw/2)*2:trunc(ih/2)*2,fps=30" screencast.mp4
Lo anterior establece una velocidad de fotogramas constante de 30 fotogramas por segundo ( fps
). Cambia el tamaño de su video en un píxel como máximo y se asegura de que el ancho y alto de entrada ( iw
y ih
) sean números pares.
También puede especificar opciones de códec como -codec:v libx264
. Verificarffmpeg
Opciones de vídeo depara sus detalles.
Sus preguntas y preguntas y respuestas relacionadas que he encontrado útiles durante esta investigación incluyen las siguientes:
(Una esencia que pone toda esta respuesta en una práctica función ~/.bashrc)https://gist.github.com/azeemh/de280db7ba71e1d69ed55c0e5855de50