LINUX.ORG.RU

[ffmpeg][libx264][mp4] Рассинхронизация звука и видео

 ,


0

2

При записи видео такой командой получаю рассинхранизацию звука и видео в 2-3 сек:

ffmpeg -f alsa -i hw:1,0 -f video4linux2 -s 640x480 -qscale 1 -r 25 -i /dev/video0 -strict experimental -vcodec libx264 -vpre veryfast -threads 0 -b 1500k -mbd rd -flags +mv4+aic -trellis 2 -cmp 2 -subcmp 2 -g 300 -pass 1 -bf 2 -acodec aac -ab 192k ~/out.mp4

Кроме того, не смотря на достаточно высокий битрейт, не движения достаточно сильно размываются.

Что может посоветовать уважаемый All?

Лог записи:

Fmpeg version 0.6-4:0.6-2ubuntu2~lucid1~ppa2, Copyright (c) 2000-2010 the FFmpeg developers
  built on Sep 13 2010 08:21:28 with gcc 4.4.3
  configuration: --extra-version='4:0.6-2ubuntu2~lucid1~ppa2' --prefix=/usr --enable-avfilter --enable-avfilter-lavf --enable-vdpau --enable-bzlib --enable-libgsm --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-vaapi --enable-pthreads --enable-zlib --enable-libvpx --disable-stripping --enable-runtime-cpudetect --enable-gpl --enable-postproc --enable-x11grab --enable-libdc1394 --enable-shared --disable-static
  WARNING: library configuration mismatch
  libavutil   configuration: --extra-version='4:0.6-2ubuntu1~lucid1~ppa1' --prefix=/usr --enable-avfilter --enable-avfilter-lavf --enable-vdpau --enable-bzlib --enable-libdirac --enable-libgsm --enable-libopenjpeg --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-vaapi --enable-pthreads --enable-zlib --enable-libvpx --disable-stripping --enable-runtime-cpudetect --enable-libmp3lame --enable-gpl --enable-postproc --enable-x11grab --enable-libfaad --enable-libxvid --enable-libx264 --enable-librtmp --enable-libdc1394 --shlibdir=/usr/lib/i686/cmov --cpu=i686 --enable-shared --disable-static --disable-ffmpeg --disable-ffplay
  libavcodec  configuration: --extra-version='4:0.6-2ubuntu1~lucid1~ppa1' --prefix=/usr --enable-avfilter --enable-avfilter-lavf --enable-vdpau --enable-bzlib --enable-libdirac --enable-libgsm --enable-libopenjpeg --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-vaapi --enable-pthreads --enable-zlib --enable-libvpx --disable-stripping --enable-runtime-cpudetect --enable-libmp3lame --enable-gpl --enable-postproc --enable-x11grab --enable-libfaad --enable-libxvid --enable-libx264 --enable-librtmp --enable-libdc1394 --shlibdir=/usr/lib/i686/cmov --cpu=i686 --enable-shared --disable-static --disable-ffmpeg --disable-ffplay
  libavformat configuration: --extra-version='4:0.6-2ubuntu2~lucid1~ppa2' --prefix=/usr --enable-avfilter --enable-avfilter-lavf --enable-vdpau --enable-bzlib --enable-libgsm --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-vaapi --enable-pthreads --enable-zlib --enable-libvpx --disable-stripping --enable-runtime-cpudetect --enable-gpl --enable-postproc --enable-x11grab --enable-libdc1394 --shlibdir=/usr/lib/i686/cmov --cpu=i686 --enable-shared --disable-static --disable-ffmpeg --disable-ffplay
  libavdevice configuration: --extra-version='4:0.6-2ubuntu2~lucid1~ppa2' --prefix=/usr --enable-avfilter --enable-avfilter-lavf --enable-vdpau --enable-bzlib --enable-libgsm --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-vaapi --enable-pthreads --enable-zlib --enable-libvpx --disable-stripping --enable-runtime-cpudetect --enable-gpl --enable-postproc --enable-x11grab --enable-libdc1394 --shlibdir=/usr/lib/i686/cmov --cpu=i686 --enable-shared --disable-static --disable-ffmpeg --disable-ffplay
  libavfilter configuration: --extra-version='4:0.6-2ubuntu2~lucid1~ppa2' --prefix=/usr --enable-avfilter --enable-avfilter-lavf --enable-vdpau --enable-bzlib --enable-libgsm --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-vaapi --enable-pthreads --enable-zlib --enable-libvpx --disable-stripping --enable-runtime-cpudetect --enable-gpl --enable-postproc --enable-x11grab --enable-libdc1394 --shlibdir=/usr/lib/i686/cmov --cpu=i686 --enable-shared --disable-static --disable-ffmpeg --disable-ffplay
  libswscale  configuration: --extra-version='4:0.6-2ubuntu2~lucid1~ppa2' --prefix=/usr --enable-avfilter --enable-avfilter-lavf --enable-vdpau --enable-bzlib --enable-libgsm --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-vaapi --enable-pthreads --enable-zlib --enable-libvpx --disable-stripping --enable-runtime-cpudetect --enable-gpl --enable-postproc --enable-x11grab --enable-libdc1394 --shlibdir=/usr/lib/i686/cmov --cpu=i686 --enable-shared --disable-static --disable-ffmpeg --disable-ffplay
  libpostproc configuration: --extra-version='4:0.6-2ubuntu2~lucid1~ppa2' --prefix=/usr --enable-avfilter --enable-avfilter-lavf --enable-vdpau --enable-bzlib --enable-libgsm --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-vaapi --enable-pthreads --enable-zlib --enable-libvpx --disable-stripping --enable-runtime-cpudetect --enable-gpl --enable-postproc --enable-x11grab --enable-libdc1394 --shlibdir=/usr/lib/i686/cmov --cpu=i686 --enable-shared --disable-static --disable-ffmpeg --disable-ffplay
  libavutil     50.15. 1 / 50.15. 1
  libavcodec    52.72. 2 / 52.72. 2
  libavformat   52.64. 2 / 52.64. 2
  libavdevice   52. 2. 0 / 52. 2. 0
  libavfilter    1.19. 0 /  1.19. 0
  libswscale     0.11. 0 /  0.11. 0
  libpostproc   51. 2. 0 / 51. 2. 0
