ffmpeg concat নিখুঁত পথে কাজ করে না


14

আমার নিখুঁত পথের সাথে কনক্যাট ব্যবহার করা দরকার, তবে এটি কাজ করে বলে মনে হচ্ছে না। ডকটিতে এটি বলেছে এটি কাজ করা উচিত। কারও ধারণা আছে কীভাবে এটি কাজ করবেন? ffmpeg ডক

এটি কাজ করে না কারণ এটি পাঠ্য ফাইল ডিরেক্টরিটিকে ফাইলের পথে সংযুক্ত করে

Impossible to open 'C:/temp/ffmpeg/c:/temp/ffmpeg/01.mov'

আমি উইন্ডোজ 7 ব্যবহার করি।

ffmpegTest.txt:
file 'c:/temp/ffmpeg/01.mov'
file 'c:/temp/ffmpeg/02.mov'

"Y:/Shotgun/bin/ffmpeg/bin/ffmpeg.exe" -f concat -i "C:/temp/ffmpeg/ffmpegTest.txt" -c copy "C:/temp/ffmpeg/test.mov
ffmpeg version N-58949-g0e575c2 Copyright (c) 2000-2013 the FFmpeg developers
  built on Dec  9 2013 22:06:49 with gcc 4.8.2 (GCC)
  configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libcaca --enable-libfreetype --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libx264 --enable-libxavs --enable-libxvid --enable-zlib
  libavutil      52. 58.100 / 52. 58.100
  libavcodec     55. 45.100 / 55. 45.100
  libavformat    55. 22.100 / 55. 22.100
  libavdevice    55.  5.102 / 55.  5.102
  libavfilter     3. 92.100 /  3. 92.100
  libswscale      2.  5.101 /  2.  5.101
  libswresample   0. 17.104 /  0. 17.104
  libpostproc    52.  3.100 / 52.  3.100
[concat @ 0000000000337920] Impossible to open 'C:/temp/ffmpeg/c:/temp/ffmpeg/01.mov'
C:/temp/ffmpeg/ffmpegTest.txt: Invalid argument

উত্তর:


16

আমি সবেমাত্র অনুরূপ ত্রুটি বার্তাগুলি দৌড়েছি। আমি অবশেষে এটি সন্ধান। দুটি বিষয় ছিল।

সংখ্যা 1:

যখন করছেন

ffmpeg -f concat -i <path_to_text_file> ...

path_to_text_file, ফরওয়ার্ড স্ল্যাশ, না ব্যাকস্ল্যাশ ব্যবহার করা আবশ্যক উইন্ডোজ এমনকি। এই বিধিটি কমান্ড লাইনের ভিডিও ফাইল পাথের জন্য প্রযোজ্য বলে মনে হচ্ছে না - কেবলমাত্র কমান্ড লাইনের পাঠ্য ফাইল পাথের জন্য।

সংখ্যা 2:

আপনার পাঠ্য ফাইলের মধ্যে তালিকাবদ্ধ পাথগুলি আপনার পাঠ্য ফাইলের অবস্থানের সাথে সম্পর্কিত বলে ffmpeg দ্বারা ব্যাখ্যা করা হয়েছে। (বিশেষত, তালিকাবদ্ধ পাথগুলি বর্তমান ওয়ার্কিং ডিরেক্টরিের সাথে তুলনামূলক নয়))

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

আশা করি এটি ভবিষ্যতে কাউকে সহায়তা করবে।


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

2

আপনি হয় একটি টেক্সট ফাইল ব্যবহার করতে পারেন যা ইনপুট ফাইলগুলির তালিকা এর মতো:

ffmpeg -f concat -i ffmpegTest.txt -c:v copy output.mov

অথবা

আপনি সুস্পষ্টভাবে ফাইলগুলির নাম এভাবে রাখতে পারেন:

ffmpeg.exe -f concat -i 'c:/temp/ffmpeg/01.mov' -i 'c:/temp/ffmpeg/02.mov' -c:v copy 'C:/temp/ffmpeg/output.mov'    

মনে রাখবেন যে আপনি একের পর এক 2 ইনপুট ব্যবহার করেন এবং তারপরে -c:v copyপুনরায় এনকোডিং হওয়া উচিত না - কেবল যোগদানের কথাটি ব্যবহার করুন। এছাড়াও, এটি কনক্যাট ডেমাক্সার । এটি নমনীয়, তবে একই কোডেক থাকতে 2 ইনপুট ফাইলের প্রয়োজন।

পাঠ্য ফাইলের বিষয়বস্তু আপনি যেমন লিখেছেন:

file 'c:/temp/ffmpeg/01.mov'
file 'c:/temp/ffmpeg/02.mov'

একক উদ্ধৃতি নোট করুন

জেনেরিক ফর্ম্যাটটি হ'ল:

file '/path/to/file1'
file '/path/to/file2'
file '/path/to/file3'

এটি একাধিক ড্রাইভ এবং পাথের জন্য প্রযোজ্য।

এখানে কাজ করে এমন একটি কনটেন্টেশন ফাইলের আসল উদাহরণ দেওয়া হল:

file '/run/media/rnx/New Volume1/PREMIER_OUTPUTEST/Sequence004.mpeg'
file '/home/rnx/Sequence003.mpeg'
file '/run/user/rnx/gvfs/users on edtmchn/Public/Sequence01.mpeg'

এটি জুড়ে:
একটি অভ্যন্তরীণ ড্রাইভ একই ডোমেনের অন্য উইন্ডোজ মেশিনে
একটি বাহ্যিক ইউএসবি ড্রাইভ
ওয়ান ড্রাইভ

কমান্ড ব্যবহারটি হ'ল:

ffmpeg -f concat -i conc.txt -c:v copy -strict -2 output.mpeg

