FFmpeg के साथ वीडियो घुमाएगी


417

मैं कैसे FFmpeg के साथ वीडियो को घुमाने के लिए पता लगाने की कोशिश कर रहा है। मैं पोर्ट्रेट मोड में लिए गए iPhone वीडियो के साथ काम कर रहा हूं। मुझे पता है कि MediaInfo (उत्कृष्ट पुस्तकालय, btw) का उपयोग करके रोटेशन की वर्तमान डिग्री का निर्धारण कैसे किया जाता है , लेकिन मैं अब FFmpeg पर फंस गया हूं।

मैंने जो पढ़ा है, उससे आपको जो उपयोग करने की आवश्यकता है, वह vfilter विकल्प है। मैं जो देखता हूं, उसके अनुसार इसे इस तरह दिखना चाहिए:

ffmpeg -vfilters "rotate=90" -i input.mp4 output.mp4

हालाँकि, मुझे यह काम करने के लिए नहीं मिल सकता है। सबसे पहले, -filters अब मौजूद नहीं है, यह अब -vf है । दूसरा, मुझे यह त्रुटि मिली:

No such filter: 'rotate'
Error opening filters!

जहाँ तक मुझे पता है, मेरे पास FFmpeg का ऑल-ऑप्शन-ऑन बिल्ड है। रनिंग ffmpeg -filters इस शो:

Filters:
anull            Pass the source unchanged to the output.
aspect           Set the frame aspect ratio.
crop             Crop the input video to x:y:width:height.
fifo             Buffer input images and send them when they are requested.
format           Convert the input video to one of the specified pixel formats.
hflip            Horizontally flip the input video.
noformat         Force libavfilter not to use any of the specified pixel formats
 for the input to the next filter.
null             Pass the source unchanged to the output.
pad              Pad input image to width:height[:x:y[:color]] (default x and y:
 0, default color: black).
pixdesctest      Test pixel format definitions.
pixelaspect      Set the pixel aspect ratio.
scale            Scale the input video to width:height size and/or convert the i
mage format.
slicify          Pass the images of input video on to next video filter as multi
ple slices.
unsharp          Sharpen or blur the input video.
vflip            Flip the input video vertically.
buffer           Buffer video frames, and make them accessible to the filterchai
n.
color            Provide an uniformly colored input, syntax is: [color[:size[:ra
te]]]
nullsrc          Null video source, never return images.
nullsink         Do absolutely nothing with the input video.

Vflip और hflip के विकल्प होने के कारण महान और सभी हैं, लेकिन वे मुझे नहीं मिलेगा जहां मुझे जाने की आवश्यकता है। मुझे वीडियो को 90 डिग्री तक घुमाने की क्षमता बहुत कम से कम चाहिए। 270 डिग्री भी एक उत्कृष्ट विकल्प होगा। रोटेट विकल्प कहां गए?


मेरे उत्तर को अपडेट किया। ऐसा लगता है कि फिल्टर को पिछले महीने ही स्रोत में जोड़ा गया था।
रॉविलियम्स

76
180 डिग्री रोटेशन की खोज करने वाले किसी भी व्यक्ति के लिए:-vf "vflip,hflip"
ऑरेंजडॉग

4
मैं सोच रहा था, अगर यह डिकोडिंग के बिना हासिल किया जा सकता है और फिर वीडियो को फिर से एन्कोडिंग किया जा सकता है - जिस तरह से jpegtran दोषपूर्ण रूप से JPEG छवियों को घुमा सकता है ...
मिखाइल टी।

2
रोटेशन फ़्लैग के लिए यहां देखें: stackoverflow.com/questions/15335073/…
जोसफोविक

1
मैंने अभी "ट्रांस्पोज़ = 1, ट्रांज़ोज़ = 1" के साथ 180 ° घुमाया गया वीडियो अपलोड किया है। भले ही मैं घुमाए गए वीडियो को वापस खेल सकता हूं, लेकिन इसे वीमियो द्वारा खारिज कर दिया गया था। @ ऑरेंजडॉग का दृष्टिकोण -vf "vflip,hflip"एक आकर्षण की तरह काम करता है।
बेसि

जवाबों:


682

90 घड़ी घुमाएँ:

ffmpeg -i in.mov -vf "transpose=1" out.mov