[alsa @ 0x89a8bc0]Estimating duration from bitrate, this may be inaccurate
Input #0, alsa, from 'hw:1,0':
  Duration: N/A, start: 594384.999038, bitrate: N/A
    Stream #0.0: Audio: pcm_s16le, 48000 Hz, 1 channels, s16, 768 kb/s
[video4linux2 @ 0x89b3990]Estimating duration from bitrate, this may be inaccurate
Input #1, video4linux2, from '/dev/video0':
  Duration: N/A, start: 594387.028553, bitrate: 122880 kb/s
    Stream #1.0: Video: rawvideo, yuyv422, 640x480, 122880 kb/s, 25 tbr, 1000k tbn, 25 tbc
[libx264 @ 0x89b6030]using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle SSE4.1 Cache64
[libx264 @ 0x89b6030]profile High, level 3.0
[libx264 @ 0x89b6030]x264 - core 85 Ubuntu_2:0.85.1448+git1a6d32-4 - H.264/MPEG-4 AVC codec - Copyleft 2003-2009 - http://www.videolan.org/x264.html - options: cabac=1 ref=1 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=2 psy=1 psy_rd=0.00:0.00 mixed_ref=0 me_range=16 chroma_me=0 trellis=2 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=0 threads=3 sliced_threads=0 nr=0 decimate=1 mbaff=0 constrained_intra=0 bframes=2 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 wpredb=1 wpredp=0 keyint=300 keyint_min=25 scenecut=40 intra_refresh=0 rc=abr mbtree=0 bitrate=1500 ratetol=2.7 qcomp=0.60 qpmin=10 qpmax=51 qpstep=4 ip_ratio=1.41 pb_ratio=1.25 aq=1:1.00
Output #0, mp4, to 'temp.mp4':
  Metadata:
    encoder         : Lavf52.64.2
    Stream #0.0: Video: libx264 (hq), yuv420p, 640x480, q=10-51, pass 1, 1500 kb/s, 25 tbn, 25 tbc
    Stream #0.1: Audio: aac, 48000 Hz, 1 channels, s16, 192 kb/s
