একটি রেখার ffmpeg (বা অন্য) কেবল রেজোলিউশন পেতে?


9

আমি কমান্ড লাইনে সত্যিই পারদর্শী নই আশা করি এটি কোনও প্রশ্নের চেয়ে খুব বোকা নয়।

আমি যদি চালাতে পারি:

ffmpeg -i videofile.avi

আমি যেমন একটি আউটপুট পেতে:

ffmpeg version git-2013-11-21-6a7980e Copyright (c) 2000-2013 the FFmpeg develop    ers
  built on Nov 21 2013 12:06:32 with gcc 4.6 (Ubuntu/Linaro 4.6.3-1ubuntu5)
  configuration: --prefix=/home/user/ffmpeg_build --extra-cflags=-I/home/user/ffmpeg_build/include --extra-ldflags=-L/home/user/ffmpeg_build/lib --b        indir=/home/user/bin --extra-libs=-ldl --enable-gpl --enable-libass --enable    -libfdk-    aac --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-l    ibx264 --enable-    nonfree
  libavutil      52. 53.100 / 52. 53.100
  libavcodec     55. 44.100 / 55. 44.100
  libavformat    55. 21.100 / 55. 21.100
  libavdevice    55.  5.100 / 55.  5.100
  libavfilter     3. 91.100 /  3. 91.100
  libswscale      2.  5.101 /  2.  5.101
  libswresample   0. 17.104 /  0. 17.104
  libpostproc    52.  3.100 / 52.  3.100
Input #0, avi, from 'videofile.avi':
  Metadata:
    encoder         : Lavf52.68.0
  Duration: 00:23:07.68, start: 0.000000, bitrate: 2390 kb/s
    Stream #0:0: Video: mpeg4 (Simple Profile) (XVID / 0x44495658), yuv420p, 640x480     [SAR 1:1 DAR 4:3], 23.98 fps, 23.98 tbr, 23.98 tbn, 1199 tbc
    Stream #0:1: Audio: mp3 (U[0][0][0] / 0x0055), 44100 Hz, stereo, s16p, 128 k    b/s

যদি আমি কেবল "640x480" আউটপুট কমান্ডে আগ্রহী থাকি তবে আমি কীভাবে এটি করতে পারি?

আমি ভাবছি আমাকে নিয়মিত এক্সপ্রেশন করতে পাইপ করতে হবে, এবং সম্পাদন করতে হবে? কীভাবে করবেন তা ধারণা নেই। ধন্যবাদ!

উত্তর:


10

Ffmpeg সহ ভিডিও রেজোলিউশন পান:

ffmpeg -i filename 2>&1 | grep -oP 'Stream .*, \K[0-9]+x[0-9]+'

আউটপুট (উদাঃ):

640x480

মুড়ুর উত্তর অবশ্যই যথেষ্ট পরিমাণের চেয়ে বেশি ছিল, তবে এইটি আমার প্রশ্নের উত্তরটি যেমন জিজ্ঞাসা করা হয়েছে (যেমন, ffmpeg ব্যবহার করে) তার বিশেষভাবে উত্তর দেয়। আমি জানি না যে উত্তর চয়ন করার সাথে এখানে প্রোটোকলটি কী। এই ক্ষেত্রে, আমি মুরার উত্তরটি আরও সহায়ক বলে মনে করি এবং সাইরাস এর বিষয়বস্তু বেশি। দুঃখিত, কোন পথে যাবেন তা নিশ্চিত নন তবে এই মুহূর্তে আমি সাইরাসকে বেছে নিচ্ছি কারণ এটি আমি যা চেয়েছিলাম তা খুব স্পষ্টভাবেই বলা হয়েছে (তবে আমি মুরুর লোল ব্যবহার করছি)
বিসিএসটিভি

1
যদিও সাবধান। প্রশ্নের উদাহরণে দেখানো উদাহরণের ফলে গ্রেপ দুটি ম্যাচ উত্পাদন করবে (প্রথম 0x44...এবং দ্বিতীয়টি হচ্ছে রেজোলিউশন)।
মুরু