पारगमन पैरामीटर के लिए आप पास कर सकते हैं:

0 = 90CounterCLockwise and Vertical Flip (default)
1 = 90Clockwise
2 = 90CounterClockwise
3 = 90Clockwise and Vertical Flip

-vf "transpose=2,transpose=2"180 डिग्री के लिए उपयोग करें ।

सुनिश्चित करें कि आप यहां से हाल ही में ffmpeg संस्करण का उपयोग करते हैं (एक स्थिर निर्माण ठीक काम करेगा)।

ध्यान दें कि यह ऑडियो और वीडियो भागों को फिर से एनकोड करेगा। आप आमतौर पर ऑडियो को बिना छुए, उपयोग करके कॉपी कर सकते हैं -c:a copy। वीडियो की गुणवत्ता बदलने के लिए, बिटरेट को सेट करें (उदाहरण के लिए -b:v 1M) या H.264 एन्कोडिंग गाइड पर एक नज़र डालें यदि आप VBR विकल्प चाहते हैं।

इस सुविधा की स्क्रिप्ट का उपयोग करने के लिए एक समाधान भी है ।


8
वीडियो में अभी भी अभिविन्यास की जानकारी होगी इसलिए अब वीडियो को iphone पर सही करने से चूक जाएगा।
srcspider 10

25
जब मैं इस कमांड का उपयोग करता हूं, मुझे कम गुणवत्ता वाला वीडियो आउटपुट मिलता है , जब तक - जैसा कि मैंने अभी-अभी खोजा है - मैं इस पैरामीटर का भी उपयोग करता हूं -vcodec libx264:। लेकिन यह बहुत अच्छा होगा अगर मुझे यह देखने की ज़रूरत नहीं है कि ffmpeg के रूप में उपयोग करने के लिए कौन से एन्कोडिंग को पहले से ही पता होना चाहिए। कोई सुझाव?
सादी

8
सादी के समान लाइनों के साथ, क्या मूल वीडियो की गुणवत्ता को "कॉपी" करने का एक तरीका है?
एलेक जैकबसन

58
180 के लिए आप उपयोग कर सकते हैं-vf "transpose=2,transpose=2"
एलेक्स प्लूटौ

23
वर्तमान डॉक्स ध्यान दें कि "संख्यात्मक मानों को हटा दिया गया है, और प्रतीकात्मक स्थिरांक के पक्ष में छोड़ दिया जाना चाहिए।" ffmpeg.org/ffmpeg-filters.html#transpose इस प्रकार cclock_flip, clock, cclockया clock_flipके बजाय 0, 1, 2या 3
l --marc l

149

यदि आप अपने वीडियो को फिर से एनकोड नहीं करना चाहते हैं और आपका खिलाड़ी रोटेशन मेटाडेटा को संभाल सकता है तो आप केवल ffmpeg का उपयोग करके मेटाडेटा में रोटेशन बदल सकते हैं:

ffmpeg -i input.m4v -metadata:s:v rotate="90" -codec copy output.m4v

11
कैसे के बारे में पहली बार मेटाडेटा को घुमाए जाने की जाँच करेंffmpeg -i input.m4v 2>&1 | grep rotate
lidaobing

60
यह अब तक का सबसे अच्छा जवाब है। लेकिन करने के लिए एक छोटा सा सुधार है। वीडियो पर शेष मेटा-डेटा (जैसे दिनांक, कैमरा) खोने से बचने के लिए ffmpeg -i input.m4v -map_metadata 0 -metadata:s:v rotate="90" -codec copy output.m4v। इस तरह से इनपुट फ़ाइल पर सभी वैश्विक मेटाडेटा को आउटपुट फ़ाइल के लिए वैश्विक मेटाडेटा के रूप में कॉपी किया जाएगा और केवल रोटेशन मेटा-डेटा को बदल दिया जाता है।
10

11
यदि आपके पास एक पोर्ट्रेट-मोड वीडियो है और बस इसे 1920x1080 के मानक के लिए "UN-रोटेट" करना है, तो आप शायद चाहते हैं rotate=0
19:15 पर mivk

1
कोशिश की -metadata:s:v rotate="180", काम नहीं किया। क्या वह काम करने वाला है?
ओन्ड्रा kaयूस्का