Stream mapping:
  Stream #1.0 -> #0.0
  Stream #0.0 -> #0.1
Press [q] to stop encoding
frame=    4 fps=  0 q=479.0 size=       0kB time=1.00 bitrate=   0.4kbits/s    
frame=    8 fps=  8 q=22.0 size=       0kB time=1.79 bitrate=   0.2kbits/s    
frame=   12 fps=  8 q=29.0 size=      67kB time=0.04 bitrate=13723.2kbits/s    
frame=   16 fps=  8 q=29.0 size=     101kB time=0.56 bitrate=1470.3kbits/s 
...  
frame=  342 fps=  7 q=27.0 size=    3690kB time=51.12 bitrate= 591.3kbits/s    
frame=  346 fps=  7 q=27.0 size=    3731kB time=51.64 bitrate= 591.8kbits/s    
frame=  349 fps=  7 q=27.0 size=    3762kB time=52.04 bitrate= 592.2kbits/s    
frame=  351 fps=  7 q=-2.0 Lsize=    3959kB time=53.52 bitrate= 606.0kbits/s    
video:2615kB audio:1316kB global headers:0kB muxing overhead 0.711108%
[libx264 @ 0x89b6030]frame I:2     Avg QP:20.35  size: 19616
[libx264 @ 0x89b6030]frame P:349   Avg QP:24.01  size:  7558
[libx264 @ 0x89b6030]consecutive B-frames: 100.0%  0.0%  0.0%
[libx264 @ 0x89b6030]mb I  I16..4: 33.0% 55.0% 12.0%
[libx264 @ 0x89b6030]mb P  I16..4: 37.6% 23.4%  0.2%  P16..4: 34.1%  3.3%  0.9%  0.0%  0.0%    skip: 0.5%
[libx264 @ 0x89b6030]final ratefactor: 25.61
[libx264 @ 0x89b6030]8x8 transform intra:38.4% inter:41.0%
[libx264 @ 0x89b6030]coded y,uvDC,uvAC intra: 22.1% 99.5% 93.1% inter: 23.2% 95.1% 39.2%
[libx264 @ 0x89b6030]i16 v,h,dc,p: 52% 10% 19% 19%
[libx264 @ 0x89b6030]i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 17%  8% 48%  8%  4%  5%  3%  6%  3%
[libx264 @ 0x89b6030]i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 33% 11% 23%  6%  5%  7%  5%  7%  4%
[libx264 @ 0x89b6030]kb/s:1525.26
Received signal 15: terminating.

★★★★★

Ответ на: комментарий от bsdfun