এটি কোনও ত্রুটি ছাড়াই প্রত্যাশার মতো কাজ করে।


1
আমার একটি ফাইল ব্যবহার করা দরকার যেহেতু আমার প্রচুর ভিডিও থাকতে পারে। এবং ফাইলটিতে আমার নিখুঁত পথ দরকার
ডার্কপিক্সেল

আমি পারছি না, ফাইলটি একটি নেটওয়ার্ক ড্রাইভে এবং একাধিক ফোল্ডারে রয়েছে। আমি কোনও নির্দিষ্ট ডিরেক্টরি জোর করতে পারি না
ডার্কপিক্সেল

আমার সম্পূর্ণ ত্রুটিযুক্ত এই ত্রুটি রয়েছে: 'সি: / অস্থায়ী / ffmpeg / c: /temp/ffmpeg/01.mov' খুলতে অসম্ভব
ডার্কপিক্সেল

আপনি ত্রুটি পাচ্ছেন কারণ আপনার আদেশটি ভুল। উত্তর দেখুন।
রাজীব

1
এই উত্তরটি ffmpeg সংস্করণ N-90173, Win10, সিএমডি প্রম্পটে কেবল তখনই কাজ করে যদি -i প্যারামিটারে একক উদ্ধৃতি না থাকে এবং ফরোয়ার্ড স্ল্যাশ ব্যবহার না করা হয়: -i সি:
oo

2

লক্ষ্য করুন; উইন্ডোজে, আপনি যদি কোনও পাঠ্যফাইলে কনক্যাট ব্যবহার করছেন তবে পাঠ্যফাইলে পাথগুলি আউটপুট পাথের সাথে সম্পর্কিত হতে হবে ।

যেমন

ffmpeg -f concat -i file.txt "C:\foo\file.mp4"

যদি আপনার ফাইল ডিরেক্টরিতে অবস্থিত থাকে তবে C:\temp\bar.mp4আপনার পাঠ্য ফাইলটি এটির মতো দেখাচ্ছে:

file ..\temp\bar.mp4
...

1
"চরিত্র অনুপস্থিত ?
ডেভিডপস্টিল

2

ব্যবহার

ffmpeg.exe" -f concat -safe 0 -i fileWithAbsoluePaths.txt -c copy out.mov

তোমার ক্ষেত্রে

"Y:/Shotgun/bin/ffmpeg/bin/ffmpeg.exe" -f concat -safe 0 -i "C:/temp/ffmpeg/ffmpegTest.txt" -c copy "C:/temp/ffmpeg/test.mov

কীটি হচ্ছে- নিরাপদ 0 । এটি আপনাকে txt ফাইলটিতে পরম পথ রাখতে দেয়।


উইন্ডোজের নীচে একটি উত্তোলন রয়েছে যা আমার উত্তরে আচ্ছাদিত রয়েছে: superuser.com/a/1374679/598963
লিওন

2

@ এরিকের উত্তরটি কনক্যাট ডেমাক্সার ইনপুটটিতে পুরো পাথের অনুমতি দেওয়ার জন্য একটি গুরুত্বপূর্ণ নির্দেশ প্রদান করে (আপনাকে অবশ্যই -safe 0ffmpeg বিকল্প সরবরাহ করতে হবে )। যাইহোক, উইন্ডোজের অধীনে, ffmpeg এর কনক্যাট ডেমাক্সার সঠিকভাবে ডিস্কের নামের সাথে শুরু হওয়া নিখুঁত / সম্পূর্ণ পাথগুলি পরিচালনা করে না । যদিও এটির সুরক্ষা চেকগুলিতে এটি পুরো পাথগুলি সঠিকভাবে স্বীকৃতি দেয় তবে ফাইলটি খোলার সময় এটি সম্পর্কিত পাথকে আপেক্ষিক হিসাবে ভুল ব্যাখ্যা করে (কারণ তারা কোনও স্ল্যাশ দিয়ে শুরু করে না)। যেহেতু অ-নিরঙ্কুশ পাথগুলি কনক্যাট ডেমাক্সার ইনপুট স্ক্রিপ্টের অবস্থানের সাথে তুলনামূলক, ffmpegতাই ফাইলের পথে পরবর্তীটির পথটিকে পূর্বনির্ধারিত করে। যদি কনক্যাট স্ক্রিপ্ট কমান্ড লাইন আর্গুমেন্টে কোনও ফাইল পাথ বিভাজক (যেমন একটি ফাইলের নাম) না থাকে তবে সমস্যাটি মুখোশযুক্ত।

চিত্রণ:

concat.txt:
file 'c:/videos/01.flv'
file 'c:/videos/02.flv'


ffmpeg -f concat -safe 0 -i "C:/temp/concat.txt" -c copy "C:/temp/test.flv"
...
[concat @ 0000000000abcdef] Impossible to open 'C:/temp/c:/videos/01.flv'
C:/temp/concat.txt: Invalid argument


cd C:\temp
ffmpeg -f concat -safe 0 -i "./concat.txt" -c copy "C:/temp/test.flv"
...
[concat @ 0000000000abcdef] Impossible to open './c:/videos/01.flv'
./concat.txt: Invalid argument


ffmpeg -f concat -safe 0 -i "concat.txt" -c copy "C:/temp/test.flv"
# Works successfully!

-1

যদিও cmd.exeকেস-সংবেদনশীল, ffmpegএটি নয় (মূলত লিনাক্সে নির্মিত হচ্ছে, এটি * নিক্স শেল কনভেনশনগুলির দিকে ঝুঁকছে)। আপনি যদি নিজের c:ইনপুট ফাইলের প্রতিটি লাইনকে এতে পরিবর্তন করেন তবে C:এটি কাজ করা উচিত, আমি মনে করি।

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