7
IMHO सर्वश्रेष्ठ समाधान क्योंकि कोई भी पुनर्संरचना आवश्यक नहीं है और अधिकांश वीडियो प्लेयर मेटाडेटा रोटेशन का समर्थन करते हैं। साथ ही Google फ़ोटो जैसी क्लाउड सेवाएं। हालाँकि, याद रखें कि ffmpeg मूल फ़ाइल से सभी मेटाडेटा को कॉपी करना आवश्यक नहीं है! इसलिए, मैं मूल फ़ाइल से अन्य सभी मेटाडेटा की प्रतिलिपि स्पष्ट रूप से निर्दिष्ट करने की सिफारिश करूंगा:ffmpeg -i input.mp4 -codec copy -map_metadata 0 -metadata:s:v:0 rotate=0 output.mp4
एंड्रियास

83

क्या आपने transposeअभी तक कोशिश की है? जैसे (अन्य उत्तर से)

 ffmpeg -i input -vf transpose=2 output

यदि आप एक पुराने संस्करण का उपयोग कर रहे हैं, तो आपको ffmpeg को अपडेट करना होगा यदि आप ट्रांज़ोज़ सुविधा का उपयोग करना चाहते हैं, क्योंकि यह अक्टूबर 2011 में जोड़ा गया था।

FFmpeg डाउनलोड पेज स्टैटिक बिल्ड प्रदान करता है जिसे आप सीधे संकलित किए बिना निष्पादित कर सकते हैं।


1
नहीं, मेरे पास नहीं है। मुझे नहीं पता था कि यह अस्तित्व में है। मैं एक शॉट देता हूँ।
1

संक्रमण फ़िल्टर मेरे FFmpeg बिल्ड में से किसी में मौजूद नहीं है। मुझे इसे कैसे जोड़ना चाहिए?
१२:३० पर jocull

डॉक्स के संस्करण में 2011-05-15 के अनुसार सही लिंक अब ffmpeg.org/ffmpeg-doc.html#SEC93 है
पीटर हैनसेन

6
ऐसा लगता है कि मुझे स्वीकृत उत्तर से 1.5 साल पहले एक उपयोगी उत्तर देने की सजा मिली।
rwilliams

1
@JonasB फ़िल्टर को अल्पविराम से अलग करें। देखें stackoverflow.com/questions/6195872/...
rwilliams

19

इसी उत्तर को खोजते हुए मैं इस पृष्ठ पर आया। यह अब छह महीने का है क्योंकि यह मूल रूप से पूछा गया था और तब से कई बार बिल्ड अपडेट किए गए हैं। हालाँकि, मैं इस जानकारी की तलाश में किसी और के लिए एक उत्तर जोड़ना चाहता था।

मैं उन रिपॉजिटरी से डेबियन निचोड़ और FFmpeg संस्करण का उपयोग कर रहा हूं ।

Ffmpeg के लिए MAN पेज निम्नलिखित उपयोग बताता है

ffmpeg -i inputfile.mpg -vf "transpose=1" outputfile.mpg

कुंजी यह है कि आप एक डिग्री चर का उपयोग नहीं कर रहे हैं, लेकिन MAN पृष्ठ से पूर्वनिर्धारित सेटिंग चर।

0=90CounterCLockwise and Vertical Flip  (default) 
1=90Clockwise 
2=90CounterClockwise 
3=90Clockwise and Vertical Flip

जानकारी के लिए धन्यवाद! मैं वास्तव में यह काम करने में सक्षम नहीं था, क्योंकि मुझे आमतौर पर स्रोत से निर्माण करने में परेशानी होती है। मैं देख सकता हूं कि क्या मैं इसे अब फिर से काम कर सकता हूं।
जोकुल

स्थानान्तरण = 3 छवि को दर्पण का कारण बना रहा है
डैनियल कोबे

पारगमन = 2 ने मेरे 270 घुमाए गए वीडियो के लिए बिना दर्पण के काम किया
डैनियल कोबे

17

तस्वीर को दक्षिणावर्त घुमाने के लिए आप बारी बारी से फिल्टर का उपयोग कर सकते हैं, जो कि रेडियन में एक सकारात्मक कोण को दर्शाता है। पीआई / 2 के साथ 90 डिग्री के बराबर, आप इसे ऐसा कर सकते हैं:

