আমি উবুন্টু ব্যবহার করছি, এবং ইউটিউব-ডিএল কমান্ডটি পুরোপুরি ঠিকঠাকভাবে কাজ করছে।
আমি খুব দীর্ঘ ভিডিওর অংশটিই ডাউনলোড করতে চাই। সুতরাং আমি ভিডিওটির কয়েক মিনিটের অংশটি ডাউনলোড করতে চাই। 13 মিনিট থেকে 17 মিনিটের উদাহরণ।
এটি করার কোনও উপায় আছে কি?
আমি উবুন্টু ব্যবহার করছি, এবং ইউটিউব-ডিএল কমান্ডটি পুরোপুরি ঠিকঠাকভাবে কাজ করছে।
আমি খুব দীর্ঘ ভিডিওর অংশটিই ডাউনলোড করতে চাই। সুতরাং আমি ভিডিওটির কয়েক মিনিটের অংশটি ডাউনলোড করতে চাই। 13 মিনিট থেকে 17 মিনিটের উদাহরণ।
এটি করার কোনও উপায় আছে কি?
উত্তর:
আমি বিশ্বাস করি না youtube-dl
একা আপনি যা করতে চান তা করবে। তবে আপনি এটিকে ffmpeg এর মতো একটি কমান্ড লাইন ইউটিলিটির সাথে একত্রিত করতে পারেন।
ইউটিউব-ডিএল ব্যবহার করে প্রথমে আসল URL টি অর্জন করুন:
youtube-dl -g "https://www.youtube.com/watch?v=V_f2QkBdbRI"
কমান্ডের আউটপুট অনুলিপি করুন এবং এটি -i
পরবর্তী কমান্ডের প্যারামিটারের অংশ হিসাবে আটকান :
ffmpeg -i "OUTPUT-OF-FIRST URL" -ss 00:00:15.00 -t 00:00:10.00 -c copy out.mp4
-ss
এই অবস্থান রাজ্যে প্যারামিটার ভিডিওতে 15 সেকেন্ড পর্যন্ত সমস্ত ইনপুট আপ বাতিল করার। -t
বিকল্প রাজ্যের 10 সেকেন্ডের জন্য ক্যাপচার। কমান্ডের বাকী অংশটি এটি এমপি 4 হিসাবে সঞ্চয় করতে বলে।
ffmpeg একটি জনপ্রিয় সরঞ্জাম এবং জনপ্রিয় ওএস সংগ্রহস্থল / প্যাকেজ পরিচালকদের যে কোনও একটিতে হওয়া উচিত।
ffmpeg -i "OUTPUT-OF-FIRST URL" -ss 00:13:00.00 -to 00:17:00.00 -c copy out.mp4
ffmpeg
আসলে আপনার নির্দিষ্ট করা অংশটি ডাউনলোড করবে।
ffmpeg $(youtube-dl -g 'https://www.youtube.com/watch?v=oHg5SJYRHA0' | sed "s/.*/-ss 00:05 -i &/") -t 01:00 -c copy out.mkv
-map 0:v -map 1:a -c:v libx264 -c:a aac
যা মানের উন্নতি করতে পারে। আমি youtube-dl -f bestvideo+bestaudio
সর্বোচ্চ মানের সংস্করণ পাচ্ছি তা নিশ্চিত করতে আমি যুক্ত করতে চাই ।
জনির উত্তরে যুক্ত করা:
youtube-dl -g "URL"
ভিডিও এবং অডিও স্ট্রিমগুলি পেতে ব্যবহার করুন ।
এখন ব্যবহার করুন:
ffmpeg -ss 12:15 -i "1st-URL" -ss 12:15 -i "2nd-URL" -t 5:15 -map 0:v -map 1:a -c:v libx264 -c:a aac output.mkv
-ss
প্রতিটি স্ট্রিমের জন্য আপনাকে বিকল্পটি ব্যবহার করতে হবে । আমি প্রায় 30 সেকেন্ড আগে এটি করার এবং পরে -ss 30
কোনও কী ফ্রেম হারাতে এড়াতে অন্যটি ব্যবহার করার পরামর্শ দিচ্ছি । আমার ইউটিউব ভিডিওগুলির একটি ব্যবহার করে এটির বাস্তব উদাহরণ's
youtube-dl -g https://www.youtube.com/watch?v=gESHIrvIQQo
আউটপুট:
https://r3---sn-mv-cvne.googlevideo.com/videoplayback/id/80448722bbc8410a/itag/298/source/youtube/requiressl/yes/mn/sn-mv-cvne/ei/BgifWfmmL4iE8wSlv47oCA/mm/31/pl/23/mv/m/ms/au/initcwndbps/11447500/ratebypass/yes/mime/video%2Fmp4/otfp/1/gir/yes/clen/5231968228/lmt/1502479662079137/dur/18575.164/key/dg_yt0/signature/4FFB9B0B7E1703B31F5D07DAD579B55F17EF7BAA.0CB63905C89DD4D33F90CF3AAD728F1ECDFCB9B3/mt/1503594423/ip/206.34.122.70/ipbits/0/expire/1503616102/sparams/ip,ipbits,expire,id,itag,source,requiressl,mn,ei,mm,pl,mv,ms,initcwndbps,ratebypass,mime,otfp,gir,clen,lmt,dur/
https://r3---sn-mv-cvne.googlevideo.com/videoplayback/id/80448722bbc8410a/itag/140/source/youtube/requiressl/yes/mn/sn-mv-cvne/ei/BgifWfmmL4iE8wSlv47oCA/mm/31/pl/23/mv/m/ms/au/initcwndbps/11447500/ratebypass/yes/mime/audio%2Fmp4/otfp/1/gir/yes/clen/295235970/lmt/1502480001536214/dur/18575.243/key/dg_yt0/signature/4CD42047D1D5C714377350905C1CC5CBA37C0009.6EED1FC92D17A096235C32E48F4B15DEF7DD99B0/mt/1503594423/ip/206.34.122.70/ipbits/0/expire/1503616102/sparams/ip,ipbits,expire,id,itag,source,requiressl,mn,ei,mm,pl,mv,ms,initcwndbps,ratebypass,mime,otfp,gir,clen,lmt,dur/
আমি ৪৩:০০ থেকে ৫০:১০ অবধি কাটতে চেয়েছিলাম তাই আমি -ss 42:30
উভয় ইনপুটগুলিতে (একটি ভাল কীফ্রেম ধরতে আমাকে কয়েক সেকেন্ড দিয়ে) করতে যাচ্ছি এবং তারপরে -ss 30
ইনপুটগুলির পরে 43:00-এ শুরু করতে পারি ।
আমি তারপরে map
ভিডিও 0:v
এবং অডিও মানচিত্র করতে ব্যবহার করব 1:a
(0 এর অর্থ প্রথম ইনপুট, যা ভিডিও এবং 1 এর অর্থ দ্বিতীয় ইনপুট, যা অডিও হয়) এবং তারপরে আমার এনকোডিং বিকল্পগুলি চয়ন করব।
ffmpeg -ss 42:30 -i "https://r3---sn-mv-cvne.googlevideo.com/videoplayback/id/80448722bbc8410a/itag/298/source/youtube/requiressl/yes/pl/23/ei/5wCfWY6dBeOj8gSSxZaACQ/mv/m/initcwndbps/5055000/ms/au/mm/31/mn/sn-mv-cvne/ratebypass/yes/mime/video%2Fmp4/otfp/1/gir/yes/clen/5231968228/lmt/1502479662079137/dur/18575.164/key/dg_yt0/beids/%5B9466591%5D/mt/1503592562/signature/8CCFBF5CAB97341D0CB1F34E85AB6EE20FC7A03E.7679F39A8603CF41A95F10232E2A921EB0774101/ip/206.34.122.70/ipbits/0/expire/1503614279/sparams/ip,ipbits,expire,id,itag,source,requiressl,pl,ei,mv,initcwndbps,ms,mm,mn,ratebypass,mime,otfp,gir,clen,lmt,dur/" -ss 42:30 -i "https://r3---sn-mv-cvne.googlevideo.com/videoplayback/id/80448722bbc8410a/itag/140/source/youtube/requiressl/yes/pl/23/ei/5wCfWY6dBeOj8gSSxZaACQ/mv/m/initcwndbps/5055000/ms/au/mm/31/mn/sn-mv-cvne/ratebypass/yes/mime/audio%2Fmp4/otfp/1/gir/yes/clen/295235970/lmt/1502480001536214/dur/18575.243/key/dg_yt0/beids/%5B9466591%5D/mt/1503592562/signature/4AACC8E27F9036D36D4D623A771A9F2BAC4674BA.7E4F4FB4DC023E3FE491A991F0F9F2329648DE9D/ip/206.34.122.70/ipbits/0/expire/1503614279/sparams/ip,ipbits,expire,id,itag,source,requiressl,pl,ei,mv,initcwndbps,ms,mm,mn,ratebypass,mime,otfp,gir,clen,lmt,dur/" -map 0:v -map 1:a -ss 30 -t 7:10 -c:v libx264 -c:a aac gog-vs-triv.mkv
-i
পতাকাটি ইউআরএল নিতে পারে। ঝরঝরে
এই বৈশিষ্ট্যটির অনুরোধটি ইউটিউব-ডিএল-তে এখনও প্রয়োগ করা হয়নি। # 622 সংখ্যা এবং গিথুব এ এর বহু নকল দেখুন on
youtube-dl
অন্তর্নিহিত পোস্টপ্রসেসরের কাছে আর্গুমেন্টগুলি সমর্থন করে (সংস্করণ 2017.08.27.1 এর সাথে পরীক্ষিত):
youtube-dl -x --postprocessor-args "-ss 00:13:00.00 -t 00:04:00.00" https://youtu.be/...
এটি ffmpeg
প্রথমে ফাইলটি ডাউনলোড করার পরে নিজের সাথে পোস্টপ্রসেসিংয়ের মতোই ।
unable to obtain file audio codec with ffprobe
ত্রুটি হচ্ছে আপনি কি আমাকে এটি সাহায্য করতে পারেন? আমি CentOS 7
-x
পতাকাটি কেবল অডিও ডাউনলোড করে। আপনি যদি অডিও এবং ভিডিও উভয়ই চান তবে কমান্ড থেকে এটি ছাড়ুন। :)
আপনি পুরো জিনিসটি ডাউনলোড এবং সম্পাদনা না করে শুরু থেকে এক পয়েন্ট পর্যন্ত ডাউনলোড করতে পারেন । এই প্রশ্নটি এর অর্ধেক:
সাথে ডাউনলোডে বাধা দিন
^C
mp4
-F
উপলভ্য ফর্ম্যাটগুলি দেখতে ব্যবহার করুন এবং mp4
দুটিতে একটি চয়ন করুন । যেমন -f18
বা -f22
সাধারণত সেখানে থাকেহ্যাঁ. এটি একটি হ্যাক ।
আরও প্রশ্ন: আপনি যদি পৃথক ভিডিও এবং অডিও ফর্ম্যাটগুলি চান, তবে আপনি কি আলাদা আলাদাভাবে ( ^c
এখানে হিসাবে ব্যবহার করে ) প্রতিটি অংশ ডাউনলোড করতে পারবেন এবং সেগুলি ম্যানুয়ালি মার্জ করতে পারবেন? আমি মনে করি না এটি কিছু ফর্ম্যাটের জন্য কাজ করবে।
এটি ওপির প্রশ্নের সম্পূর্ণরূপে উত্তর দেয় না তবে সম্পূর্ণ স্ট্রিম ডাউনলোড না করেই একটি স্ট্রিম শুরু থেকে নির্দিষ্ট সময়কালে ডাউনলোড করার উপায় রয়েছে। যেহেতু ইউটিউব পুনঃসূচনা সমর্থন সরবরাহ করে, তাই আমরা Range
শিরোনাম ব্যবহার করে আংশিক সামগ্রীর জন্য অনুরোধ করতে পারি ।
আমরা প্রথমে স্ট্রিমের ইউআরএল আনি:
$ youtube-dl -g https://www.youtube.com/watch?v=yysk8s2vih8
https://r1---sn-npoeenee.googlevideo.com/videoplayback?source=youtu...
https://r1---sn-npoeenee.googlevideo.com/videoplayback?source=youtu...
এটিতে দুটি ইউআরএল আউটপুট করা উচিত (প্রতিটি ভিডিও এবং অডিও স্ট্রিমের জন্য)।
এই স্ট্রিমের মোট সামগ্রীর দৈর্ঘ্য আনতে এখন প্রথম ইউআরএলকে (যা ভিডিও স্ট্রিমের সাথে লিঙ্ক করে) একটি প্রধান অনুরোধ প্রেরণ করুন:
$ curl "1st-URL" -sI | grep Content-Length
Content-Length: 64380504
এখন, আমরা মোট সামগ্রীর দৈর্ঘ্যকে ভিডিওতে মোট সেকেন্ড দ্বারা ভাগ করি (ইউটিউব ভিডিওটির দৈর্ঘ্য 4 মিনিট এবং 7 সেকেন্ড যা 247 সেকেন্ড হয়)) আনুমানিক 1 সেকেন্ডের সামগ্রীর দৈর্ঘ্য পেতে:
64380504 / 247 ≈ 260650
আমরা এই মানটি দিয়ে গুন করি (শুরু থেকে আমরা যে সেকেন্ডে আনতে চাইছি +1)
(আমরা মেটাডেটা দ্বারা নেওয়া অতিরিক্ত জায়গার জন্য প্রায় একাউন্টে যোগ করি যা স্ট্রিমের শুরুতে স্থাপন করা হয়)
উদাহরণস্বরূপ প্রায় প্রথম 10 সেকেন্ড আনার জন্য, আপনাকে প্রথম 260650 * 11 = 2867150
বাইট আনতে হবে , সুতরাং আমরা Range
শিরোনামের সাথে একটি অনুরোধ করব :
$ curl "1st-URL" -H "Range: bytes=0-2867150" -o ten_secs.mp4
এটি কেবল প্রথম 10 সেকেন্ড ডাউনলোড করা উচিত। ডাউনলোড করা ফাইলটি খেলতে সক্ষম হওয়া উচিত তবে FFmpeg ভুল মেটাডেটা ঠিক করতে দেয়:
$ ffmpeg -i ten_secs.mp4 -c copy corrected_ten_secs.mp4
আমরা একই ধরণের অডিওর (২ য়-ইউআরএল) প্রাথমিক অংশটিও ডাউনলোড করতে পারি (সামগ্রীর দৈর্ঘ্য পৃথক হবে তবে মোট সেকেন্ড একই থাকবে)।
ভিডিও থেকে মধ্যের কোনও অংশ ডাউনলোড করাও এইভাবে সম্ভব হওয়া উচিত তবে সম্ভবত এটি অনেক বেশি জটিলতর হচ্ছে কারণ ইউটিউব স্ট্রিমের শুরুতে মেটাটাটা রাখে (প্রথম কয়েকটি বাইটে) এবং ডাউনলোড মিডিয়ায় উপস্থিত না হয়ে, স্ট্রিম মোটেও খেলবে না।
সম্পাদনা: ইউটিউব বলুন, এটি কেবল পুনরায়সূত্র সমর্থন সহ ওয়েবসাইটগুলিতে কাজ করবে। এটি অন্যান্য ওয়েবসাইটের জন্য কাজ করবে না।
Ffmpeg সম্পাদনা করতে (প্রসেসর) অডিও / ভিডিও আউটপুট পাস করার জন্য --postprocessor-args পরামিতি ব্যবহার করুন , সুতরাং ffmpeg ইনস্টল করা প্রয়োজন।
- পোষ্টপ্রসেসর-আরগস 3 টি আর্গুমেন্ট এবং মান নেয় (উদাহরণস্বরূপ, আরও রয়েছে, ffmpeg এর ম্যানুয়াল পৃষ্ঠা পরীক্ষা করুন):
উদাহরণ:
$ ইউটিউব-ডিএল - পোস্টপ্রসেসর-আরগস "-এসএস 0: 0: 15-থেকে 0: 1: 20" '[ভিডিও_ URL]'
$ youtube-dl - পোষ্টপ্রসেসর-আরগস "-এসএস 0: 0: 15 -t 0: 3: 5" '[ভিডিও_ URL]'
পিএস: ইউটিউব-ডিএল এটি প্রক্রিয়া করার আগে পুরো মিডিয়াটি ডাউনলোড করবে এবং পরে এটি সরিয়ে ফেলবে।