আমি কীভাবে কোনও ভিডিও ফাইলের অখণ্ডতা পরীক্ষা করতে পারি (এভিআই, এমপিইজি, এমপি 4)?


126

এই শিরোনামটি কিছুটা বিভ্রান্তিকর হতে পারে, সুতরাং আমাকে ব্যাখ্যা করতে দিন ...

আমি একটি ভিডিও ফাইল ডাউনলোড করছি ... এমপিইজি, এভিআই - অন্যতম জনপ্রিয় ফর্ম্যাট being এখন, যদি আমি এটি ডাউনলোড করি এবং ডাউনলোডটি উহমের মাঝখানে বিচ্ছিন্ন হয়ে পড়ে ... ডাউনলোড করুন, তবে উদাহরণস্বরূপ, উইন্ডোজ মিডিয়া প্লেয়ার কিছু ত্রুটি দেবে এবং এটি প্লে করতে অস্বীকার করবে (যদিও ফাইলটি রয়েছে, তবে বলি, 98% সম্পূর্ণ) তবে, কেএমপ্লেয়ার, বা মিডিয়াপ্লেয়ার ক্লাসিকের মতো খেলোয়াড়রা এ পয়েন্ট অবধি এটি চালিয়ে যাবে (সত্যিকার অর্থে, এটি ডাউনলোড করার সময় তারা এটি খেলতে পারে)।

সুতরাং, আমি আগ্রহী, ... ফাইলটি সুরক্ষিত করার জন্য ডাউনলোডের কোনও উপায় (ডাউনলোড ম্যানেজার এবং একই রকম) ব্যবহার না করেই সম্পূর্ণ ডাউনলোড করা হয়েছে, ভিডিও ফাইলটি পুরো ডাউনলোড করা হয়েছে কি না এবং এটি সম্পূর্ণ কিনা তা কীভাবে যাচাই করা যায়?


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

7
Incomplete MPEG should play with no problems.@ ববিন্স, প্রশ্নটি ছিল / কীভাবে দুর্নীতির তদন্ত করা যায়, কীভাবে একটি অসম্পূর্ণ ফাইল বাজানো যায় না। এমনকি যদি কোনও ফর্ম্যাট অসম্পূর্ণ ফাইল বাজানো সমর্থন করে, তবুও ফাইলটি বিন্যাসের বিশদগুলির সাথে সম্মতি না দিলে দুর্নীতির জন্য চেক করা সম্ভব হবে। উদাহরণস্বরূপ, আপনি এখনও একটি অসম্পূর্ণ প্লেইন-পাঠ্য ফাইলটি পড়তে পারেন, তবে আপনি এখনও সনাক্ত করতে পারবেন যে ফাইলটির কোনও বাক্যটির মাঝখানে শেষ হওয়ার পরে বা মাঝখানে স্পষ্টতই হারিয়ে যাওয়া তথ্যের একটি অংশ রয়েছে কিনা এমন সমস্যা রয়েছে কিনা।
সিনিটেক

উত্তর:


135

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

কমান্ড লাইন উদাহরণ: (লিনাক্স জন্য)

ffmpeg -v error -i file.avi -f null - 2>error.log

-v errorভারবোসিটির একটি নির্দিষ্ট স্তরের অর্থ (কিছু ত্রুটি যা সাধারণত লুকানো থাকে সেগুলি দেখানো কারণ তারা প্লেবেলিকে খুব বেশি প্রভাবিত করে না)।

আপনি ffmpeg ফাইল আউটপুট ফাইল সম্পর্কে কিছু জেনেরিক তথ্য সহ একটি সম্পূর্ণ ত্রুটি লগ পাবেন, সুতরাং সম্ভবত এটি আপনার মনোযোগ প্রয়োজন, ফিল্টারগুলির মাধ্যমে অনুরূপ ফাইলগুলির ব্যাচ চেক সম্পাদন করতে লেখা যেতে পারে can