ffmpeg -i in.mp4 -vf "rotate=PI/2" out.mp4

काउंटर-क्लॉकवाइज के लिए कोण नकारात्मक होना चाहिए

ffmpeg -i in.mp4 -vf "rotate=-PI/2" out.mp4

पारगमन फिल्टर 90 डिग्री के लिए समान रूप से अच्छी तरह से काम करेगा, लेकिन अन्य कोणों के लिए यह एक तेज या एकमात्र विकल्प है।


2
यह महान है। मैंने पाया कि रेडियंस के महीन दाने वाले रिज़ॉल्यूशन को प्राप्त करना संभव है, क्योंकि *गुणन के रूप में व्यवहार करता है: ffmpeg -i in.avi -vf "rotate=-8*PI/40" -q 1 out.avi(-PI / 4 = -10 * PI / 40 से थोड़ा कम रोटेशन)
eqzx

12
ffmpeg -vfilters "rotate=90" -i input.mp4 output.mp4 

नवीनतम स्रोत के साथ भी काम नहीं करेगा ...

क्रम बदलना चाहिए:

ffmpeg -i input.mp4 -vf vflip output.mp4

ठीक काम करता है


यह गलत है कि आप फ़िल्टर को गलत फ़ाइल पर लागू कर रहे हैं ... ffmpeg -i input.mp4 -vf "घुमाएँ = 90" output.mp4 का प्रयास करें, तो यह काम करेगा
patrick

2
" रेडियंस में व्यक्त किए गए एक मनमाने कोण द्वारा वीडियो को घुमाएं ।" प्रलेखन: ffmpeg.org/ffmpeg-filters.html#rotate तो, रेडियन rotate=PI/2या rotate=90*PI/180की जरूरत है
l --marc l

यह शानदार है
Tessaracter

7

यदि आपको "कोडेक प्रायोगिक है, लेकिन प्रायोगिक कोडेक सक्षम नहीं हैं" तो त्रुटि का उपयोग करें:

ffmpeg -i inputFile -vf "transpose=1" -c:a copy outputFile

कुछ के लिए मेरे साथ हुआ .Mov फ़ाइल aac ऑडियो के साथ।


यह एकमात्र उदाहरण था जिसने मेरे लिए काम किया, लेकिन गुणवत्ता भयानक थी, और बहुत ही रुकावट थी। इसके अलावा, इसने 1080x1920 वीडियो को 352x640 तक डाउन किया। मुझे लगता है कि मैं एक स्विच या दो को याद कर रहा हूं। कोई सुझाव?
एलिफिल्ले

1
@ लेलिफ़े जोड़-sameq
एंड्रयू

2
@AndrewSchleifer धन्यवाद। मैंने कोशिश की कि, लेकिन ffmpeg ने मुझे वापस फेंक दिया Option 'sameq' was removed. If you are looking for an option to preserve the quality (which is not what -sameq was for), use -qscale 0 or an equivalent quality factor option. Failed to set value '1' for option 'sameq': Invalid argument -qscale भी एक त्रुटि देता है। Please use -q:a or -q:v, -qscale is ambiguous, लेकिन अभी भी काम करता है।
LOlliffe

3

यह स्क्रिप्ट जो "फिक्स्ड फ़ाइल्स" के तहत निर्देशिका संरचना के साथ फ़ाइलों को आउटपुट करेगी। फिलहाल MOV फ़ाइलों के लिए तय किया गया है और वीडियो के मूल "रोटेशन" के आधार पर कई परिवर्तनों को निष्पादित करेगा। IOS के साथ काम करने वाले वीडियो मैक पर चलने वाले Mavericks पर कब्जा कर लेते हैं, लेकिन इसे आसानी से निर्यात किया जाना चाहिए। Exiftool और ffmpeg दोनों को स्थापित करने पर निर्भर करता है ।

#!/bin/bash

# rotation of 90 degrees. Will have to concatenate.
#ffmpeg -i <originalfile> -metadata:s:v:0 rotate=0 -vf "transpose=1" <destinationfile>
#/VLC -I dummy -vvv <originalfile> --sout='#transcode{width=1280,vcodec=mp4v,vb=16384,vfilter={canvas{width=1280,height=1280}:rotate{angle=-90}}}:std{access=file,mux=mp4,dst=<outputfile>}\' vlc://quit