Обновился. Теперь такое ощущение что нет видео в выходном файле вообще. По крайней мере ничто его не отображает... Хотя объем приличный :(

Suntechnic ★★★★★
() автор топика
Ответ на: комментарий от unikum

Я не знаю что такое mediainfo, но mp4info:

$ mp4info ./Рабочий\ стол/out.mp4
mp4info version 1.6
./Рабочий стол/out.mp4:
Track	Type	Info
1	video	H264 High 4:2:2@3, 18.100 secs, 985 kbps, 640x480 @ 30.000000 fps
2	audio	MPEG-4 AAC LC, 15.978 secs, 174 kbps, 48000 Hz
 Tool: Lavf53.24.2

Suntechnic ★★★★★
() автор топика
Ответ на: комментарий от Suntechnic

Что-то не нравится мне 7 fps при кодировании видео не из файла, а из устройства захвата, для которого ещё и -r 25 указано.
Попробуй более другой (простой, который на этом железе сможет кодировать 30+ fps) кодек для записи в файл, затем пережми этот файл в х264, если нужен небольшой размер. Будет-ли рассинхронизация в этом случае?

NightSpamer
()
Ответ на: комментарий от NightSpamer

В реальности я не смогу пережимать - нужно писать сразу. Но в любом случае я уже обновился и терь надо решить с «отсутсвием» видео.

7fps объясняется видимо тем, что камера смотрит в неподвижный угол какого-то неосвещенного помещения.

Suntechnic ★★★★★
() автор топика
Ответ на: комментарий от unikum

Вот что оно говорит:

General
Complete name                            : /home/alex/Рабочий стол/out.mp4
Format                                   : MPEG-4
Format profile                           : Base Media
Codec ID                                 : isom
File size                                : 3.48 MiB
Duration                                 : 23s 434ms
Overall bit rate mode                    : Variable
Overall bit rate                         : 1 245 Kbps
Writing application                      : Lavf53.24.2

Video
ID                                       : 1
Format                                   : AVC
Format/Info                              : Advanced Video Codec
Format profile                           : High 4:2:2@L3.0
Format settings, CABAC                   : Yes
Format settings, ReFrames                : 4 frames
Codec ID                                 : avc1
Codec ID/Info                            : Advanced Video Coding
Duration                                 : 23s 434ms
Bit rate                                 : 1 081 Kbps
Nominal bit rate                         : 1 500 Kbps
Width                                    : 640 pixels
Height                                   : 480 pixels
Display aspect ratio                     : 4:3
Frame rate mode                          : Constant
Frame rate                               : 30.000 fps
Color space                              : YUV
Chroma subsampling                       : 4:2:2
Bit depth                                : 8 bits
Scan type                                : Progressive
Bits/(Pixel*Frame)                       : 0.117
Stream size                              : 3.02 MiB (87%)
Writing library                          : x264 core 118 r2092 6eac7c3
Encoding settings                        : cabac=1 / ref=1 / deblock=1:0:0 / analyse=0x1:0 / me=dia / subme=2 / psy=0 / mixed_ref=0 / me_range=16 / chroma_me=0 / trellis=0 / 8x8dct=0 / cqm=0 / deadzone=21,11 / fast_pskip=1 / chroma_qp_offset=0 / threads=3 / sliced_threads=0 / nr=0 / decimate=1 / interlaced=0 / bluray_compat=0 / constrained_intra=0 / bframes=2 / b_pyramid=2 / b_adapt=1 / b_bias=0 / direct=1 / weightb=1 / open_gop=0 / weightp=0 / keyint=300 / keyint_min=25 / scenecut=40 / intra_refresh=0 / rc=abr / mbtree=0 / bitrate=1500 / ratetol=1.0 / qcomp=0.60 / qpmin=10 / qpmax=51 / qpstep=4 / ip_ratio=1.40 / pb_ratio=1.30 / aq=1:1.00

Audio
ID                                       : 2
Format                                   : AAC
Format/Info                              : Advanced Audio Codec
Format profile                           : LC
Codec ID                                 : 40
Duration                                 : 20s 864ms
Bit rate mode                            : Variable
Bit rate                                 : 175 Kbps
Maximum bit rate                         : 192 Kbps
Channel(s)                               : 1 channel
Channel positions                        : Front: C
Sampling rate                            : 48.0 KHz
Compression mode                         : Lossy
Stream size                              : 445 KiB (12%)

Suntechnic ★★★★★
() автор топика
Ответ на: комментарий от Suntechnic

А вот дельта свойств нормального и «серого» видео (очевидные вещи вроде продолжительности размера и имени файла выкинул, как и инфо по аудио):

--- файл с серым экраном
+++ старый файл (там где была проблема с рассинхронизацией)
@@ -1,39 +1,41 @@
 General
 Format                                   : MPEG-4
 Format profile                           : Base Media
 Codec ID                                 : isom
 Overall bit rate mode                    : Variable
-Overall bit rate                         : 1 245 Kbps
-Writing application                      : Lavf53.24.2
+Overall bit rate                         : 581 Kbps
+Writing application                      : Lavf52.64.2
 
 Video
 ID                                       : 1
 Format                                   : AVC
 Format/Info                              : Advanced Video Codec
-Format profile                           : High 4:2:2@L3.0
+Format profile                           : High@L3.0
 Format settings, CABAC                   : Yes
 Format settings, ReFrames                : 4 frames
 Codec ID                                 : avc1
 Codec ID/Info                            : Advanced Video Coding
-Bit rate                                 : 1 081 Kbps
+Bit rate                                 : 400 Kbps
 Nominal bit rate                         : 1 500 Kbps
 Width                                    : 640 pixels
 Height                                   : 480 pixels
 Display aspect ratio                     : 4:3
-Frame rate mode                          : Constant
-Frame rate                               : 30.000 fps
+Frame rate mode                          : Variable
+Frame rate                               : 6.549 fps
+Minimum frame rate                       : 3.571 fps
+Maximum frame rate                       : 25.000 fps
 Color space                              : YUV
-Chroma subsampling                       : 4:2:2
+Chroma subsampling                       : 4:2:0
 Bit depth                                : 8 bits
 Scan type                                : Progressive
-Bits/(Pixel*Frame)                       : 0.117
-Stream size                              : 3.02 MiB (87%)
-Writing library                          : x264 core 118 r2092 6eac7c3
-Encoding settings                        : cabac=1 / ref=1 / deblock=1:0:0 / analyse=0x1:0 / me=dia / subme=2 / psy=0 / mixed_ref=0 / me_range=16 / chroma_me=0 / trellis=0 / 8x8dct=0 / cqm=0 / deadzone=21,11 / fast_pskip=1 / chroma_qp_offset=0 / threads=3 / sliced_threads=0 / nr=0 / decimate=1 / interlaced=0 / bluray_compat=0 / constrained_intra=0 / bframes=2 / b_pyramid=2 / b_adapt=1 / b_bias=0 / direct=1 / weightb=1 / open_gop=0 / weightp=0 / keyint=300 / keyint_min=25 / scenecut=40 / intra_refresh=0 / rc=abr / mbtree=0 / bitrate=1500 / ratetol=1.0 / qcomp=0.60 / qpmin=10 / qpmax=51 / qpstep=4 / ip_ratio=1.40 / pb_ratio=1.30 / aq=1:1.00
+Bits/(Pixel*Frame)                       : 0.199
+Stream size                              : 2.55 MiB (66%)
+Writing library                          : x264 core 85 Ubuntu_2:0.85.1448+git1a6d32-4
+Encoding settings                        : cabac=1 / ref=1 / deblock=1:0:0 / analyse=0x3:0x113 / me=hex / subme=2 / psy=1 / psy_rd=0.00:0.00 / mixed_ref=0 / me_range=16 / chroma_me=0 / trellis=2 / 8x8dct=1 / cqm=0 / deadzone=21,11 / fast_pskip=1 / chroma_qp_offset=0 / threads=3 / sliced_threads=0 / nr=0 / decimate=1 / mbaff=0 / constrained_intra=0 / bframes=2 / b_pyramid=2 / b_adapt=1 / b_bias=0 / direct=1 / wpredb=1 / wpredp=0 / keyint=300 / keyint_min=25 / scenecut=40 / intra_refresh=0 / rc=abr / mbtree=0 / bitrate=1500 / ratetol=2.7 / qcomp=0.60 / qpmin=10 / qpmax=51 / qpstep=4 / ip_ratio=1.41 / pb_ratio=1.25 / aq=1:1.00

Suntechnic ★★★★★
() автор топика
Ответ на: комментарий от Suntechnic

Ну и наконец вот что насыпает в консоль mplayer:

...
[h264 @ 0x7f5a620a0020]top block unavailable for requested intra4x4 mode -1 at 1 0
[h264 @ 0x7f5a620a0020]error while decoding MB 1 0, bytestream (21674)
[h264 @ 0x7f5a620a0020]concealing 1200 DC, 1200 AC, 1200 MV errors
[h264 @ 0x7f5a620a0020]top block unavailable for requested intra4x4 mode -1 at 2 0
[h264 @ 0x7f5a620a0020]error while decoding MB 2 0, bytestream (22383)
[h264 @ 0x7f5a620a0020]concealing 1200 DC, 1200 AC, 1200 MV errors
...
...
...

Suntechnic ★★★★★
() автор топика

Попробуй veryslow. Там как раз параметры, отвечающие, за обнаружение движения меняются и сам алгоритм, кстати, тоже.

unikum ★★★★★
()
Ответ на: комментарий от unikum

Вот мой скрипт:

	ffmpeg -i "${input}/${file}" -an -vf hqdn3d=2:1:2 -pass 1 -vcodec libx264 -threads 12 -vprofile high -preset veryslow -x264opts level=30:ref=6:deblock=-2,-2:dct-decimate=0:fast_pskip=0:direct=auto:qpmax=51:keyint=${keyint}:bitrate=${vbr}:threads=12 -f rawvideo -y /dev/null

mediainfo "${input}/${file}" | egrep Audio

	if [[ $? -eq 0 ]]; then
	    ffmpeg -i "${input}/${file}" -vf hqdn3d=2:1:2 -pass 2 -vcodec libx264 -pass 2 -threads 12 -vprofile high -preset veryslow -x264opts level=30:ref=6:deblock=-2,-2:dct-decimate=0:fast_pskip=0:direct=auto:qpmax=51:keyint=${keyint}:bitrate=${vbr}:threads=12 -acodec aac -ab ${abr} -strict experimental -ac 2 -ar ${srate} -y "${output}/${filename}.mp4"
	else
	    ffmpeg -i "${input}/${file}" -vf hqdn3d=2:1:2 -pass 2 -vcodec libx264 -pass 2 -threads 12 -vprofile high -preset veryslow -x264opts level=30:ref=6:deblock=-2,-2:dct-decimate=0:fast_pskip=0:direct=auto:qpmax=51:keyint=${keyint}:bitrate=${vbr}:threads=12  -y "${output}/${filename}.mp4"
	fi
	MP4Box -inter 500  "${output}/${filename}.mp4" -tmp "${output}"

unikum ★★★★★
()
Ответ на: комментарий от unikum

На:

ffmpeg -f alsa -ac 1 -i hw:1,0 -f video4linux2 -s 640x480 -qscale 1 -r 25 -i /dev/video0 -strict experimental -vcodec libx264 -an -vf hqdn3d=2:1:2 -pass 1  -threads 0 -vprofile high -preset veryslow -x264opts level=30:ref=6:deblock=-2,-2:dct-decimate=0:fast_pskip=0:direct=auto:qpmax=51:threads=0:keyint=250:bitrate=1000 -f rawvideo -acodec aac -ab 192k -strict experimental -ac 1 ~/out.mp4
ругается так:
x264 [error]: high profile doesn't support 4:2:2
[libx264 @ 0x880b340] Error setting profile high.
Output #0, rawvideo, to '/home/admin/out.mp4':
    Stream #0:0: Video: h264, yuv422p, 640x480, q=-1--1, pass 1, 90k tbn, 30 tbc
Stream mapping:
  Stream #1:0 -> #0:0 (rawvideo -> libx264)
Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height
Если убрать видеопрофиль, то пишет но низ видео серый в верху движение рассыпаное на блоки (картинка неподвижная). mplaeyr ругается примерно так.
...
No pts value from demuxer to use for frame!
pts after filters MISSING
[h264 @ 0x7f760c024020]error while decoding MB 36 3, bytestream (-8)
[h264 @ 0x7f760c024020]concealing 1093 DC, 1093 AC, 1093 MV errors
No pts value from demuxer to use for frame!
pts after filters MISSING
[h264 @ 0x7f760c024020]top block unavailable for requested intra mode at 25 0
[h264 @ 0x7f760c024020]error while decoding MB 25 0, bytestream (28903)
[h264 @ 0x7f760c024020]concealing 1200 DC, 1200 AC, 1200 MV errors
...
Где устанавливается 4:2:2, и почему не поддерживается профилем high? И где лежат пресеты? У меня есть только пресеты ffmpeg для x264 в /usr/share/ffmpeg. Они совпадают? Если я заменяю -preset на -vpre я получаю то же самое?

Suntechnic ★★★★★
() автор топика
Ответ на: комментарий от unikum

Да, я уже сам после заметил. (тупо копировал из первой команды - признаю) Убрал. Но это ничего не меняет. Да и не должно вроде бы. Не?

Suntechnic ★★★★★
() автор топика
Ответ на: комментарий от unikum

Никак не могу победить... Может у меня libx больной? Может такое быть?

Suntechnic ★★★★★
() автор топика

Кстати, а можно как-то указать ffmpeg версию libx которую надо использовать? У меня есть с 85 и со 118 ядром. С 85 проблем с записью видео не было, но новый ffmpeg использует версию со 118 ядром.

Suntechnic ★★★★★
() автор топика
Ответ на: комментарий от Suntechnic

Трабла с этой ошибкой решается просто явным указанием формата:

No pts value from demuxer to use for frame!
pts after filters MISSING
Вот так:
ffmpeg -strict experimental -f alsa -ac 1 -i hw:1,0 -f video4linux2 -s 640x480 -qscale 1 -r 25 -i /dev/video0 -vcodec libx264 -an -vf hqdn3d=2:1:2 -pass 1  -threads 0  -preset veryslow -x264opts level=30:ref=6:deblock=-2,-2:dct-decimate=0:fast_pskip=0:direct=auto:qpmax=51:threads=0:keyint=250:bitrate=1000:vbv-bufsize=2000 -f mp4 -acodec aac -ab 192k  -ac 1 -y ~/out.mp4
т.е. добавлением -f mp4

С остальным пока проблемы.

Suntechnic ★★★★★
() автор топика
Ответ на: комментарий от Suntechnic

Итак проблема была в Chroma subsampling. Установка 4:2:0 вместо 4:2:2 (-pix_fmt yuv420p) решила проблему. Однако теперь не пишется звук... :)