যদি ইনপুটটিতে একাধিক ভিডিও স্ট্রিম থাকে যেমন ডিভিডি থেকে ইনপুট থাকে তবে এই উত্তরটি width x heightএকাধিক লাইনে প্রতি ভিডিও স্ট্রিমটিকে আউটপুট দেবে । এর সাথে ইচ্ছে করলে ffprobeবা head -n 1উত্তরে কমান্ড যুক্ত করে এড়ানো যায় ।
লগইন

9

ffprobeFfmpeg প্যাকেজ থেকে ব্যবহার করা :

$ ffprobe -v error -select_streams v:0 -show_entries stream=width,height -of csv=s=x:p=0 input.mp4
  1280x720

আরও তথ্যের জন্য ffprobe ডকুমেন্টেশন এবং FFmpeg উইকি: ffprobe টিপস দেখুন।


ধন্যবাদ। Ffprobe সম্পর্কে অবগত ছিল না। এখানে এত সাহায্য! ধন্যবাদ সবাইকে.
বিসিটিভিউ

4
exiftool -b metavideo.mp4 -ImageWidth
exiftool -b metavideo.mp4 -ImageHeight

কোন grepএস ছাড়াই কাজ করুন

ওয়ান-লাইনার দেখতে দেখতে:

exiftool -b metavideo.mp4 -ImageSize

এটি আপনি যে ডাব্লুএক্সএইচ স্ট্রিংটি খুঁজছিলেন তা ফিরিয়ে দেয়।


এটি প্রযুক্তিগতভাবে ওয়ান-লাইনার নয়।
ডেভিড ফোস্টার

আমি লক্ষ্য করি নি যে এটি ওয়ান-লাইনার অনুরোধ করেছে, যাইহোক একই প্রস্থটি করে - ইমেজসাইজ পরামিতি ডাব্লুএক্সএইচ স্ট্রিং দেয়।
অ্যালেক্স ডলগভ

আবার প্রশ্নের শিরোনাম দেখুন! ;-) যাহাই হউক না কেন +1
ডেভিড ফোরস্টার

3

আমি এখানে কেবলমাত্র exiftoolএটির আউটপুট ব্যবহার এবং বিশ্লেষণের নমুনাগুলি দেখি যা একটি অদ্ভুত পছন্দ বলে মনে হয়। exiftoolরেজোলিউশন (এবং অন্য কোনও মেটাডেটা) পেতে সরাসরি উপায়ে ব্যবহার করা যেতে পারে:

exiftool -ImageSize -s3 filename

কোনও ফর্মের ফলাফল আউট হবে WIDTHxHEIGHT(eq 1280×720:)

দ্রষ্টব্য: -s3এক্সিফ্টোলকে স্বল্পতম আউটপুট ফর্ম্যাট (ট্যাগ নাম, কোট, ইত্যাদি ছাড়াই) উত্পাদন করতে নির্দেশ দেয়


2

আপনি নিয়মিত এক্সপ্রেশন ব্যবহার করে এটি করতে পারেন এবং ffmpegতবে আমি লাইবাইমেজ-এক্সিফ্টোল-পারল প্যাকেজের exiftoolঅংশটি ব্যবহার করতে পছন্দ করব :Libimage-exiftool-perl ইনস্টল করুন

$ exiftool some/video.ogv | awk -F' *: *' '$1 == "Image Size"{print $2}'
1242x480

কেন exiftool?

  • ffmpeg/ avprobeইউটিলিটি ফর্ম লাইনের প্রিন্ট Stream #0:0: Video: mpeg4 (Simple Profile) (XVID / 0x44495658), yuv420p, 640x480যেখানে ফর্ম এক বা একাধিক মান AAAxBBBসম্ভব (আপনার উদাহরণে দেখতে পারেন হিসাবে)। রেজোলিউশন কোনটি তা নির্ধারণ করা কঠিন হতে পারে।
  • exiftoolঅন্যদিকে, ফর্মটির তথ্য আউটপুট করে Type : Value। সুতরাং সঠিক ক্ষেত্রটি পাওয়া সহজ, যথা Image Size। এছাড়াও ক্ষেত্রগুলি নির্দিষ্ট করার (কোলন এবং হোয়াইটস্পেস দ্বারা পৃথক) নির্দিষ্ট করে দেওয়া হয়, আপনি সহজেই মানটি বের করতে পারেন।