উইন্ডোজের জন্য এফএফপিপেগও এখানে উপলব্ধ । স্ট্যান্ডার পুনর্নির্দেশ ব্যতীত কমান্ড লাইনটি প্রায় অভিন্ন হবে:

ffmpeg.exe -v error -i file.avi -f null - >error.log 2>&1

5
একই গতি যেন রূপান্তরিত হয়।
কারো

8
আর একটি বিকল্প ffprobeপ্যাকেজ সঙ্গে আসে ffmpeg। এটি কোনও রূপান্তর করে না তবে কেবল ফাইল থেকে মেটাডেটা তথ্য পড়ে। অতএব এটি মেটাডেটাতে ত্রুটি সনাক্ত করবে কিন্তু ফাইলের মধ্যে কোনও সমস্যা খুঁজে পাবে না। ব্যক্তিগতভাবে ffprobeআরও প্রক্রিয়া করার আগে আপলোডের দ্রুত যাচাই করতে ব্যবহার করা হচ্ছে
Mente

1
দুর্ভাগ্যক্রমে মুভিটি দেখার জন্য যতটা সময় লাগবে মনে হয়, তবে মনে হয় এটি কার্যকর হয়
ম্যাটপার্ক

3
যদি, ওপি হিসাবে বলা আছে, "উহ্মের মাঝখানে ডাউনলোডের বিভাজন ... ডাউনলোড", খুব সম্ভবত যে সমস্ত স্ট্রিমগুলি ব্যাহত হবে, তাই আপনি কেবল একটি অডিও ট্র্যাকের (ডাবলডিং -map) সীমাবদ্ধ করে এই ত্রুটিটি সনাক্ত করতে পারেন , যা অপারেশনে উল্লেখযোগ্যভাবে গতি বাড়িয়ে তুলবে: ffmpeg -v error -i in.mkv -map 0:1 -f null …যদি কোনও ত্রুটি হয়, তবে এটি বাইট অবস্থানটি লগ করবে যা আপনি ফাইলটি কাটাতে ব্যবহার করতে পারেন (একটি মেগাবাইট বা দুটি আগে নিরাপদ থাকতে) এবং তারপরে ডাউনলোড পুনরায় শুরু করতে পারেন।
লুমি

3
আমার কাছে পুরানো হেক্সস কোর প্রসেসরের 1 জিবি 1 ঘন্টা দীর্ঘ .mkv ফাইলটি পরীক্ষা করতে 4/2 মিনিট সময় লেগেছে। পরীক্ষার সময় সমস্ত কোর সর্বাধিক করা হয়েছিল। আমি হেক্স ফাইলটির একটি অনুলিপি সম্পাদনা করেছি এবং ক্ষতির অনুকরণের জন্য কিছু 00 টি ব্লক যুক্ত করেছেন। ত্রুটি লগ ত্রুটিগুলি সঠিকভাবে রিপোর্ট করেছে। ত্রুটিবিহীন ফাইলগুলি একটি খালি ত্রুটি ফিরে পেয়েছে
log

12

আমি ffmpeg -f nullউপরের ব্যবহারের ধারণা পছন্দ করি , তবে আমি আসলে সেই আউটপুটটি ব্যবহার করার প্রক্রিয়াটি স্বয়ংক্রিয় করতে চাই। বিশেষত, আমার সংগীত ভিডিও সংগ্রহের সাথে আমার প্রচলিত দৃশ্যটি হ'ল আমার কাছে এমন কয়েকটি ক্লিপ রয়েছে যার একই রেজোলিউশন রয়েছে এবং আমি সেই ফাইলগুলিকে সবচেয়ে বেশি ভাঙ্গা মুছে ফেলার জন্য যাচাইকরণ লগগুলি পৃথক করতে চাই।

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

#!/usr/bin/env python
import sys
import os
import re

