इमेजमैकिक छवि रूपांतरण एवोक में फेल हो जाता है


3

मैं एक स्क्रिप्ट लिखने की कोशिश कर रहा हूं जिसमें सभी प्रकार की छवियां (प्रारूप, आकार ...) होनी चाहिए और एवोकॉन के साथ एक वीडियो बनाना चाहिए। मैं इसे jpg (सभी समान आकार) की श्रृंखला के साथ काम करने में कामयाब रहा हूं और अब मैं यह सुनिश्चित करने के लिए कन्वर्ट का उपयोग करने की कोशिश कर रहा हूं कि यह सभी छवियों को आकार और प्रारूप में समान बनाकर वीडियो बनाएगा। यहाँ है मैं इसे कैसे करते हैं:

(for J in $(ls "$1/"* 2> /dev/null); do
     convert "$J" -resize 640x480 -gravity center \
             -size "$FORMAT" -fill black -extent 640x480 jpg jpeg:-
done) | avconv -f image2pipe -r 1/5 -c:v mjpeg -i - \
               -vcodec libx264 -r 20 -f mpegts video.mpeg

मुझे उन चित्रों की एक श्रृंखला मिली है, जहां एवोकॉन रिटर्न:

Input stream #0:0 frame changed from size:640x480 fmt:yuvj420p to size:160x120 fmt:yuvj422p
Input stream #0:0 frame changed from size:160x120 fmt:yuvj422p to size:320x240 fmt:yuvj422p
Input stream #0:0 frame changed from size:320x240 fmt:yuvj422p to size:88x128 fmt:yuvj420p
[mjpeg @ 0x101838800] only 8 bits/component accepted
 Error while decoding stream #0:0
 Input stream #0:0 frame changed from size:88x128 fmt:yuvj420p to size:120x160 fmt:yuvj420p

मैंने जाँच की है और छवि ठीक दिख रही है जब मैं सिर्फ कन्वर्ट का उपयोग कर रहा हूँ। मुझे लगता है कि मैं काम करने के लिए छवि को पूरी तरह से समान बनाने के लिए कन्वर्ट में कुछ याद कर रहा हूं। लेकिन मैं वास्तव में इसे पा नहीं सकता

आपकी मदद के लिए thx!

संपादित करें

इसलिए जांच के बाद ऐसा प्रतीत होता है कि आउटपुट छवियों के समान रिज़ॉल्यूशन और / या सैंपलिंग अनुपात नहीं है। तो मैंने यह कोशिश की है:

(for J in $(ls "$1/"* 2> /dev/null); do
    convert "$J" -background '#000000' -resize "640x480" 
                 -gravity center -extent "640x480" -sampling-factor '4:2:2' 
                 -resample '72x72' jpeg:-
done) | 
avconv -f image2pipe -r 1/5 -c:v mjpeg -i - 
       -vcodec libx264 -r 30 "foo.mpeg"

फिर भी कोई सफलता नहीं ...

Input stream #0:0 frame changed from size:640x480 fmt:yuvj422p to size:160x120 fmt:yuvj422p
Input stream #0:0 frame changed from size:160x120 fmt:yuvj422p to size:320x240 fmt:yuvj422p
Input stream #0:0 frame changed from size:320x240 fmt:yuvj422p to size:88x128 fmt:yuvj420p
[mjpeg @ 0x101838800] only 8 bits/component accepted
Error while decoding stream #0:0
Input stream #0:0 frame changed from size:88x128 fmt:yuvj420p to size:120x160 fmt:yuvj420p

पाइप :: इनपुट /

यहां वह छवि है जिसका मैं उपयोग करता हूं:

उम्मीद है की यह मदद करेगा...

जवाबों:


3

बहुत खोज के बाद आखिरकार मुझे कुछ काम मिला (कम से कम मेरी कुछ परीक्षण फाइलों के साथ):

convert "$J" -background '#000000' -resize "$FORMAT" \
        -gravity center -extent "$FORMAT" -strip \
        -sampling-factor '4:2:2' -type TrueColor jpeg:- | \
avconv -f image2pipe -r 1/"$DURATION" -c:v mjpeg -i - \
       -vcodec libx264 -r 20 -f mpegts "$RESULT_FILE"

महत्वपूर्ण विकल्प हैं:

  • -strip इनपुट से सभी अतिरिक्त जानकारी निकालता है (उदाहरण के लिए मेरे पास कलर प्रोफाइल या कुछ EXIF ​​डेटा था) यह स्पष्ट रूप से समस्या पैदा कर रहा था
  • -sampling-factor '4:2:2' यह jpeg नमूनाकरण कारक को 4: 2: 2 पर ठीक करता है (यदि आपको लगता है कि 4: 2: 2 के अलावा समझदार विकल्प है)
  • -type TrueColor यह अप्रयुक्त है, लेकिन ग्रे स्केल में एक छवि का एक अलग प्रारूप होगा जिसे जेपीईजी में रखा जाएगा यह विकल्प TrueColors में बदलने के लिए मजबूर करता है ताकि सभी चित्र समान रंग कोडिंग का उपयोग करें।

इससे मेरी समस्याओं का समाधान हो गया। कृपया मुझे बताएं कि क्या आप कुछ और देखते हैं ... Thx

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.