Re: [LAU] [LAD] Screencasting with JACK [SOLVED!]

From: J. Liles <malnourite@email-addr-hidden>
Date: Mon Aug 12 2013 - 05:18:57 EEST

On Sun, Aug 11, 2013 at 6:18 AM, Diego Simak <diego.simak@email-addr-hidden> wrote:

> 2013/8/8 J. Liles <malnourite@email-addr-hidden>
> >
> >
> > As some of you may recall, every time I've posted a demo video to LAD,
> I've had to include a disclaimer excusing the poor quality due to a lack of
> functional screencasting tools.
> >
> > Well, it took a couple of weeks of hair pulling and many, many hours of
> testing, but I finally arrived at a solution.
> >
> > Anyone who wants to create a screencast and record audio via JACK *in
> perfect sync* must do the following:
> >
> > Get ffmpeg. Apply this patch to it:
> >
> >
> https://github.com/original-male/FFmpeg/commit/d02509d04d396a98646ca81e9ba327a501486130.patch
> >
> > Build it with vorbis and h264 support.
> >
> > Then, start your favorite desktop environment. I use Xephyr for this.
> >
> > Have jack running (at -r 48000)
> >
> > Then run the following command:
> >
> > ffmpeg -fflags +genpts+igndts -f x11grab -vsync 0 -r 30 -s 1920x1080 -i
> :${DISPLAY}.+0,0 -vcodec h264 -f jack -ac 2 -r:a 48000 -i screencast
> -acodec pcm_s16le -r:v 30 -vsync 2 -async 1 -map 0:0,1,0 -map 1:0 -preset
> ultrafast -qp 0 "$FILE"
> >
> > Where DISPLAY is the number of your X11 display and FILE is the filename
> for the screencast. I use a .mkv extension for the matroska container.
> >
> > Remember to connect the streams you want recorded to the 'screencast'
> JACK inputs!
> >
> > With this setup I'm able to record a full 30 FPS @ 1080P with audio in
> perfect sync. Please share your results too. With some more evidence I
> might have a good case to get ffmpeg to accept my patch.
> >
> > Enjoy!
> >
> >
> >
> >
> >
> >
> >
> > _______________________________________________
> > Linux-audio-dev mailing list
> > Linux-audio-dev@email-addr-hidden
> > http://lists.linuxaudio.org/listinfo/linux-audio-dev
> >
>
> My result:
>
> - I had to change screen size to 1366x768 according to my laptop display
> - Audio and video are not in sync, I can see the following message
> after executing the ffmpeg command:
>
> [swscaler @ 0x1ac5080] Warning: data is not aligned! This can lead to
> a speedloss
>
>
> This is the full log.
> Thank you very much!
>
> diego@email-addr-hidden:~$ ffmpeg -fflags +genpts+igndts -f x11grab -vsync 0 -r
> 30 -s 1366x768 -i :0.0+0,0 -vcodec h264 -f jack -ac 2 -r:a 48000 -i
> screencast -acodec pcm_s16le -r:v 30 -vsync 2 -async 1 -map 0:0,1,0
> -map 1:0 -preset ultrafast -qp 0 aaa.mkv
> ffmpeg version N-55422-gb37ff48 Copyright (c) 2000-2013 the FFmpeg
> developers
> built on Aug 10 2013 10:54:00 with gcc 4.6 (Ubuntu/Linaro 4.6.3-1ubuntu5)
> configuration: --enable-libx264 --enable-x11grab --enable-gpl
> --enable-libvorbis --disable-yasm
> libavutil 52. 41.100 / 52. 41.100
> libavcodec 55. 24.100 / 55. 24.100
> libavformat 55. 13.102 / 55. 13.102
> libavdevice 55. 3.100 / 55. 3.100
> libavfilter 3. 82.100 / 3. 82.100
> libswscale 2. 4.100 / 2. 4.100
> libswresample 0. 17.103 / 0. 17.103
> libpostproc 52. 3.100 / 52. 3.100
> [x11grab @ 0x1ae3700] device: :0.0+0,0 -> display: :0.0 x: 0 y: 0
> width: 1366 height: 768
> [x11grab @ 0x1ae3700] shared memory extension found
> Input #0, x11grab, from ':0.0+0,0':
> Duration: N/A, start: 1376226919.464630, bitrate: 1007124 kb/s
> Stream #0:0: Video: rawvideo (BGR[0] / 0x524742), bgr0, 1366x768,
> 1007124 kb/s, 30 tbr, 1000k tbn, 30 tbc
> jack_port_get_latency_range called with an incorrect port 0
> [jack @ 0x1afbce0] JACK client registered and activated (rate=48000Hz,
> buffer_size=1024 frames)
> Guessed Channel Layout for Input Stream #1.0 : stereo
> Input #1, jack, from 'screencast':
> Duration: N/A, start: 1376226919.619355, bitrate: 3072 kb/s
> Stream #1:0: Audio: pcm_f32le, 48000 Hz, stereo, flt, 3072 kb/s
> [swscaler @ 0x1ac5080] deprecated pixel format used, make sure you did
> set range correctly
> No pixel format specified, yuv444p for H.264 encoding chosen.
> Use -pix_fmt yuv420p for compatibility with outdated media players.
> -async is forwarded to lavfi similarly to -af
> aresample=async=1:min_hard_comp=0.100000:first_pts=0.
> [libx264 @ 0x2b6e520] using cpu capabilities: MMX2 SSE2Fast SSSE3
> FastShuffle SSE4.1 Cache64
> [libx264 @ 0x2b6e520] profile High 4:4:4 Predictive, level 3.2, 4:4:4 8-bit
> [libx264 @ 0x2b6e520] 64 - core 120 r2151 a3f4407 - H.264/MPEG-4 AVC
> codec - Copyleft 2003-2011 - http://www.videolan.org/x264.html -
> options: 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=3
> sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0
> constrained_intra=0 bframes=0 weightp=0 keyint=250 keyint_min=25
> scenecut=0 intra_refresh=0 rc=cqp mbtree=0 qp=0
> Output #0, matroska, to 'aaa.mkv':
> Metadata:
> encoder : Lavf55.13.102
> Stream #0:0: Video: h264 (libx264) (H264 / 0x34363248), yuv444p,
> 1366x768, q=-1--1, 1k tbn, 30 tbc
> Stream #0:1: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 48000 Hz,
> stereo, s16, 1536 kb/s
> Stream mapping:
> Stream #0:0 -> #0:0 (rawvideo -> libx264)
> Stream #1:0 -> #0:1 (pcm_f32le -> pcm_s16le)
> Press [q] to stop, [?] for help
> [swscaler @ 0x1ac5080] Warning: data is not aligned! This can lead to
> a speedloss
> frame= 122 fps= 23 q=-1.0 Lsize= 2774kB time=00:00:04.06
> bitrate=5588.3kbits/s
> video:2040kB audio:732kB subtitle:0 global headers:0kB muxing overhead
> 0.097703%
> [libx264 @ 0x2b6e520] frame I:1 Avg QP: 0.00 size:596863
> [libx264 @ 0x2b6e520] frame P:121 Avg QP: 0.00 size: 12324
> [libx264 @ 0x2b6e520] mb I I16..4: 100.0% 0.0% 0.0%
> [libx264 @ 0x2b6e520] mb P I16..4: 7.6% 0.0% 0.0% P16..4: 0.3%
> 0.0% 0.0% 0.0% 0.0% skip:92.1%
> [libx264 @ 0x2b6e520] coded y,u,v intra: 11.9% 37.1% 37.5% inter: 0.2%
> 0.2% 0.2%
> [libx264 @ 0x2b6e520] i16 v,h,dc,p: 91% 8% 0% 0%
> [libx264 @ 0x2b6e520] kb/s:4107.72
> Received signal 2: terminating.
> diego@email-addr-hidden:~$
> diego@email-addr-hidden:~$
> diego@email-addr-hidden:~$
>

Interesting. If you use Xephyr you can record a virtual desktop larger than
your actual display (and therefore 1920x1080), does that avoid the error
(and give you better results)?

_______________________________________________
Linux-audio-user mailing list
Linux-audio-user@email-addr-hidden
http://lists.linuxaudio.org/listinfo/linux-audio-user
Received on Mon Aug 12 16:15:02 2013

This archive was generated by hypermail 2.1.8 : Mon Aug 12 2013 - 16:15:02 EEST