[LAD] Screencasting with JACK [SOLVED!]

J. Liles malnourite at gmail.com
Thu Sep 26 16:44:35 UTC 2013


On Thu, Sep 26, 2013 at 8:16 AM, F. Medeiros <excalibas at gmail.com> wrote:

>  Hello,
>
> I have the same problem, audio and video are not in sync and  the data is
> not aligned Warning.
> This also happens when using Xephyr.
>
>
> This is what I get from ffmpeg:
>
> x at space:~/Documents/ffmpeg$ ./ffmpeg -fflags +genpts+igndts -f x11grab
> -vsync 0 -r 30 -s 1920x1080 -i :1.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 test.mkv
> ffmpeg version N-56669-g1906e00 Copyright (c) 2000-2013 the FFmpeg
> developers
>   built on Sep 26 2013 11:48:30 with gcc 4.6 (Ubuntu/Linaro 4.6.3-1ubuntu5)
>   configuration: --enable-libvorbis --enable-gpl --enable-libx264
> --enable-x11grab
>   libavutil      52. 46.100 / 52. 46.100
>   libavcodec     55. 33.100 / 55. 33.100
>   libavformat    55. 18.102 / 55. 18.102
>
>   libavdevice    55.  3.100 / 55.  3.100
>   libavfilter     3. 87.100 /  3. 87.100
>   libswscale      2.  5.100 /  2.  5.100
>
>   libswresample   0. 17.103 /  0. 17.103
>   libpostproc    52.  3.100 / 52.  3.100
> [x11grab @ 0x917dfc0] device: :1.0+0,0 -> display: :1.0 x: 0 y: 0 width:
> 1920 height: 1080
> [x11grab @ 0x917dfc0] shared memory extension found
> Input #0, x11grab, from ':1.0+0,0':
>   Duration: N/A, start: 1380208288.085940, bitrate: 1990656 kb/s
>     Stream #0:0: Video: rawvideo (BGR[0] / 0x524742), bgr0, 1920x1080,
> 1990656 kb/s, 30 tbr, 1000k tbn, 30 tbc
>
> jack_port_get_latency_range called with an incorrect port 0
> [jack @ 0x918e260] JACK client registered and activated (rate=48000Hz,
> buffer_size=256 frames)
>
> Guessed Channel Layout for  Input Stream #1.0 : stereo
> Input #1, jack, from 'screencast':
>   Duration: N/A, start: 1380144319.409428, bitrate: 3072 kb/s
>
>     Stream #1:0: Audio: pcm_f32le, 48000 Hz, stereo, flt, 3072 kb/s
> [swscaler @ 0x9171fc0] 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 @ 0x95e97c0] using cpu capabilities: MMX2 SSE2Fast SSSE3
> FastShuffle SSE4.2
> [libx264 @ 0x95e97c0] profile High 4:4:4 Predictive, level 4.0, 4:4:4 8-bit
> [libx264 @ 0x95e97c0] 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=6 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 'test.mkv':
>   Metadata:
>     encoder         : Lavf55.18.102
>     Stream #0:0: Video: h264 (libx264) (H264 / 0x34363248), yuv444p,
> 1920x1080, 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 @ 0x9171fc0] Warning: data is not aligned! This can lead to a
> speedloss
> frame=   76 fps= 30 q=-1.0 Lsize=    1218kB time=00:00:02.53
> bitrate=3939.6kbits/s
> video:745kB audio:469kB subtitle:0 global headers:0kB muxing overhead
> 0.358030%
> [libx264 @ 0x95e97c0] frame I:1     Avg QP: 0.00  size:  7840
> [libx264 @ 0x95e97c0] frame P:75    Avg QP: 0.00  size: 10057
> [libx264 @ 0x95e97c0] mb I  I16..4: 100.0%  0.0%  0.0%
> [libx264 @ 0x95e97c0] mb P  I16..4: 98.5%  0.0%  0.0%  P16..4:  0.0%
> 0.0%  0.0%  0.0%  0.0%    skip: 1.5%
> [libx264 @ 0x95e97c0] coded y,u,v intra: 0.0% 0.0% 0.0% inter: 0.0% 0.0%
> 0.0%
> [libx264 @ 0x95e97c0] i16 v,h,dc,p: 100%  0%  0%  0%
> [libx264 @ 0x95e97c0] kb/s:2406.68
> x at space:~/Documents/ffmpeg$
>
>
> On 08/12/2013 03:18 AM, J. Liles wrote:
>
>
>
>
> On Sun, Aug 11, 2013 at 6:18 AM, Diego Simak <diego.simak at gmail.com>wrote:
>
>> 2013/8/8 J. Liles <malnourite at gmail.com>
>>  >
>> >
>> > 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 at lists.linuxaudio.org
>> > 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 at ruidosa:~$ 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 at ruidosa:~$
>> diego at ruidosa:~$
>> diego at ruidosa:~$
>>
>
>
>  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-dev mailing listLinux-audio-dev at lists.linuxaudio.orghttp://lists.linuxaudio.org/listinfo/linux-audio-dev
>
>


 What is the output of jack_lsp -l?

>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.linuxaudio.org/pipermail/linux-audio-dev/attachments/20130926/3e78076f/attachment-0001.html>


More information about the Linux-audio-dev mailing list