#Allowing blanks in file names
SAVEIFS=$IFS
IFS=$(echo -en "\n\b")

#Bit Rate
BR=16384

#where to store fixed files
FIXED_FILES_DIR="fixedFiles"
#rm -rf $FIXED_FILES_DIR
mkdir $FIXED_FILES_DIR

# VLC
VLC_START="/Applications/VLC.app/Contents/MacOS/VLC -I dummy -vvv"
VLC_END="vlc://quit"


#############################################
# Processing of MOV in the wrong orientation
for f in `find . -regex '\./.*\.MOV'` 
do
  ROTATION=`exiftool "$f" |grep Rotation|cut -c 35-38`
  SHORT_DIMENSION=`exiftool "$f" |grep "Image Size"|cut -c 39-43|sed 's/x//'`
  BITRATE_INT=`exiftool "$f" |grep "Avg Bitrate"|cut -c 35-38|sed 's/\..*//'`
  echo Short dimension [$SHORT_DIMENSION] $BITRATE_INT

  if test "$ROTATION" != ""; then
    DEST=$(dirname ${f})
    echo "Processing $f with rotation $ROTATION in directory $DEST"
    mkdir -p $FIXED_FILES_DIR/"$DEST"

    if test "$ROTATION" == "0"; then
      cp "$f" "$FIXED_FILES_DIR/$f"

    elif test "$ROTATION" == "180"; then