t = os.popen('ffmpeg -v 5 -i "%s" -f null - 2>&1' % sys.argv[1]).read()
t = re.sub(r"frame=.+?\r", "", t)
t = re.sub(r"\[(.+?) @ 0x.+?\]", "[\\1]", t)
print t

উদাহরণ আউটপুট:

[mpeg1video]ac-tex damaged at 21 17
[mpeg1video]Warning MVs not available
[mpeg1video]concealing 22 DC, 22 AC, 22 MV errors
[mpeg1video]Warning MVs not available
[mpeg1video]concealing 22 DC, 22 AC, 22 MV errors
[mpeg1video]ac-tex damaged at 13 9

1
আপনি যদি এটি তৈরি করেন যাতে এটি ভাঙা অংশগুলি ভাল অংশগুলির সাথে প্রতিস্থাপন করে, এটি আরও ভাল হবে
akostadinov

এটি ব্যবহার করে আমি একটি ত্রুটি
পাচ্ছি

2
ট্রেসব্যাক (সর্বশেষতম কল শেষ): ফাইল "এফ: \ ফাইলচেক.পি", লাইন 6, <মডুল> টি = ওএসপিপেন ('ffmpeg -v 5 -i "% s" -f নাল - 2> & 1' এ % sys.argv [1]) পড়ুন () সূচকের ত্রুটি: তালিকা সূচকের বাইরে নেই
অক্ষিত রেওয়ারি

1

উইন্ডোগুলির জন্য, আপনি এই ব্যাট ফাইলটির সাথে বর্তমান ফোল্ডার এবং সমস্ত সাবফোল্ডার ভিডিওগুলির জন্য সতর্কতা 'ব্যাচ' পরীক্ষা করতে পারেন:

checkvideo.bat

@echo off

set "filtro=%1"
if [%filtro%]==[] (
    set "filtro=*.mp4"
    )

for /R %%a in (%filtro%) do call :doWork "%%a"

    PAUSE
    exit /B

:doWork
    C:\ffmpeg\bin\ffmpeg.exe -v error -i %1 -f null - > "%~1.log" 2>&1

ব্যবহার করুন:

checkvideo.bat [filter]

আপনি যদি একটি ফিল্টার না দেন তবে '* .mp4' পাবেন।

নমুনা: checkvideo.bat checkvideo.bat *.avi

সেটআপ: এখান থেকে উইন্ডোজের জন্য এফএফম্পেগ ডাউনলোড করুন: https://ffmpeg.zeranoe.com/builds/ এবং তাদের আনজিপ করুন C:\ffmpeg\bin\যেখানে আপনি আনজিপড নেই সেই পথের জন্য ব্যাট ফাইলে পরিবর্তন করুন পাথের checkvideo.batঅন্তর্ভুক্ত একটি ফোল্ডারে রাখুন বা তার ফোল্ডারটি এতে যুক্ত করুন পথ পরিবেশ পরিবর্তনশীল


হুয়ান আন্তোনিও টুবুর উত্তর আমার পক্ষে ভিডিও অখণ্ডতা যাচাই করার জন্য কাজ করছে। তবে আমি কীভাবে লগ ফাইলটি পড়তে পারি এবং যেখানে ভিডিও নষ্ট হয় তা সময় সনাক্ত করতে পারি। লগ উদাহরণ। [এইচ 264 @ 00000173649787c0] এমবি 64 7 ডিকোড করার সময় কিউস্কেল ডিফের ক্যাব্যাক ডিকোড ব্যর্থ হয়েছে [h264 @ 00000173649787c0] ত্রুটি, বায়ারস্ট্রিম 38638
জে ডাক

1

ফর্ম্যাটটিতে ffmpegপুনরায় পুনর্নির্মাণ করতে অন্য উত্তরগুলির সাথে সমস্যাটি nullহ'ল এটিতে সত্যই দীর্ঘ সময় লাগে। বিশেষত, আপনি যদি কোনও ডিরেক্টরিতে একাধিক ফাইল পরীক্ষা করতে চান।