Suntechnic ★★★★★
() автор топика
Ответ на: комментарий от Suntechnic

pix_fmt yuv420p

так это же самоочевидная вещь при проблемах с картинкой:)

Однако теперь не пишется звук... :)

Попробуй сделать отдельно запись звука и виде. Потом можно разрулить с помощью mkfifo.

unikum ★★★★★
()
Ответ на: комментарий от unikum

Ну вообще странно - вот такой командой пишется:

ffmpeg -f alsa -ac 1 -i hw:1,0 -f video4linux2 -s 640x480 -qscale 1 -r 30 -i /dev/video0 -strict experimental -vcodec libx264  -vpre veryfast -threads 2 -b 1500k -mbd rd -flags +mv4+aic -trellis 2 -cmp 2 -subcmp 2 -g 300 -pass 1 -bf 2 -pix_fmt yuv420p -acodec aac -ab 192k ~/out.mp4
А такой, нет:
ffmpeg -f alsa -ac 1 -i hw:1,0 -f video4linux2 -s 640x480 -qscale 1 -r 25 -i /dev/video0 -strict experimental -vcodec libx264 -an -vf hqdn3d=2:1:2 -pass 1  -threads 0 -profile high -preset veryslow -x264opts level=30:ref=6:deblock=-2,-2:dct-decimate=0:fast_pskip=0:direct=auto:qpmax=51:threads=0:keyint=250:bitrate=1000:vbv-bufsize=100 -pix_fmt yuv420p -f mp4  -acodec aac -ab 192k ~/out.mp4
Ведь параметры записи звука одинаковые - в чем может быть проблема?

