Я пытаюсь научиться записывать содержимое окон X11, чтобы делать игровые скринкасты для Youtube. Это должно быть довольно тривиальной задачей, но она уже съела полный вечер. Теперь я немного узнал о мультиплексировании и организации очередей (используя gst-launch
), но проблема остается: Когда я мультиплексирую аудио и видео в avi, видео воспроизводится в несколько раз быстрее, чем аудио в результирующем файле , Это означает, что видео скоро заканчивается и останавливается, а звук продолжает болтать в фоновом режиме.
Это моя цепочка фильтров, которая вызывает проблему:
gst-launch-1.0 ximagesrc xid=$XID ! video/x-raw,framerate=30/1 ! videoconvert !
x264enc ! queue ! avimux name=mux ! queue ! filesink location=out.avi
pulsesrc device=$DEV ! queue ! audioconvert !
lamemp3enc bitrate=192 ! queue ! mux.
Однако проблема исчезает, когда у меня только видео, и оно воспроизводится с совершенно нормальной скоростью:
ximagesrc xid=0x0820000b ! video/x-raw,framerate=30/1 ! videoconvert !
x264enc ! avimux ! filesink location=out.avi
Буду также признателен, если вы поправите меня в отношении использования ! queue !
. Где это нужно? В текущей настройке я почти никогда не получаю предупреждения о том, что образцы были отброшены.
Обновление: Я бы предпочел использовать mp4 muxer, но он создает непригодные для воспроизведения файлы без атома moov. Youtube рекомендует поместить его в начало файла, есть ли шанс, что я смогу форсировать его с помощью mp4 muxer?