FFmpeg সহ কীভাবে একটি ভিডিও 180 ate ঘোরান?


69

আমার কাছে এমন একটি ভিডিও রয়েছে যা রেকর্ড করার সময় 180 rot ঘোরানো হয়েছিল। এফএফপিপেকে দিয়ে কি এটি সংশোধন করা সম্ভব?


আপনি কি প্লেব্যাকের সময় এটি উল্টানোর বিষয়ে জিজ্ঞাসা করছেন বা সঠিক অভিযোজন সহ পুনরায় এনকোডিংয়ের বিষয়ে জিজ্ঞাসা করছেন?
এমএক্সএক্স

@ এমএক্সএক্স আমি পুনরায় এনকোডিংয়ের কথা ভাবছিলাম, তবে প্লেব্যাকের সময় আপনি কী বোঝাতে চেয়েছিলেন?
লুই

ডিকোডিং ব্যাকএন্ড হিসাবে ffmpeg ব্যবহার করা মিডিয়া প্লেয়ারগুলিও এর সমস্ত ফিল্টার ব্যবহার করতে পারে। এই স্ক্রিনশটটি দেখুন ffdshow-tryout.sourceforge.net/images/front1.png "অফসেট এবং ফ্লিপ" ফিল্টার। আরো দেখুন stackoverflow.com/questions/3937387/rotating-videos-with-ffmpeg
Mxx

ওহ ঠিক আছে, দুর্দান্ত। এটি আমার পক্ষে কাজ করবে তবে আমি এটিও ভাগ করে নিতে চাই। আমি এসও প্রশ্নটি একবার দেখে নেব।
লুই

5
এই প্রশ্নের শব্দ এবং শিরোনাম সত্যিই বিভ্রান্তিকর। কোনও ভিডিওকে উল্লম্বভাবে উল্টানো 180 ডিগ্রি ঘোরার মতো নয় (যা উল্লম্ব ফ্লিপ এবং অনুভূমিক ফ্লিপের মতো)। গৃহীত উত্তরের ভিত্তিতে আমি ঘূর্ণন নির্দিষ্ট করতে সম্পাদনা করছি। বর্তমানে এটি ffmpeg সহ উল্লম্বভাবে ফ্লিপ করার জন্য গুগল ফলাফলগুলিকে দূষিত করছে।
জেসন সি

উত্তর:


102

মূলআবর্তিত


TL; ড

ffmpeg ভিডিওটি স্বয়ংক্রিয়ভাবে ঘোরানো হবে যদি না:

  • আপনার ইনপুটটিতে কোনও ঘোরানো মেটাডেটা নেই
  • তোমার ffmpegবয়স অনেক বেশি

ঘূর্ণন মেটাটাটা

কিছু ভিডিও, যেমন আইফোন থেকে আসা, শারীরিকভাবে উল্টায় না, তবে ভিডিও স্ট্রিম ডিসপ্লেমেট্রিক্স পার্শ্ব ডেটা বা মেটাডেটা ঘোরান contain কিছু প্লেয়ার এই মেটাডেটা উপেক্ষা করে এবং কিছু না করে। পড়ুন ffmpegআউটপুট সান্ত্বনা যদি আপনার ইনপুট যেমন মেটাডেটা দেখতে:

$ ffmpeg -i input.mp4
...
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'input.mp4':
  Duration: 00:00:05.00, start: 0.000000, bitrate: 43 kb/s
    Stream #0:0(und): Video: h264 (High 4:4:4 Predictive) (avc1 / 0x31637661), yuv444p, 320x240 [SAR 1:1 DAR 4:3], 39 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default)
    Metadata:
      rotate          : 180
    Side data:
      displaymatrix: rotation of -180.00 degrees

স্বয়ংক্রিয় ঘূর্ণন

ffmpeg কোনও বিদ্যমান ভিডিও স্ট্রিম রোটেশন মেটাডেটা অনুযায়ী ভিডিওটি শারীরিকভাবে স্বয়ংক্রিয়ভাবে ঘোরানো হবে।

অটোরোটেশন বৈশিষ্ট্যটি ব্যবহার করতে সক্ষম হতে আপনার এমন একটি বিল্ড দরকার যা 2 মে 2015 থেকে 1630224 প্রতিশ্রুতিবদ্ধ।

উদাহরণ

ffmpeg -i input.mp4 -c:a copy output.mp4

এই আচরণটি অক্ষম করতে -noautorotateবিকল্পটি ব্যবহার করুন ।


