سؤال هل يمكنني تغيير حجم لوحة الفيديو وتراكبها وترتيبها في خطوة واحدة باستخدام FFMPEG؟


لدي فيديو إدخال مسجّل على 640x360 (وهو من كاميرا ويب إذا كان هناك أي فرق).

أريد أن يكون الناتج 1280x720 (ضعف عرض النص الأصلي) وأريد أن يتم نقل الفيديو الأصلي إلى اليمين ويتم توسيطه رأسيًا.

لدي صورتان أو أكثر (png) وهي 640 × 720 ويجب عرضها في أوقات معينة في الفيديو على الجانب الأيسر.

إليك ما أحتاجه لإعادة ضبط حجم الفيديو الأصلي وتشغيله:

ffmpeg -i "E:\Videos\testvid.wmv" -q:a 0 -q:v 0 -vf "pad=1280:720:(1280-iw):(720-ih)/2" -s 1280:720 "E:\Videos\new.wmv"

إليك ما أحتاجه لإدراج صورة في الفيديو:

ffmpeg -i "E:\Videos\new.wmv" -i "E:\Pictures\red_640x720.png" -filter_complex "[0:v][1:v] overlay=0:0:enable='between(t,1,10)'" "E:\Videos\new2.wmv"

الجملتان أعلاه تعمل بشكل جيد. ومع ذلك ، أود أن أفعلها جميعًا مرة واحدة بحيث يتم تشغيل FFMPEG مرة واحدة فقط (إذا كان ذلك ممكنًا). هل يمكن لأي شخص أن يقرضني مع بناء الجملة؟

شكر.


4
2017-12-19 16:20


الأصل




الأجوبة:


قم بتوصيل الفلاتر بفواصل. تسلسل خطي لفلاتر واحد أو أكثر يجعل مرشح الفلتر. ربط filterchains مع فواصل منقوطة لإنشاء filtergraph. نرى تصفية الترشيح و وصف Filtergraph لمزيد من المعلومات التفصيلية.

مثال:

-filter_complex \
"[0:v]filter_0,filter_1,filter_2[chain1]; \
 [1:v]filter_3,filter_4,filter_5[chain2]; \
 [chain1][chain2]filter_6"

لذا قد يبدو الأمر كالتالي:

ffmpeg -i video.wmv -i image0.png -i image1.png -filter_complex \
"[0:v]pad=iw*2:ih*2:ow-iw:(oh-ih)/2[padded]; \
 [padded][1:v]overlay=0:0:enable='between(t,1,10)'[bg]; \
 [bg][2:v]overlay=0:0:enable='between(t,10,20)'[out]" \
-map "[out]" -map 0:a output.wmv

مما يسبب:

an overlay overlaid over an overlay


8
2017-12-20 03:28