И еще - а почему не пашет analyzeduration? Я правильно понимаю, что при значении 0 поток вообще не должен анализироваться? Но я все равно получаю почти двухсекундную задержку и затем:

[video4linux2,v4l2 @ 0x8c92500] Estimating duration from bitrate, this may be inaccurate
Мне сильно мешает эта задержка при фотографировании:
ffmpeg -f video4linux2 -s 640x480 -qscale 1 -r 25 -analyzeduration 0 -i /dev/video0 -vcodec mjpeg -pix_fmt yuvj422p -vframes 1 out.jpg

Suntechnic ★★★★★
() автор топика
Ответ на: комментарий от unikum

Кстати, а есть ли способ остановить ffmpeg, как нибудь «помягче» чем сигтерм? Типа сэмулировать то, что происходит при нажатии на q? Или сигтерм и происходит?

Просто он у меня не дописывает пару секунд где-то...

Suntechnic ★★★★★
() автор топика
Ответ на: комментарий от Suntechnic

Второй команде ты испоьзуешь опцию -an, возможно ffmpeg не всегда может понять в каком контексте ты её используешь. Т.е. ты её используешь для истояника 2, а ffmpeg думает, то для источника 1. Как-то так.

unikum ★★★★★
()
Ответ на: комментарий от unikum