যদি ইনপুটটিতে কোনও মেটাডেটা না থাকে বা আপনার ffmpegপুরানো হয়

ভিডিওটি ঘোরানোর জন্য আপনাকে একটি ফিল্টার ব্যবহার করতে হবে এবং যদি কোনও ঘোরানো মেটাডেটা উপস্থিত থাকে তবে এটি নীচের উদাহরণগুলিতে দেখানো হয়েছে এমনভাবে সরিয়ে ফেলতে হবে:

উদাহরণ

ব্যবহার করে ffmpegআপনার 180 ডিগ্রি ঘোরানোর জন্য ভিডিও ফিল্টার ব্যবহারের তিনটি পদ্ধতির পছন্দ রয়েছে °

hflip এবং vflip

ffmpeg -i input.mp4 -vf "hflip,vflip,format=yuv420p" -metadata:s:v rotate=0 \
-codec:v libx264 -codec:a copy output.mkv

transpose

ffmpeg -i input.mp4 -vf "transpose=2,transpose=2,format=yuv420p" \
-metadata:s:v rotate=0 -codec:v libx264 -codec:a copy output.mp4

rotate

এই ফিল্টারটি যে কোনও নির্বিচারে কোণে ঘোরানো যেতে পারে এবং রেডিয়েনগুলি ডিগ্রির পরিবর্তে ইউনিট হিসাবে ব্যবহার করে। এই উদাহরণটি π / 1 রেডিয়ান বা 180 rot ঘোরানো হবে:

ffmpeg -i input.mp4 -vf "rotate=PI:bilinear=0,format=yuv420p" \
-metadata:s:v rotate=0 -codec:v libx264 -codec:a copy output.mp4

পরিবর্তে আপনি ডিগ্রি ব্যবহার করতে পারেন। এক ডিগ্রি π / 180 রেডিয়ানের সমান। সুতরাং আপনি যদি 45 rot ঘোরান চান:

ffmpeg -i input.mp4 -vf "rotate=45*(PI/180),format=yuv420p" \
-metadata:s:v rotate=0 -codec:v libx264 -codec:a copy output.mp4

rotateফিল্টারটি ব্যবহার করার সময় , bilinear=090 টি দিয়ে বিভাজ্য কোণগুলির জন্য বিলাইনার ইন্টারপোলেশনটি বন্ধ করে (ব্যবহার করে ) করা উচিত , অন্যথায় এটি ঝাপসা দেখায়।


নোট

  • ফিল্টারিংয়ের জন্য এনকোডিং দরকার। এই উদাহরণগুলি H.264 ভিডিও আউটপুট তৈরি করে। আপনি যে গুণমানটি চান তা পাওয়ার দিকনির্দেশের জন্য FFmpeg H.264 ভিডিও এনকোডিং গাইডটি দেখুন ।

  • ক্রোমা উপচে পড়া। আমি অন্তর্ভুক্ত করেছি format=yuv420pযেহেতু ffmpegক্রোমা সাব স্যাম্পলিং (এনকোডার, ইনপুট, ffmpegসংস্করণ ইত্যাদির উপর নির্ভর করে ) কমিয়ে আনা বা এড়ানোর চেষ্টা করব । খাঁটি প্রযুক্তিগত দিক থেকে এটি ভাল আচরণ, তবে বেশিরভাগ খেলোয়াড়ই আরও "উন্নত" ক্রোমা সাবসাম্পলিং স্কিমের সাথে বেমানান। এটি ব্যবহার করার মতোই -pix_fmt yuv420তবে এটি ফিল্টারচেইনে খুব সহজেই অবস্থিত ।

  • অডিওটি অনুলিপি করুন। -codec:a copyবিকল্প হবে কপি স্ট্রিম সঙ্কেতাক্ষরে লিখা পরিবর্তে (পুনরায় mux)। আপনি যদি কেবলমাত্র ভিডিওটি ম্যানিপুলেট করতে চান তবে অডিওটিকে পুনরায় এনকোড করার কোনও কারণ নেই (যদি না আপনি কোনও ভিন্ন অডিও ফর্ম্যাটে রূপান্তর করতে চান)। এটি সময় সাশ্রয় করবে যেহেতু এনকোডিং সময় সাপেক্ষ এবং এটি অডিওর মান সংরক্ষণ করবে।


প্লেব্যাকের উপরে ঘোরান

