मेरे पास MP4 प्रारूप में कुछ 4K 3840x2160 फुटेज हैं जिन्हें मुझे 1080p पर लाने की आवश्यकता है। मैंने दौड़ने की कोशिश की
ffmpeg -i orig.mp4 -vf scale=1920:1080 smaller.mp4
लेकिन परिणाम बहुत खराब गुणवत्ता वाला है, जिसकी पूरी छवि वर्ग "टाइल्स" से बनी है जैसे कि मैं 4: 1 का आवर्धन कर रहा था।
यहाँ इस कमांड को चलाने का आउटपुट दिया गया है:
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'origs/P1000003.MP4':
Metadata:
major_brand : mp42
minor_version : 1
compatible_brands: mp42avc1
creation_time : 2015-02-19 17:10:38
Duration: 00:05:14.48, start: 0.000000, bitrate: 95903 kb/s
Stream #0.0(und): Video: h264 (High), yuvj420p, 3840x2160 [PAR 1:1 DAR 16:9], 95792 kb/s, 25 fps, 25 tbr, 90k tbn, 50 tbc
Metadata:
creation_time : 2015-02-19 17:10:38
Stream #0.1(und): Audio: aac, 48000 Hz, stereo, s16, 125 kb/s
Metadata:
creation_time : 2015-02-19 17:10:38
Incompatible pixel format 'yuvj420p' for codec 'mpeg4', auto-selecting format 'yuv420p'
[buffer @ 0x22a3420] w:3840 h:2160 pixfmt:yuvj420p
[scale @ 0x22a3ce0] w:3840 h:2160 fmt:yuvj420p -> w:1920 h:1080 fmt:yuv420p flags:0x4
Output #0, mp4, to '1-short.mp4':
Metadata:
major_brand : mp42
minor_version : 1
compatible_brands: mp42avc1
creation_time : 2015-02-19 17:10:38
encoder : Lavf53.21.1
Stream #0.0(und): Video: mpeg4, yuv420p, 1920x1080 [PAR 1:1 DAR 16:9], q=2-31, 200 kb/s, 25 tbn, 25 tbc
Metadata:
creation_time : 2015-02-19 17:10:38
Stream #0.1(und): Audio: libvo_aacenc, 48000 Hz, stereo, s16, 200 kb/s
Metadata:
creation_time : 2015-02-19 17:10:38
Stream mapping:
Stream #0.0 -> #0.0
Stream #0.1 -> #0.1
Press ctrl-c to stop encoding
frame= 125 fps= 6 q=31.0 Lsize= 968kB time=5.00 bitrate=1586.7kbits/s
video:842kB audio:123kB global headers:0kB muxing overhead 0.421047%
मुझे अनुभव से पता है कि ffmpeg एक उत्कृष्ट उपकरण है, इसलिए मुझे विकल्प / मापदंडों को किसी तरह खराब करना चाहिए ...
मैं यह कैसे कर सकता हूँ?
-c:a copy
, क्योंकि आप ऑडियो स्ट्रीम को फिर से एनकोड करना चाहते हैं या नहीं करना चाहते हैं। -map 0
किसी भी अध्याय मेटाडेटा, या अन्य सामान की प्रतिलिपि बनाने के लिए उपयोग करें । (ffmpeg केवल डिफ़ॉल्ट रूप से 1 vid + 1 ऑड लेता है।)
-sws_flags lanczos+print_info
डिफ़ॉल्ट (बिलिनियर मुझे लगता है) की तुलना में बेहतर स्केलिंग एल्गो का उपयोग करेगा। stlb का उत्तर प्रक्रिया के वीडियो एन्कोडिंग भाग को कवर करता है।
scale=1920:-2:flags=lanczos
। मैं -2
अपने गैर-मौजूद उत्तर में पैमाने का उल्लेख करने जा रहा था । उन लोगों के लिए जो आपको नहीं जानते हैं कि आप -2
चौड़ाई या ऊँचाई में डाल सकते हैं , और यह स्वचालित रूप से पहलू अनुपात को संरक्षित करते हुए सही मान प्रदान करेगा और मान को 2 से विभाज्य बना देगा (yuv420p आउटपुट के लिए libx264 द्वारा आवश्यक)।
-t 10
10 सेकंड का आउटपुट बनाने के लिए जोड़ें । आप डाउनस्केल क्यों करना चाहते हैं? आपके स्केल किए गए आउटपुट के लिए उपयोग का मामला क्या है? यह जानकारी मुझे अधिक सटीक उत्तर प्रदान करने में मदद करेगी।