একটি দ্রুত উপায় হ'ল সমস্ত ভিডিওর থাম্বনেইল তৈরি করা এবং থাম্বনেইল জেনারেশন কোথায় ব্যর্থ হয় তা দেখুন।

find . -iname "*.mp4" | while read -r line; do 
  line=`echo "$line" | sed -r 's/^\W+//g'`; 
  echo 'HERE IT IS ==>' "$line"; 
  if ffmpeg -i "$line" -t 2 -r 0.5 %d.jpg; 
    then echo "DONE for" "$line"; 
  else echo "FAILED for" "$line" >>error.log; 
  fi; 
done;

এই পদ্ধতিটি অন্যান্য পদ্ধতির তুলনায় খুব দ্রুত পরিণত হয়েছিল।

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


0

মিডিয়াআইএনফো আপনার যে কোনও ভিডিও ফাইল এড়ানো উচিত সে সম্পর্কে তথ্য পাওয়ার জন্য দুর্দান্ত সরঞ্জাম। এটি আপনার যে তথ্যটি চান তা হাইলাইট করতে সক্ষম হতে পারে।

আর একটি সরঞ্জাম হ'ল জিএসপট তবে এটি 2007 সাল থেকে আপডেট হয়নি।

প্রত্যেককে একটি ভাল ভাল এবং পরিচিত খারাপ ফাইল দেওয়ার চেষ্টা করুন এবং ফলাফলগুলির সাথে তুলনা করুন।

এটি আপডেট হওয়া বন্ধ না হওয়া পর্যন্ত আমি জিএসপট ব্যবহার করতাম, তারপরে মিডিয়াআইনফোতে স্যুইচ করতাম


1
আমার মেশিনে আমার জিএসপটের কিছু পুরানো সংস্করণ রয়েছে ... তবে এটি সম্পূর্ণ আলাদা কিছু (কোড / ডিকোড নির্ধারণ করে ...) এর একটি সরঞ্জাম। এর সাথে এর কোন যোগসূত্র নেই। আমি মিডিয়েনফো পরীক্ষা করে দেখব।
রুক :

জিএসস্পট যদি ফাইল আকার বা ফ্রেম গণনা সূচক থেকে প্রত্যাশার সাথে মেলে না তবে রিপোর্ট করবে (কোথাও বাম দিকে, আমি এটি ব্যবহার করার পরে এটি হয়ে গেছে!), পরবর্তী সংস্করণগুলিতে আরও কার্যকারিতা যুক্ত হয়েছে।
শেভেক

মিডিয়েনফো পুনরাবৃত্তভাবে ডিরেক্টরিগুলি স্ক্যান করতে পারে: বর্তমান ফোল্ডারটি থেকে সহজেই চালানো থেকে শুরু করে যে কোনও স্তরে সমস্ত ফাইলের একটি প্রতিবেদন পেতে mediainfo *
সিসিপিজ্জা

1
mediainfoস্পষ্টতই সম্পূর্ণতা পরীক্ষা করে না। আমি একটি 33 এমবি webmভিডিও ফাইল নিয়েছি এবং truncateএটি অর্ধেক পর্যন্ত রেখেছি । mediainfoএখনও উভয় জন্য প্রায় একই আউটপুট ছিল, দুর্নীতির কোন আপাত চিহ্ন। truncate1 এমবি ইনগ করার পরে এখনও আউটপুটটিতে দুর্নীতির কোনও সুস্পষ্ট লক্ষণ পাওয়া যায়নি। আপনি যদি আউটপুটটিতে আরও গভীর দৃষ্টিপাত করেন তবে কিছু বিপরীত তথ্য ছিল। তবে এই অংশগুলি ভিডিও ফাইলের ফর্ম্যাটের উপর নির্ভর করে, তাই আপনি এই সনাক্তকরণটি স্বয়ংক্রিয় করতে পারবেন না।
টিনো

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