বিকল্পভাবে আপনি প্লেব্যাকের উপর ঘোরান এবং পুনরায় এনকোডিং এড়াতে পারেন। ffplayস্বয়ংক্রিয়ভাবে ঘোরানো হবে:

ffplay input.mp4

যদি কোনও ডিসপ্লেমেট্রিক্স সাইড ডেটা না থাকে বা মেটাডেটা ঘোরান তবে আপনি ফিল্টারগুলি ব্যবহার করতে পারেন:

ffplay -vf "hflip,vflip" -i input.mp4

... বা আপনার প্রিয় প্লেয়ার উল্লেখ করুন। ভিএলসির মতো ব্যবহার করার মতো বেশিরভাগ খেলোয়াড়ের এই ক্ষমতা রয়েছে।


পেয়ে ffmpeg

Ffmpeg এর পুরানো বিল্ডগুলি ফিল্টারিং ক্ষমতা অন্তর্ভুক্ত করে না। লিনাক্স, ওএস এক্স, এবং উইন্ডোজের সুবিধামত বিল্ড সহ বিভিন্ন বিকল্পের জন্য এফএফপিপেজ ডাউনলোড পৃষ্ঠাটি দেখুন বা পদক্ষেপে ffmpeg সংকলন গাইডগুলির জন্য FFmpeg উইকি দেখুন


ধন্যবাদ, আমি সবেমাত্র চেষ্টা শেষ করেছি -vf vflipএবং এটি একটি কবজির মতো কাজ করেছে। তবে এটি ছিল একটি পুনরায় এনকোড। আমি আপনাকে সঠিকভাবে পড়ছি কিনা তা নিশ্চিত নই। আপনি কি বলছেন -vf hflip,vflipযে পুনরায় এনকোড হবে না?
লুই

@ লুইসের ffmpegপ্রয়োজন ভিডিও এবং অডিও ফিল্টারগুলি ব্যবহার করার সময় আপনি পুনরায় এনকোড করুন। যাইহোক, ffplayআমার দ্বিতীয় উদাহরণ হিসাবে দেখানো হয়েছে প্লেব্যাক সময় ফিল্টার অনেকগুলি ব্যবহার করতে পারেন।
লগন

আহ, এটি একটি ভিন্ন প্রোগ্রাম ছিল খেয়াল করেনি।
লুই

আমি ভাবছি ভিডিওর মান বাদে অন্য কোনও উপায় সংরক্ষণের উপায় আছে কি -codec:v libx264? ffmpegব্যবহারকারীরা এটি বের করার চেষ্টা না করে কেবল একই এনকোডিংটি ব্যবহার করতে পারেন?
সাদি

1
@ লুই ডিগ্রির পরিবর্তে রেডিয়েনগুলি ইউনিট হিসাবে rotateব্যবহার করেন। আমি মনে করি লোকেরা ডিগ্রির সাথে বেশি পরিচিত, তাই উদাহরণের মধ্যে কীভাবে ডিগ্রি ব্যবহার করতে হয় সেগুলি দেখানোর চেষ্টা করেছি। এক ডিগ্রি π / 180 রেডিয়ানের সমান। সুতরাং আপনি 45 rot ঘোরাতে চাইলে কেবল ব্যবহার করুন । rotate="45*(PI/180)"
লোগান

7

এফএফএমপিইজি 2015 সালে ভি 2.7 রিলিজের "ঘোরান" মেটাডেটা সহ স্বয়ংক্রিয়ভাবে আবর্তিত ইনপুট ভিডিও উত্সগুলিতে ডিফল্ট আচরণকে পরিবর্তন করেছে ।

আপনি যদি জানেন যে আপনার স্ক্রিপ্ট বা কমান্ডটি কখনই 2.7 এর চেয়ে পুরানো ffmpeg রিলিজে চলবে না, সহজ সমাধান হ'ল মেটাডাটার ভিত্তিতে কোনও কাস্টম রোটেশন সরানো।

অন্যান্য ক্ষেত্রে আপনি আপনার কাস্টম রোটেশন কোড রেখে এবং -noautorotateপতাকা যুক্ত করে ভবিষ্যতে-প্রমাণ করতে পারেন (এটি পুরানো সংস্করণগুলিতে সমর্থিত যা এখনও সেই সময়ে রক্ষণাবেক্ষণ করা হয়েছিল)।


2