কি awkকমান্ড করে হল:

  • ক্ষেত্রের বিভাজকটি সেট করুন ' *: *'- :কোনও সংখ্যক স্পেস দিয়ে ঘেরা একটি কোলন ।
  • প্রথম ক্ষেত্র ( $1) হয় কিনা তা পরীক্ষা করে দেখুনImage Size
  • এবং দ্বিতীয় ক্ষেত্রটি মুদ্রণ করুন ( print $2)।

একটি বিকল্প সংস্করণ হবে:

awk '/^Image Size/{print $4}'
  • ডিফল্টরূপে, ব্যবহারের হোয়াইটস্পেস ক্ষেত্র বিভক্ত, তাই করতে awk Image, Size, :এবং 1242x480সব বিভিন্ন ক্ষেত্র।
  • এর সাথে লাইনটির শুরু ( ^) এর সাথে মিলে Image Sizeআমরা সঠিক লাইনটি পাই।
  • এবং আমরা চতুর্থ ক্ষেত্রটি মুদ্রণ করি (যেহেতু Image, Sizeএবং :প্রথম তিনটি ক্ষেত্র)।

ধন্যবাদ! আমি আপনাকে "উবুন্টু_ফ্রি_কুলচার_শোভ্যাস / কিভাবে \ ফাস্ট.ogg" আরও সাধারণ কিছুতে পরিবর্তন করার জন্য আপনার উদাহরণটি সম্পাদনা করার পরামর্শ দিতে পারি। প্রথমে আমি এটি অক্ষরে অক্ষরে ব্যবহার করছিলাম কারণ আমি এটিকে কোনও ফাইলের নাম হিসাবে চিনতে পারি নি। অবশ্যই, আমি আমার ত্রুটিটি 2 সেকেন্ড পরে দেখেছি এবং আপনার সমাধানটি দুর্দান্ত কাজ করে!
বিসিটিভিউ

@ বিসিএসইভে আমি এটি ব্যবহার করেছি কারণ এটি উবুন্টু ডেস্কটপে ইনস্টল করা উদাহরণ সামগ্রীর অংশ (দেখুন /usr/share/example)। : ডি
মুড়ু

1

এর কিছুটা রহস্যজনক ব্যবহার mediainfoসহজেই আপনি একটি সাধারণ ওয়ান-লাইনার ব্যবহারের পরে যে ফর্ম্যাটটিতে রয়েছেন তার প্রস্থ এবং উচ্চতা সহজেই সরিয়ে ফেলবে। আমার সিস্টেমে নিম্নলিখিত উদাহরণটি পর্যবেক্ষণ করুন:

andrew@illium~$ mediainfo --Inform="Video;%Width%x%Height%" test.mp4
1920x1080

এভাবে আরও বিভিন্ন প্যারামিটার ব্যবহার করা যেতে পারে তবে এটি ব্যবহার করা যেতে পারে mediainfo --Info-Parametersতবে নিজেই এই সাধারণ ব্যবহারটি আপনার পক্ষে যথেষ্ট হবে ...


0

আমি forফাইলের ডিরেক্টরি থেকে রেজোলিউশন আহরণের জন্য একটি 1 লাইনার লুপ তৈরি করেছি ।

for i in $(ls "/root/vidz/dollabillz/"*); do eval $(ffprobe -v error -of flat=s=_ -select_streams v:0 -show_entries stream=width,height "$i"); size=${streams_stream_0_width}x${streams_stream_0_height}; echo $i $size; done;


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