New FFMPEG; "[swscaler @ 0xa314080] Warning: data is not aligned! This can lead to a speedloss"
related to ; Create a screencast with ffmpeg: how to keep video+audio in sync?
ffmpeg version 2.2.git Copyright (c) 2000-2014 the FFmpeg developers
built on Mar 13 2014 16:08:45 with gcc 4.8 (Ubuntu/Linaro 4.8.1-10ubuntu9)
produces an error
"[swscaler @ 0xa314080] Warning: data is not aligned! This can lead to a speedloss"
The end result is a serious a/v sync issue, with the video as if it's in Fast-forward.
Has anyone encountered this problem? Any ideas for solutions?
The goal is screencasting;
ffmpeg -f alsa -ac 2 -i hw:2,0 -f x11grab -r 30 -s 1920x1072 -i :0.0 -acodec libmp3lame -ab 320k -sameq /media/username/library-portable/video-studio/transfer-bin/BTSvlog02.avi
ffmpeg version 2.2.git Copyright (c) 2000-2014 the FFmpeg developers
built on Mar 13 2014 16:08:45 with gcc 4.8 (Ubuntu/Linaro 4.8.1-10ubuntu9)
configuration: --prefix=/home/username/ffmpeg_build --extra-cflags=-I/home/username/ffmpeg_build/include --extra-ldflags=-L/home/username/ffmpeg_build/lib --bindir=/home/username/bin --extra-libs=-ldl --enable-gpl --enable-libass --enable-libfdk-aac --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-nonfree --enable-x11grab
libavutil 52. 66.101 / 52. 66.101
libavcodec 55. 52.102 / 55. 52.102
libavformat 55. 34.101 / 55. 34.101
libavdevice 55. 11.100 / 55. 11.100
libavfilter 4. 3.100 / 4. 3.100
libswscale 2. 5.101 / 2. 5.101
libswresample 0. 18.100 / 0. 18.100
libpostproc 52. 3.100 / 52. 3.100
Option 'sameq' was removed. If you are looking for an option to preserve the quality (which is not what -sameq was for), use -qscale 0 or an equivalent quality factor option.
Failed to set value '1' for option 'sameq': Invalid argument
Error parsing global options: Invalid argument
used to work.
I tried (and just tried again); (added/updated Monday, March 17th, 2014)
ffmpeg -f alsa -ac 2 -i hw:2,0 -f x11grab -r 30 -s 1920x1080 -i :0.0 -acodec libmp3lame -ab 320k /media/username/library-portable/video-studio/transfer-bin/BTSvlog03.avi
ffmpeg version 2.2.git Copyright (c) 2000-2014 the FFmpeg developers
built on Mar 13 2014 16:08:45 with gcc 4.8 (Ubuntu/Linaro 4.8.1-10ubuntu9)
configuration: --prefix=/home/username/ffmpeg_build --extra-cflags=-I/home/username/ffmpeg_build/include --extra-ldflags=-L/home/username/ffmpeg_build/lib --bindir=/home/username/bin --extra-libs=-ldl --enable-gpl --enable-libass --enable-libfdk-aac --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-nonfree --enable-x11grab
libavutil 52. 66.101 / 52. 66.101
libavcodec 55. 52.102 / 55. 52.102
libavformat 55. 34.101 / 55. 34.101
libavdevice 55. 11.100 / 55. 11.100
libavfilter 4. 3.100 / 4. 3.100
libswscale 2. 5.101 / 2. 5.101
libswresample 0. 18.100 / 0. 18.100
libpostproc 52. 3.100 / 52. 3.100
Guessed Channel Layout for Input Stream #0.0 : stereo
Input #0, alsa, from 'hw:2,0':
Duration: N/A, start: 1395098882.312775, bitrate: 1536 kb/s
Stream #0:0: Audio: pcm_s16le, 48000 Hz, stereo, s16, 1536 kb/s
[x11grab @ 0x9ea2c20] device: :0.0 -> display: :0.0 x: 0 y: 0 width: 1920 height: 1080
[x11grab @ 0x9ea2c20] shared memory extension found
Input #1, x11grab, from ':0.0':
Duration: N/A, start: 1395098882.360550, bitrate: 1990656 kb/s
Stream #1:0: Video: rawvideo (BGR[0] / 0x524742), bgr0, 1920x1080, 1990656 kb/s, 30 tbr, 1000k tbn, 30 tbc
Output #0, avi, to '/media/username/library-portable/video-studio/transfer-bin/BTSvlog03.avi':
Metadata:
ISFT : Lavf55.34.101
Stream #0:0: Video: mpeg4 (FMP4 / 0x34504D46), yuv420p, 1920x1080, q=2-31, 200 kb/s, 30 tbn, 30 tbc
Stream #0:1: Audio: mp3 (libmp3lame) (U[0][0][0] / 0x0055), 48000 Hz, stereo, s16p, 320 kb/s
Stream mapping:
Stream #1:0 -> #0:0 (rawvideo -> mpeg4)
Stream #0:0 -> #0:1 (pcm_s16le -> libmp3lame)
Press [q] to stop, [?] for help
[swscaler @ 0x9e81080] Warning: data is not aligned! This can lead to a speedloss
[alsa @ 0x9e98d00] ALSA buffer xrun.743kB time=00:00:00.13 bitrate=45644.2kbits/s
[alsa @ 0x9e98d00] ALSA buffer xrun.1067kB time=00:00:01.70 bitrate=5131.9kbits/s
[alsa @ 0x9e98d00] ALSA buffer xrun.2175kB time=00:00:05.95 bitrate=2994.1kbits/s
[alsa @ 0x9e98d00] ALSA buffer xrun.5550kB time=00:00:17.68 bitrate=2570.6kbits/s
frame= 580 fps=9.9 q=31.0 Lsize= 6540kB time=00:00:50.28 bitrate=1065.5kbits/s
video:6433kB audio:34kB subtitle:0 data:0 global headers:0kB muxing overhead 1.125390%
Received signal 2: terminating.
Same results;
*Note, the FFMPEG issue mostly likely is a Ubuntu issue. I'm on Kubuntu 13.10 . There has been a split in the FFMPEG community and the Ubuntu group ended up on the side that left the FFMPEG project.
Solution 1:
1080 / 16 = 67.5, which is not a whole number, presumably leading to writing 68 items to a buffer with 67 slots, potentially crashing the encoder. Something else might round up to 68, gradually deviating the reported number of processed bits.
According to this thread, the offending code is:
420 if ( (uintptr_t)dst[0]%16 || (uintptr_t)dst[1]%16 || (uintptr_t)dst[2]%16
421 || (uintptr_t)src[0]%16 || (uintptr_t)src[1]%16 || (uintptr_t)src[2]%16
422 || dstStride[0]%16 || dstStride[1]%16 || dstStride[2]%16 || dstStride[3]%16
423 || srcStride[0]%16 || srcStride[1]%16 || srcStride[2]%16 || srcStride[3]%16
424 ) {
425 static int warnedAlready=0;
426 int cpu_flags = av_get_cpu_flags();
427 if (HAVE_MMXEXT && (cpu_flags & AV_CPU_FLAG_SSE2) && !warnedAlready){
428 av_log(c, AV_LOG_WARNING, "Warning: data is not aligned! This can lead to a speedloss\n");
429 warnedAlready=1;
430 }
431 }
1080 % 16 = 8, and the code expects 0, so the size should be a multiple of 16.
As noted in the comment, that's just a performance warning. I'd still try:
- A different resolution to rule that out.
- Different codecs and/or containers. Opus > AAC > Vorbis > MP3. And Matroska > AVI.
- Different distro. In my experience Ubuntu breaks something every update, so try rolling stable openSuSE Tumbleweed, rolling unstable Manjaro, polished and stable Mint, Bodhi, or Linuxfx.