ডিকোডিং ব্যাকএন্ড হিসাবে ffmpeg ব্যবহার করা মিডিয়া প্লেয়ারগুলিও এর সমস্ত ফিল্টার ব্যবহার করতে পারে। "অফসেট এবং ফ্লিপ" ফিল্টার সহ এই স্ক্রিনশটটি দেখুন।এখানে চিত্র বর্ণনা লিখুন

বিকল্পভাবে, আপনি যদি নিজের ভিডিওটি পুনরায় এনকোড করতে চান তবে স্ট্যাকওভারফ্লোতে এফএফপিপেগের সাথে ঘূর্ণায়মান ভিডিওগুলি দেখুন


1
দুর্ভাগ্যক্রমে এফএফপিপিগের সাথে ভিডিওগুলি ঘোরানোর ক্ষেত্রে transposeরেফারেন্সকৃত ফিল্টারটি 180 ° ঘুরতে পারে না যতক্ষণ আমি বলতে পারি।
লগন

1
@ লর্ডনেকবার্ড সরাসরি নয়, তবে আপনি transposeপ্রভাবটি অর্জন করতে দুটি ফিল্টার একসাথে চেইন করতে পারেন ।
অশুভপুষ্ট

1
@ ইভিলস্প আহ, হ্যাঁ, আমি এটি ভেবে দেখিনি। স্থানিক যুক্তি কঠিন; চল কেনাকাটা করতে যাই. একটি উদাহরণ সহ আমার উত্তর আপডেট নির্দ্বিধায়।
লগন

1

নীচে একটি বাশ স্ক্রিপ্ট যা "ফিক্সড ফাইলেস" এর অধীনে ডিরেক্টরি কাঠামোযুক্ত ফাইলগুলি আউটপুট দেবে। এটি আইওএস ভিডিওগুলিকে রূপান্তরিত করে এবং আভিভিগুলিকে ট্রান্সকোড করে। স্ক্রিপ্ট উভয় ইনস্টল থাকার উপর নির্ভর করে 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

1

আমাকে এটি সম্পাদনা করতে, পাঠ্যটির উপস্থাপন করতে বলা হয়েছিল, শেষ পর্যন্ত আমি যে সমাধানটি পেয়েছি তা নির্দেশ করে লেখার শেষে ছিল। সুতরাং, শেষে আপনি পরপর দুটি ffmpeg কমান্ড খুঁজে পাবেন যা সফলভাবে আমার ভিডিওটিকে সঠিক অভিযোজনে ঘুরিয়েছে। পূর্ববর্তী পাঠ্যটি ছিল যতটা সম্ভব আমার দেওয়া তথ্য দেওয়ার জন্য, যেমন আমি অন্যান্য বার্তাগুলি দেখেছি যা তথ্যের অভাবে খণ্ডন করা হয়েছিল। যাইহোক আমি আশা করি এটি অন্যকে ffmpeg ব্যবহার করতে সহায়তা করে। এটি আমার কাছে মনে হয় ffmpeg এ hflip এবং vflip এর উদ্দেশ্য হ'ল ন্যূনতম, বিভ্রান্তিকর এবং আমি প্রত্যাশার সাথে বিপরীত।

Merlin.mov ফাইলটি আমার আইফোনটিতে নেওয়া একটি ভিডিওর অনুলিপি, প্রথমে ড্রপবক্সে আপলোড করা, তারপরে আমার ল্যাপটপে ডাউনলোড করা, উবুন্টু চালানো:

    $ uname -a
    Linux gazelle 3.13.0-135-generic #184-Ubuntu SMP
    Wed Oct 18 11:55:51 UTC 2017 x86_64 x86_64 x86_64
    GNU/Linux

আমি জানি যে আমি আমার আইফোনটি ইউএসবি এর মাধ্যমে মাউন্ট করতে সক্ষম হয়েছি এবং সরাসরি ফাইলগুলি অনুলিপি করেছিলাম, তবে এটি কার্যকর হয়নি; আমার ল্যাপটপটি আইফোনটি সংযুক্ত রয়েছে তা সনাক্ত করতে পারে তবে এটির ফাইল সিস্টেমটি মাউন্ট করবে না এবং আমি আমার আইফোনে ল্যাপটপের "বিশ্বাস" রাখতে কোনও প্রম্পট পাইনি।

ড্রপবক্স থেকে আমার ল্যাপটপে কপি করার জন্য আমি যে কমান্ডটি ব্যবহার করেছি তা হ'ল:

    cp ~/Dropbox/Camera\ Uploads/Video\ Nov\ 02\,\ 9\ 41\ 55\ AM.mov \
            merlin.mov

