ffmpeg dzieli kanały RGB i Alpha za pomocą filtra
Próbuję użyć ffmpeg do podzielenia pliku wejściowego na dwa oddzielne pliki:
MP4 z kanałami R, G i BMP4 z „wyodrębnionym” kanałem A (tzw. Klip klawiszowy, patrzhttp://ffmpeg-users.933282.n4.nabble.com/quot-Extracting-quot-Alpha-Channel-td3700227.html)Udało mi się zrobić oba, ale teraz chcę połączyć je w jedno polecenie. Oto co robię:
ffmpeg -r $FPS -y -i input.flv -vcodec libx264 -vpre ipod640 -acodec libfaac -s 256x256 -r $FPS -filter_complex INSERT_FILTER_HERE rgb.mp4 alpha.mp4
gdzie INSERT_FILTER_HERE to:
format=rgba, split [rgb_in][alpha_in];
[rgb_in] fifo, lutrgb=a=minval [rgb_out];
[alpha_in] format=rgba, split [T1], fifo, lutrgb=r=maxval:g=maxval:b=maxval, [T2] overlay [out];
[T1] fifo, lutrgb=r=minval:g=minval:b=minval [T2]
Krótko mówiąc, podzieliłem plik na dwa strumienie, dla pierwszego strumienia „usuwam” kanał alfa, dla drugiego strumienia wyodrębniam reprezentację kanału alfa w skali szarości. Kiedy wstawiam to przez graph2dot, działa dobrze, z nullsink jako wyjście.
Jednak gdy uruchomię go w ffmpeg z -filter_complex, otrzymuję:
ffmpeg version N-41994-g782763e Copyright (c) 2000-2012 the FFmpeg developers
built on Jun 28 2012 17:45:15 with gcc 4.6.3
configuration: --enable-gpl --enable-nonfree --enable-pthreads --enable-filters --enable-libfaac --enable-libmp3lame --enable-libx264 --enable-libtheora --enable-libvpx --enable-postproc --enable-avfilter
libavutil 51. 63.100 / 51. 63.100
libavcodec 54. 29.101 / 54. 29.101
libavformat 54. 11.100 / 54. 11.100
libavdevice 54. 0.100 / 54. 0.100
libavfilter 3. 0.100 / 3. 0.100
libswscale 2. 1.100 / 2. 1.100
libswresample 0. 15.100 / 0. 15.100
libpostproc 52. 0.100 / 52. 0.100
Input #0, flv, from 'input.flv':
Metadata:
audiodelay : 0
canSeekToEnd : true
Duration: 00:01:10.56, start: 0.000000, bitrate: 1964 kb/s
Stream #0:0: Video: vp6a, yuva420p, 800x950, 1536 kb/s, 25 tbr, 1k tbn, 1k tbc
Stream #0:1: Audio: mp3, 44100 Hz, stereo, s16, 128 kb/s
[graph 0 input from stream 0:0 @ 0x2e4c6e0] w:800 h:950 pixfmt:yuva420p tb:1/30 fr:30/1 sar:0/1 sws_param:flags=2
Output pad "default" for the filter "Parsed_lutrgb_3" of type "lutrgb" not connected to any destination
Jakieś pomysły na to, jak sprawić, by ffmpeg rozpoznał, że musi napisać [rgb_out] do rgb.mp4 i [out] do alpha.mp3?
Z góry dziękuję!