#      $(eval $VLC_START \"$f\" "--sout="\'"#transcode{vfilter={rotate{angle=-"$ROTATION"}},vcodec=mp4v,vb=$BR}:std{access=file,mux=mp4,dst=\""$FIXED_FILES_DIR/$f"\"}'" $VLC_END )
      $(eval ffmpeg -i \"$f\" -vf hflip,vflip -r 30 -metadata:s:v:0 rotate=0 -b:v "$BITRATE_INT"M -vcodec libx264 -acodec copy \"$FIXED_FILES_DIR/$f\")

    elif test "$ROTATION" == "270"; then
      $(eval ffmpeg -i \"$f\" -vf "scale=$SHORT_DIMENSION:-1,transpose=2,pad=$SHORT_DIMENSION:$SHORT_DIMENSION:\(ow-iw\)/2:0" -r 30 -s "$SHORT_DIMENSION"x"$SHORT_DIMENSION" -metadata:s:v:0 rotate=0 -b:v "$BITRATE_INT"M -vcodec libx264 -acodec copy \"$FIXED_FILES_DIR/$f\" )

    else
#      $(eval $VLC_START \"$f\" "--sout="\'"#transcode{scale=1,width=$SHORT_DIMENSION,vcodec=mp4v,vb=$BR,vfilter={canvas{width=$SHORT_DIMENSION,height=$SHORT_DIMENSION}:rotate{angle=-"$ROTATION"}}}:std{access=file,mux=mp4,dst=\""$FIXED_FILES_DIR/$f"\"}'" $VLC_END )
      echo ffmpeg -i \"$f\" -vf "scale=$SHORT_DIMENSION:-1,transpose=1,pad=$SHORT_DIMENSION:$SHORT_DIMENSION:\(ow-iw\)/2:0" -r 30 -s "$SHORT_DIMENSION"x"$SHORT_DIMENSION" -metadata:s:v:0 rotate=0 -b:v "$BITRATE_INT"M -vcodec libx264 -acodec copy \"$FIXED_FILES_DIR/$f\" 
      $(eval ffmpeg -i \"$f\" -vf "scale=$SHORT_DIMENSION:-1,transpose=1,pad=$SHORT_DIMENSION:$SHORT_DIMENSION:\(ow-iw\)/2:0" -r 30 -s "$SHORT_DIMENSION"x"$SHORT_DIMENSION" -metadata:s:v:0 rotate=0 -b:v "$BITRATE_INT"M -vcodec libx264 -acodec copy \"$FIXED_FILES_DIR/$f\" )

    fi

  fi

echo 
echo ==================================================================
sleep 1
done

#############################################
# Processing of AVI files for my Panasonic TV
# Use ffmpegX + QuickBatch. Bitrate at 16384. Camera res 640x424
for f in `find . -regex '\./.*\.AVI'` 
do
  DEST=$(dirname ${f})
  DEST_FILE=`echo "$f" | sed 's/.AVI/.MOV/'`
  mkdir -p $FIXED_FILES_DIR/"$DEST"
  echo "Processing $f in directory $DEST"
  $(eval ffmpeg -i \"$f\" -r 20 -acodec libvo_aacenc -b:a 128k -vcodec mpeg4 -b:v 8M -flags +aic+mv4 \"$FIXED_FILES_DIR/$DEST_FILE\" )
echo 
echo ==================================================================

done

IFS=$SAVEIFS

2
आउच ... यह काम कर सकता है, लेकिन यह पूरी तरह से छिपा हुआ है। सबसे पहले, शेल-प्रोग्रामिंग का सामान्य नियम: आपको एक पाइप में एक से अधिक grep, कट, awk या sed की आवश्यकता नहीं है। कोई भी grep | cut | sed या तो sed या awk के साथ प्रयोग करने योग्य है। फिर, अधिक विशेष रूप से, एक्सफ़िल्टुल को केवल उस टैग (आउटपुट) के लिए कहा जा सकता है जो आप चाहते हैं - इसलिए रोटेशन को फ़िल्टर करने के बजाय, बस "एक्सफ़िल्ट -रोटेशन"। तीसरा, आपको पठनीयता और कार्यकुशलता दोनों के लिए इतने सारे "evals" और आपके "if test ..." की आवश्यकता नहीं है। सौभाग्य!
मिखाइल टी।

कोई पासा नहीं: [Parsed_pad_2 @ 0x7f8b15c3a580] Input area -420:0:1500:1080 not within the padded area 0:0:1080:1080 or zero-sized\ n ` [Parsed_pad_2 @ 0x7f8b15c3a580] Failed to configure input pad on Parsed_pad_2\ n Error reinitializing filters!\ n Failed to inject frame into filter network: Invalid argument\ n Error while processing the decoded data for stream #0:0\ nConversion failed!
स्लिप डी। थॉम्पसन

2

एलेक्सी के जवाब ने लगभग मेरे लिए काम किया सिवाय इसके कि मुझे यह त्रुटि मिल रही थी:

टाइमबेज 1/90000 एमपीईजी 4 मानक द्वारा समर्थित नहीं है, टाइमबेस डेनोमिनेटर के लिए अधिकतम भर्ती मूल्य 65535 है

मुझे बस कमांड में एक पैरामीटर (-r 65535/2733) जोड़ना था और यह काम कर गया। पूरी कमान इस प्रकार थी:

ffmpeg -i in.mp4 -vf "transpose=1" -r 65535/2733 out.mp4

यदि आप "एनटीएसआर-फिल्म" फ्रैमरेट की तलाश कर रहे हैं, तो 24000/1001अधिक सटीक होगा।
रीनो

2

अंतिम उल्लिखित समाधान से एक अलग दृष्टिकोण के साथ एक अतिरिक्त समाधान, यह जांचने के लिए है कि क्या आपका कैमरा चालक v4l2 कैमरा नियंत्रण (जो बहुत आम है) का समर्थन करता है।
टर्मिनल में बस टाइप करें:

v4l2-ctl -L

यदि आपका कैमरा ड्राइवर v4l2 कैमरा नियंत्रणों का समर्थन करता है, तो आपको कुछ इस तरह से प्राप्त करना चाहिए (नीचे दी गई सूची उन नियंत्रणों पर निर्भर करती है जो आपके कैमरा ग्राहक समर्थन करते हैं):

               contrast (int)    : min=0 max=255 step=1 default=0 value=0 flags=slider
             saturation (int)    : min=0 max=255 step=1 default=64 value=64 flags=slider
                    hue (int)    : min=0 max=359 step=1 default=0 value=0 flags=slider
white_balance_automatic (bool)   : default=1 value=1 flags=update
            red_balance (int)    : min=0 max=4095 step=1 default=0 value=128 flags=inactive, slider
           blue_balance (int)    : min=0 max=4095 step=1 default=0 value=128 flags=inactive, slider
               exposure (int)    : min=0 max=65535 step=1 default=0 value=885 flags=inactive, volatile
         gain_automatic (bool)   : default=1 value=1 flags=update
                   gain (int)    : min=0 max=1023 step=1 default=0 value=32 flags=inactive, volatile
        horizontal_flip (bool)   : default=0 value=0
          vertical_flip (bool)   : default=0 value=0

और अगर आप भाग्यशाली हैं तो यह क्षैतिज_फ्लिप और वर्टिकल_फ्लिप का समर्थन करता है ।
फिर आपको इसके लिए क्षैतिज_फ्लिप सेट करना होगा :

v4l2-ctl --set-ctrl horizontal_flip=1

या वर्टिकल_फ्लिप द्वारा:

v4l2-ctl --set-ctrl vertical_flip=1

और फिर आप अपने वीडियो डिवाइस को एक नया वीडियो कैप्चर करने के लिए कॉल कर सकते हैं (नीचे उदाहरण देखें), और वीडियो को घुमाया / फ़्लिप किया जाएगा।

ffmpeg -f v4l2 -video_size 640x480 -i /dev/video0 -vcodec libx264 -f mpegts input.mp4

बेशक, अगर आपको पहले से मौजूद वीडियो को संसाधित करने की आवश्यकता है, तो इस विधि से वह समाधान नहीं है जिसकी आप तलाश कर रहे हैं।

इस दृष्टिकोण में लाभ यह है कि हम छवि को सेंसर स्तर में फ्लिप करते हैं, इसलिए ड्राइवर का सेंसर पहले से ही हमें छवि को फ़्लिप करता है, और यह एप्लिकेशन (जैसे एफएफएमपीपी) को किसी भी आगे और अनावश्यक प्रसंस्करण से बचाता है।


यहाँ v4l2 के बारे में शानदार जानकारी। रिकॉर्डिंग समय पर सही अभिविन्यास के लिए घूमना स्पष्ट रूप से बेहतर है :) यह लगभग 10 साल पुराना सवाल (वाह!) मूल रूप से iOS उपकरणों से अपलोड किए जा रहे वीडियो के बारे में पूछा गया था, अगर इससे कोई संदर्भ प्रदान करने में मदद मिलती है :)
jocull

मैं इस समुदाय में थोड़ा नया हूँ और यह सवाल बहुत पुराना है, फिर मेरी वरिष्ठता यहाँ ... मुझे लगता है कि यह एक अच्छा (और आम) प्रश्न है, इसलिए मेरा मानना ​​है कि यह पुराना प्रश्न कई FFmpeg उपयोगकर्ताओं की मदद करता रहेगा।
जेएम

1

दुर्भाग्य से, ffmpeg का उबंटू संस्करण वीडियोफिल्टर का समर्थन करता है।

उसी प्रभाव को प्राप्त करने के लिए आपको एविडेमक्स या किसी अन्य संपादक का उपयोग करने की आवश्यकता है।

प्रोग्रामेटिक तरीके से मेन्कोडर की सिफारिश की गई है।


1
क्या आपका मतलब है "ffmpeg का उबंटू संस्करण वीडियोफिल्टर का समर्थन नहीं करता है "?
user1438038 18

2
FYI करें: "FFmpeg ने Ubuntu 15.04 विविड वर्वेट में वापसी की है।" या उबंटू के लिए संकलित किया जा सकता है। -> trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu
l --marc l

avconv करता है (14.04 में), और ठीक उसी तरह काम करता है। (लेकिन बाद के संस्करणों के लिए, निश्चित रूप से FFmpeg का उपयोग करें।)
सिल्वरवुल्फ़ - मोनिका

1

स्मार्टफोन: एक वीडियो को वर्टिकल फॉर्मेट में रिकवर किया

इसे एक वेबसाइड पर भेजना चाहते हैं यह 90 ° बाईं ओर (एंटी क्लॉकवाइज़, लैंडस्केप प्रारूप) हम्म था।

ffmpeg -i input.mp4 -vf "rotate=0" output.mp4

क्या यह। मुझे फिर से वर्टिकल फॉर्मेट मिला

डेबियन बस्टर: ffmpeg --version ffmpeg संस्करण 4.1.4-1 ~ deb10u1 कॉपीराइट (c) 2000-2019 FFmpeg डेवलपर्स

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