মূল ফাইলটি ভিডিও 1920 x 1080 কোডেক এইচভিসি / এইচ .265 ফ্রেমারেট 30 / সেকেন্ড, বিট্রেট 8140 কেবিপিএস, অডিও কোডেক এমপিইজি -4 এএসি অডিও চ্যানেল স্টেরিও, নমুনা হার 44100 হার্জ, বিট্রেট 85 কেবিপিএস। আমি যখন এটি আমার আইফোনে খেলি তখন এটি সঠিকভাবে ওরিয়েন্টেড হয় এবং শব্দটি সিঙ্ক্রোনাইজ হয়। আমি যখন এটি আমার ল্যাপটপে ভিডিওগুলিতে খেলি তখন এটি উভয়ই উল্টা হয়ে যায় এবং অনুভূমিকভাবে বিপরীত হয় এবং শব্দটি সিঙ্ক্রোনাইজ হয় না। এখানে "ffmpeg -i Merlin.mov" থেকে আংশিক আউটপুট দেওয়া হয়েছে:

    Metadata:
    rotate          : 180
    creation_time   : 2017-11-02T14:41:55.000000Z
    handler_name    : Core Media Data Handler
    encoder         : HEVC

"Ffmpeg - রূপান্তর" থেকে আউটপুট প্রথম লাইন এখানে:

ffmpeg সংস্করণ 3.3.3 কপিরাইট (সি) 2000-2017 এফএফপিপেইগ বিকাশকারী

নিম্নলিখিতটি প্লেব্যাকটি উল্লম্ব এবং অনুভূমিকভাবে উভয়দিকেই উল্টে গেছে, যদিও এটি এমপিইজি -4 ভিডিওতে (ভিডিও / এমপি 4) রূপান্তর করে এবং শব্দটিকে সিঙ্ক্রোনাইজ করেছে:

    ffmpeg -i merlin.mov -vf 'hflip,vflip' merlinhflipvflip.mp4

নিম্নলিখিতটি উল্লম্বভাবে উল্টানো হয়েছে যাতে প্লেব্যাকটি সোজা হয়ে যায়, শব্দটিকে সিঙ্ক্রোনাইজ করে এবং এমপিইজি -4 এ রূপান্তরিত হয়, তবে শেষের জন্য অনুভূমিকভাবে ভুলভাবে উল্টানো প্রান্তটি ছেড়ে যায় (এটি কোনও টাইপ নয়, আমি 'hflip' নির্দিষ্ট করেছি):

    ffmpeg -i merlin.mov -vf 'hflip' merlinhflip.mp4

নিম্নলিখিতগুলি সঠিক দিকের দিকে অনুভূমিকভাবে উল্টিয়েছিল, তবে প্লেব্যাকটি উল্টোদিকে ছেড়ে গেছে:

    ffmpeg -i merlin.mov -vf 'vflip' merlinvflip.mp4

নিম্নলিখিতগুলিতে যা-ই হোক না কেন তার কোনও প্রভাব নেই:

    ffmpeg -i merlin.mov -vf 'hflip' merlinhflip.mp4
    ffmpeg -i merlinhflip.mp4 -vf 'vflip' merlin2stepA.mp4

আমি এটি ব্যবহার করেছিলাম, সুপারزر ডটকম-এ পাওয়া একটি আদেশের ভিত্তিতে based এটি সাফল্যের সাথে শব্দটিকে সিঙ্ক্রোনাইজ করেছে এবং এমপিইজি -4 এ রূপান্তর করেছে, তবে অনুভূমিক এবং উল্লম্ব অবস্থান উভয়ই ভুল রয়ে গেছে:

    ffmpeg -i merlin.mov \
            -vf "rotate=PI:bilinear=0,format=yuv420p" \
            -metadata:s:v rotate=0 -codec:v libx264 \
            -codec:a copy merlinrotate.mp4

আমি এটিও চেষ্টা করেছিলাম, যা অভিমুখকে সংশোধন করার ক্ষেত্রে কার্যকর হয় নি:

    ffmpeg -noautorotate -i merlin.mov merlinnoautorotate.mp4

