বন্ধুত্বপূর্ণ উপায়ে ffmpeg তথ্য পান


108

আমি যখনই ffmpeg এর সাথে আমার ভিডিও ফাইলগুলি সম্পর্কে কিছু তথ্য পাওয়ার চেষ্টা করি তখন এটি ভাল জিনিসগুলির সাথে মিশে প্রচুর অকেজো তথ্য দেয়।

আমি ব্যবহার করছি ffmpeg -i name_of_the_video.mpg

বন্ধুত্বপূর্ণ উপায়ে পেতে যে কোনও সম্ভাবনা আছে? আমার অর্থ JSON দুর্দান্ত হবে (এবং এমনকি কুশ্রী এক্সএমএলও ভাল)।

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

আমি এরকম কিছু চাইছিলাম:

{
  "Stream 0": {
     "type": "Video",
     "codec": "h264",
     "resolution": "720x480"
  },
  "Stream 1": {
     "type": "Audio",
     "bitrate": "128 kbps",
     "channels": 2
  }
}

3
আপনি কি এফএফপ্রোব একবার দেখেছেন ? এটি একটি JSON পঠনযোগ্য আউটপুট সরবরাহ করে বলে মনে হচ্ছে।
এনটি

আমি এটি ইতিমধ্যে দেখেছি কিন্তু JSON আউটপুট ফর্ম্যাটটি খুঁজে
পাইনি

উত্তর:


292

কিছুটা দেরি হলেও এখনও কারও সাথে প্রাসঙ্গিক ..

ffprobeসত্যিই যেতে একটি দুর্দান্ত উপায়। নোট, যদিও, আপনি বলতে চাই ffprobeকি তথ্য আপনি এটা প্রদর্শন করাতে চান না (এর সাথে -show_format, -show_packetsএবং -show_streamsঅপশন) অথবা এটা শুধু আপনার ফাঁকা আউটপুট দেব (যেমন আপনি আপনার মন্তব্য এক উল্লেখ)।

উদাহরণস্বরূপ, ffprobe -v quiet -print_format json -show_format -show_streams somefile.asfনিম্নলিখিতগুলির মতো কিছু পাওয়া যাবে:

{
  "streams": [{
    "index": 0,
    "codec_name": "wmv3",
    "codec_long_name": "Windows Media Video 9",
    "codec_type": "video",
    "codec_time_base": "1/1000",
    "codec_tag_string": "WMV3",
    "codec_tag": "0x33564d57",
    "width": 320,
    "height": 240,
    "has_b_frames": 0,
    "pix_fmt": "yuv420p",
    "level": -99,
    "r_frame_rate": "30000/1001",
    "avg_frame_rate": "0/0",
    "time_base": "1/1000",
    "start_time": "0.000",
    "duration": "300.066",
    "tags": {
        "language": "eng"
    }
  }],
  "format": {
    "filename": "somefile.asf",
    "nb_streams": 1,
    "format_name": "asf",
    "format_long_name": "ASF format",
    "start_time": "0.000",
    "duration": "300.066",
    "tags": {
        "WMFSDKVersion": "10.00.00.3646",
        "WMFSDKNeeded": "0.0.0.0000",
        "IsVBR": "0"
    }
  }
}

1
কারও যদি প্রয়োজন হয়, আমি সেই উত্তরের ভিত্তিতে একটি পিএইচপি সমাধান লিখেছি: স্ট্যাকওভারফ্লো
পাওলো ফ্রেইটাস

এটি খননের জন্য দুঃখিত, তবে এটির গতি বাড়ানোর কোনও সুযোগ আছে কি? আউটপুটটি দেখাতে এটি 5-6 সেকেন্ড সময় নেয়
ম্যাঙ্গিয়া

এই চূড়ান্ত বাক্যটি ঠিক আমার যা প্রয়োজন ছিল। ধন্যবাদ :)
ম্যাট ফ্লেচার

5
লোক ... 4 বছর আগে একটি মন্তব্যে একটি প্রশ্ন জিজ্ঞাসা উত্তর পাওয়ার প্রায় শূন্য সুযোগ আছে ...
প্যাট্রিক

1
আপনি -of jsonপরিবর্তে ব্যবহার করতে পারেন -print_format jsonavprobeপূর্বেরটির সাথে সামঞ্জস্য হয় যদিও পরেরটি নয়।
চিহ-হুশান ইয়েন

15

এর -progress -দ্বারা ফর্ম্যাট করা বন্ধুত্বপূর্ণ তথ্য মুদ্রণের জন্য এখন ব্যবহার করা সম্ভব key=value

ffmpeg  -i video.mp4 .......-s 1920x1080 -progress - -y out.mp4

speed=5.75x
frame=697
fps=167.7
stream_0_0_q=39.0
bitrate=2337.0kbits/s
total_size=6979778
out_time_ms=23893333
out_time=00:00:23.893333
dup_frames=0
drop_frames=0

3
জানা ভাল. আমি অবাক হয়েছি কেন ডক্সে এটি উল্লেখ করা হয়নি ।
দুভরাই

এটা ভাল! "-" - দস্তাবেজে উল্লেখ না করার কারণ হ'ল "-" এর অর্থ কেবল স্টাডাউট করার জন্য
ক্রিস ডাব্লু

13

আপনি চেষ্টা করতে পারেন ffprobe। JSON আউটপুট পেতে সঠিক কমান্ডটি নিম্নলিখিতগুলির মতো হওয়া উচিত:

ffprobe ... -print_format json

2
আমি সর্বাধিক নতুন ffmpeg সংকলন করেছি তবে প্রোগ্রামটির জসন আউটপুট কেবল {}। আমার কাছে থাকা ভিডিও ফাইলগুলির সাথে এটি কাজ করছে বলে মনে হচ্ছে না ...
জেবার্নার্ডো

2
@ জেবার্নার্ডো আরে, অন্য কেউ যদি এর মধ্যে চলে যায় তবে আপনাকে তার পরিবর্তে -প্রিন্ট_ফর্ম্যাটটি করতে হবে-না হলে এটি কেবল একটি খুব অপ্রয়োজনীয় will ... সাধারণ প্রিন্ট আউটপুট এখানে করবে ...}, এর জন্য গৃহীত উত্তরটি দেখুন উদাহরণ কমান্ড লাইন
মোগ্রান্ডি

0

যার আর একটি ব্যবহার ffprobeসুন্দরভাবে বিশ্লেষণযোগ্য:

ffprobe -v error -select_streams v:0 -show_entries stream=width,height,r_frame_rate,bit_rate,codec_name,duration -of csv=p=0:s=x video.mp4

ফলাফল স্বরূপ:

h264x600x480x25/1x385.680000x542326

-select_streams v:0শুধুমাত্র ভিডিও স্ট্রিম নির্বাচন করে। আপনি যদি সেই প্যারামিটারটি সরিয়ে থাকেন তবে প্রতিটি স্ট্রিমের জন্য একটি লাইন পাবেন।

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