ffmpeg Aufteilen von RGB- und Alpha-Kanälen mithilfe eines Filters
Ich versuche, ffmpeg zu verwenden, um eine Eingabedatei in zwei separate Dateien aufzuteilen:
Ein MP4 mit nur R-, G- und B-KanälenEin MP4 mit dem "extrahierten" A-Kanal (ein sogenannter Key-Clip, vglhttp://ffmpeg-users.933282.n4.nabble.com/quot-Extracting-quot-Alpha-Channel-td3700227.html)Ich habe es geschafft, beides zu tun, aber jetzt möchte ich sie zu einem einzigen Befehl kombinieren. Folgendes mache ich:
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
Hier ist INSERT_FILTER_HERE:
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]
Kurz gesagt, ich teile die Datei in zwei Streams auf, für den ersten "entferne" ich den Alphakanal, für den zweiten extrahiere ich eine Graustufendarstellung des Alphakanals. Wenn ich das über graph2dot schreibe, funktioniert es einwandfrei, mit einer Nullsenke als Ausgabe.
Wenn ich es jedoch in ffmpeg mit -filter_complex ausführe, erhalte ich:
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
Irgendwelche Ideen, wie ich ffmpeg erkennen lasse, dass es [rgb_out] in rgb.mp4 und [out] in alpha.mp3 schreiben muss?
Danke im Voraus!