নিম্নলিখিত 2-পদক্ষেপের প্রক্রিয়াটি অবশেষে যা চেয়েছিল তা পেয়েছে; উল্লম্ব এবং অনুভূমিক উভয়ই ফ্লিপ, শব্দ সুসংহতকরণ এবং ফর্ম্যাট এমপিইজি -4 এ রূপান্তরিত হয়েছে (আবার এটি কোনও টাইপ নয়; আমি উভয় আদেশেই এইচএফলিপ ব্যবহার করেছি):

    ffmpeg -i merlin.mov -vf 'hflip' merlinhflip.mp4
    ffmpeg -i merlinhflip.mp4 -vf 'hflip' merlin2stepB.mp4

দীর্ঘ সময় - এটি আমার কাছে কোনও উত্তরের মতো দেখাচ্ছে - তিনি কেবল তার সমস্যা সমাধানের প্রক্রিয়াটি অনুসরণ করেছিলেন।
যাত্রামন গীক

পছন্দ করেছেন আমি এখন তার চূড়ান্ত অনুচ্ছেদে দেখছি নিম্নলিখিত 2-পদক্ষেপের প্রক্রিয়াটি অবশেষে যা চেয়েছিল তা পেয়েছে । ভালো চোখে। (আমি সত্যিই পুরো পোস্টটি পড়েছিলাম তবে সেখানে পৌঁছার সাথে সাথে আমার চোখগুলি সম্ভবত জ্বলজ্বল হয়ে গেছে)।
আমি বলছি মনিকা

ভাল উত্তর আপনার উত্তর উন্নতি। আপনার উত্তরের জন্য যথেষ্ট বিশদ অন্তর্ভুক্ত করার জন্য আপনি ভাল করেছেন। আপনার সাইটের চারপাশে যেমন নজর রয়েছে, অন্যান্য উত্তরের উত্তরগুলি কীভাবে বিশদের সাথে সুস্পষ্টতার সাথে ভারসাম্য বজায় রাখবে তা পর্যবেক্ষণ করার চেষ্টা করুন।
আমি বলছি মনিকা পুনরায়

0

পদক্ষেপ এখানে:

  1. প্রথমে আপনার ভিডিও ফাইলটি কুইকটাইমে খুলুন। আপনি প্রথমে কুইটটাইম ফায়ার করতে পারেন, "ফাইল" এ যান এবং তারপরে "ফাইল খুলুন" তে যান to অথবা আপনি ফাইলটি নিজেই ডান-ক্লিক করতে পারেন, "সাথে খুলুন" এবং তারপরে কুইকটাইম চয়ন করতে পারেন।

  2. ভিডিওটি একবার "সম্পাদনা করুন" ক্লিক করুন এবং তারপরে সরাসরি নীচে ঘোরানো এবং ফ্লিপ বিকল্পগুলি পাবেন

  3. একবার আপনার পছন্দের ওরিয়েন্টেশনটি লক হয়ে গেলে, তারপরে আপনার যুক্ত হওয়া নতুন পরিবর্তনগুলির সাথে আপনার ভিডিও রফতানি করতে হবে। আপনি কুইকটাইমের "ফাইল" মেনুতে "এক্সপোর্ট" বিকল্পটি পাবেন।

আপনি যে ফাইল সেটিংস হিসাবে রফতানি করতে চান তা চয়ন করুন এবং রফতানি বন্ধ করতে "ওকে" ক্লিক করুন।

যখন রফতানি অপারেশন সম্পূর্ণ হয়, আপনি আপনার নতুন ফাইলটি খুঁজে পাবেন যেখানে আপনি কখনই এটি সঠিক ওরিয়েন্টেশন দিয়ে সংরক্ষণ করতে পছন্দ করেছেন!

এই সম্পূর্ণ ফিক্সটি সম্পূর্ণ হতে আমার 5 মিনিটেরও কম সময় লেগেছে, তবে ভিডিওটির দৈর্ঘ্যের উপর নির্ভর করে এটি আরও বেশি সময় নিতে পারে (বা আরও ছোট, আবার এটি পরিবর্তিত হয়)।

ব্লগ উত্স


0
ffmpeg -i input.mp4 -filter:v "transpose=1,transpose=1" output.mp4

আমার জন্য কৌশলটি। কেন নিশ্চিত নয় যে ট্রান্সপোজ ফিল্টার একবারে 180 ডিগ্রি ঘোরানোর কোনও সম্ভাবনা সরবরাহ করে না, তবে যাই হোক না কেন। আরও তথ্যের জন্য দস্তাবেজগুলি পরীক্ষা করুন ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.