Ага - то-есть он решает, что аудио мне вообще не надо. Хм.

Я попробовал указать все через map:

ffmpeg -f alsa -ac 1 -i hw:1,0 -map 0:0 -f video4linux2 -s 640x480 -qscale 1 -r 30 -i /dev/video0 -strict experimental -vcodec libx264 -map 1:0 -vf hqdn3d=2:1:2 -pass 1  -threads 0 -profile high -preset veryslow -x264opts level=30:ref=6:deblock=-2,-2:dct-decimate=0:fast_pskip=0:direct=auto:qpmax=51:threads=0:keyint=250:bitrate=1000:vbv-bufsize=100 -pix_fmt yuv420p -f mp4  -acodec aac -ab 192k ~/out.mp4
Но он все равно не хочет писать аудио:
[alsa @ 0xa0642c0] Estimating duration from bitrate, this may be inaccurate
Input #0, alsa, from 'hw:1,0':
  Duration: N/A, start: 1330029845.580769, bitrate: N/A
    Stream #0:0: Audio: pcm_s16le, 48000 Hz, 1 channels, s16, 768 kb/s
[video4linux2,v4l2 @ 0xa064dc0] Estimating duration from bitrate, this may be inaccurate
Input #1, video4linux2,v4l2, from '/dev/video0':
  Duration: N/A, start: 116934.432465, bitrate: 147456 kb/s
    Stream #1:0: Video: rawvideo (YUY2 / 0x32595559), yuyv422, 640x480, 147456 kb/s, 30 tbr, 1000k tbn, 30 tbc
...
Stream mapping:
  Stream #1:0 -> #0:0 (rawvideo -> libx264)
:(

Suntechnic ★★★★★
() автор топика
Ответ на: комментарий от unikum

По поводу фото - если указать ему формат потока как rawvideo, то он вроде пропускает анализ. Но начинает ругаться:

Output file is empty, nothing was encoded (check -ss / -t / -frames parameters if used)
Я попробовал указать эти параметры для входного потока:
$ ffmpeg -f rawvideo -analyzeduration 0 -vframes 1 -ss 00:00:00 -t 00:00:01 -s 640x480 -qscale 1 -r 30 -pix_fmt yuyv422 -bt 1000k -i /dev/video0 -map 0:0  -vcodec mjpeg -pix_fmt yuvj422p -vframes 1 out.jpg
Но это не возымело действия. При этом не фотает естественно.

Suntechnic ★★★★★
() автор топика
Ответ на: комментарий от unikum

Я и так рассинхронизации боюсь. А если погнать это через пайп, то уж точно ее должен снова получить.

Я даже не знаю, как с текущими конфигами - нет ли ее. Я же говорил уже наверно - вижу угол какой-то комнаты и тишина...

Да, и спасибо что помогаешь.

Suntechnic ★★★★★
() автор топика
Ответ на: комментарий от Suntechnic

С пайпами рассинхрон будет 99% :)

Сам пытаюсь ffmpeg победить уже несколько дней. В итоге отправил им баг-репорт на libvpx, буду ждать. Так что мне понятны эти затыки на ровном месте при корректных командах.

В твоём случае, как мне кажется, проблема с повторяющимися опциями (например, -pix_fmt из последнего твоего поста) и ffmpeg не понимает контекст их использования.

В целом складывается мнение, что ffmpeg слишком монструозен и в нём куча багов, которые просто сложно обнаружить и которые выявляются на специфических задачах.

unikum ★★★★★
()
Ответ на: комментарий от unikum

И да, рекомендую перебраться к ним в рассылку, там всё таки ребята более грамотные и опытные сидят.

unikum ★★★★★
()
Ответ на: комментарий от unikum

Я как подумаю, о том участке, который у них парсит опции, меня в дрожь бросает - ничего вобщем-то удивительного.

А вот -pix_fmt в данном случае вроде корректно обрабатывается. По крайней мере если убрать второй, то появляется Incompatible pixel format 'yuyv422' for codec 'mjpeg', auto-selecting format 'yuvj422p'

Первый я добавил, пытаясь описать входной поток - думал может это его заставит пропустить анализ.

Suntechnic ★★★★★
() автор топика
Ответ на: комментарий от unikum

Толку. С моим английским в рассыслке не пообщаешься. Хотя... если привлечь жену... Я подумаю.

Suntechnic ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.