FFMPEG ने flv को क्वालिटी खोए बिना mp4 में बदल दिया [डुप्लिकेट]


55

इस सवाल का पहले से ही यहाँ एक जवाब है:

वर्तमान में मैं एक .5bm और .mp4 फाइलों को HTML5 वीडियो प्लेयर के साथ उपयोग करने के लिए .flv फ्लैश फाइल को परिवर्तित कर रहा हूं।

_

मैं WEBM के लिए इस ffmpeg कमांड का उपयोग ffmpeg -i filename.flv -vcodec libvpx -acodec libvorbis filename.webm करता हूं: जो बहुत अच्छा काम करता है और फ़ाइल का आकार अपेक्षाकृत (समान) रहता है

_

MP4 के लिए मैं निम्नलिखित का उपयोग कर रहा हूं: ffmpeg -i filename.flv -sameq -ar 22050 filename.mp4

यह .mp4 ठीक करने के लिए कनवर्ट करता है और किसी भी गुणवत्ता के नुकसान को रोकता है लेकिन फ़ाइल का आकार आकार में लगभग तीन गुना है।

बहुत अधिक गुणवत्ता खोने और बहुत अधिक फ़ाइल आकार को रोकने के बिना MP4 में बदलने के लिए क्या ffmpeg सूत्र का उपयोग किया जा सकता है?

जवाबों:


57
ffmpeg -i filename.flv -c:v libx264 -crf 19 -strict experimental filename.mp4

आपको उपयोग किए गए वीडियो कोडेक को निर्दिष्ट करना होगा। आपके आदेश में आप निर्दिष्ट नहीं करते हैं -vcodecया -c:vइसलिए ffmpeg MP4 ( mpeg4) के लिए डिफ़ॉल्ट कोडेक का उपयोग करता है जिसमें बहुत अच्छी संपीड़न दक्षता नहीं है। इसके बजाय libx264 का उपयोग करने का प्रयास करें और CRF सेट करें, जो गुणवत्ता स्तर है (कम बेहतर है, डिफ़ॉल्ट 23 है, और समझदार मान 18 और 28 के बीच हैं)।

Libx264 के साथ एन्कोडिंग एक तरह का जटिल है, इसलिए आपको H.264 एन्कोडिंग गाइड को देखना चाहिए ।

आपको यह भी निर्दिष्ट करने की आवश्यकता है -strict experimentalअन्यथा आपको मिल सकता है: "एनकोडर 'एएसी' प्रायोगिक है लेकिन प्रायोगिक कोडेक सक्षम नहीं हैं, यदि आप इसका उपयोग करना चाहते हैं तो '-स्ट्रिक्ट -2' जोड़ें।"


1
इसमें इतना समय लगता है और परिणामस्वरूप mp4 बहुत विकृत होता है, पिक्सल खो जाता है आदि। कोई भी विचार ऐसा क्यों हो सकता है? : /
ट्रैनोसैसिस

Mp4 प्रारूप के लिए डिफ़ॉल्ट वीडियो कोडेक आवश्यक नहीं है mpeg4ffmpeg --help muxer=mp4मेरी मशीन के आउटपुट के अनुसार , ffmpeg h264 का उपयोग mp4 के डिफ़ॉल्ट वीडियो कोडेक के रूप में करता है।
डबलडाउन

1
@doubleDown मेरा जवाब पुराना है - 2011 से। उन्होंने तब से किसी समय चूक को बदल दिया था।
साशोअल्म

43

यह कमांड केवल रेनकोडिंग के बिना कंटेनर को बदलता है

ffmpeg -i input.flv -codec copy output.mp4

क्या आप एक ही फ़ोल्डर में कई वीडियो के बैच रूपांतरण के लिए एक स्क्रिप्ट बनाने का तरीका जान सकते हैं?
ttoine

हाँ, विंडोज़ पर फ़ाइल Convert.bat बनाएँ और इस कोड को उसमें डालें: for %%a in ("*.flv") do ffmpeg -i "%%a" -codec copy "%%~na.mp4"फिर
Convert.bat

1
मेरे लिए यह थ्रो आउटपुट फ़ाइल # 0 (गलत कोडेक पैरामीटर?) के लिए हेडर नहीं लिख सका: अमान्य तर्क। कोई विचार? : /
ट्रैनोसैसिस

2
@trainoasis आपके .flv में H.264 वीडियो और AAC ऑडियो नहीं है। -codec copyएक .mp4 फ़ाइल से अछूता ऑडियो / वीडियो डेटा की प्रतिलिपि बनाना केवल बहुत ही दुर्लभ मामले में काम करता है जहां ऑडियो और वीडियो पहले से ही H.264 और AAC के साथ एन्कोड किए गए हैं । देखें superuser.com/a/1009539/390946 और addpipe.com/blog/flv-to-mp4
ऑक्टेवियन नाइकू

3

avconvऔर ffmpegअनिवार्य रूप से एक ही चीज हैं। [के रूप में बहुत हाल ही में कुछ विचलन है, लेकिन अगर आप अपना खुद का संकलन करते हैं तो घर के बारे में लिखने के लिए वास्तव में बहुत ज्यादा नहीं है ffmpeg[उदाहरण के लिए उबंटू रिपॉज में प्रदान किया गया ओएलडी है और उस वीडियो के आकार से ग्रस्त है, यह ब्ला ब्ला ब्ला डील नहीं है] मूल रूप से कोशिश करता है आपको यह बताने के लिए कि वीडियो में गलत अनुपात है], लेकिन अगर आप ffmpegसंकलन गाइड को पढ़ने और इसे संकलित करने के लिए परेशान हैं, तो इसमें पुराने संस्करणों के मुद्दों में से कोई भी नहीं है जो अधिकांश ओएस में स्टॉक में आते हैं। मूल्यह्रास चेतावनी की चर्चा करते हुए avconvकह रहा है कि वे कोशिश करते हैं और बदलने के लिए एक नए util बनाया है ffmpeg, लेकिन यह इतना बड़े पैमाने पर इस्तेमाल कि भले ही वे यह हम से softlinks बनाने सब किया जाएगा काट करने की कोशिश की avconvकरने के लिएffmpeg वैसे भी वे काम को रोकने और इसे छोड़ने के लिए नहीं जा रहे हैं।]]

यह उपयोग करने के लिए एक बुरी बात नहीं है avconv, मैंने सिर्फ एक उत्तर को मूल्यह्रास चेतावनी का उल्लेख करते देखा है जो अनिवार्य रूप से एक खाली संदेश है ffpmeg के विकल्प के लिए अधिक होना चाहिए आप एवोकन की कोशिश कर सकते हैं जो यहां के मामले के लिए अधिक सच है।

avconv -i inputfile.flv -map 0 -c:v libx264 -c:a copy outputfile.mp4

वास्तव में के रूप में ही है

ffmpeg -i filename.flv -vcodec libvpx -acodec libvorbis

अनिवार्य रूप से पहले में आप छोटे हाथों वाले विकल्पों का उपयोग कर रहे हैं और दूसरे में अधिक लिखित विविधता है।

एएलएसओ -map 0ऑडियो ट्रैक्स का जिक्र कर रहा है, इसलिए यदि कुछ ऐसा उपयोग किया जाए mp4aजो मल्टी ऑडियो ट्रैक्स को ठीक तरह से हैंडल कर सके तो आप इस ऑडियो को सभी ऑडियो स्ट्रीम को कॉपी करने के लिए छोड़ सकते हैं। यह केवल तभी आवश्यक है जब एक कोडेक का उपयोग किया जाए जो एक ही फाइल में कई ऑडियो ट्रैक्स का समर्थन नहीं करता है तो आप आवश्यक ऑडियो को मैप करना चाहेंगे और सभी को नहीं। बेशक अगर इस्तेमाल की गई जगह को कम से कम करने की कोशिश की जाए, तो आप फ़ाइल को बंद करने के लिए बस थोड़ा सा आकार देने की कोशिश कर सकते हैं [ऑडियो ऐसा है जैसे वीडियो ट्रैक का आकार 1/3 हो [और वह उदार हो]]।

-c:v = codec(video)इसलिए: -c:v libx264उपयोग के रूप में ही है: -vcodec libx264FYI करें; इस उदाहरण के साथ भी:-c:v copy = -vcodec copy

और इसके अलावा FLV के लिए सावधान रहना flv फ़ाइल एक AVI के समान है जिसमें यह एक कंटेनर है जिसमें वीडियो या ऑडियो के लिए किसी भी संख्या में कोडेक्स हो सकते हैं। आप चुनाव से पहले मीडिया निरीक्षण उपयोगिता का उपयोग करना चाहते हैं, यह देखने के लिए कि फ़ाइल के भीतर क्या उपयोग किया जाता है, इससे पहले कि आप या तो वीडियो और / या ऑडियो स्ट्रीम को कॉपी करें या यदि आप इसे जो कुछ नया करना चाहते हैं, से प्रसारित करना चाहते हैं। तो एक FLV के लिए सबसे अच्छा काम करने वाली कमांड किसी अन्य FLV के लिए समान नहीं हो सकती है [बेशक] अगर एक ही स्रोत से कई FLV प्राप्त कर रहे हैं तो उन्हें उसी तरह से एन्कोड किया जाएगा लेकिन यह कभी भी गारंटी नहीं है]।

नाइट पिक लेने की कोशिश नहीं करना बस वेब खोज में इस पार चला गया और लोगों के लिए चीजों को थोड़ा स्पष्ट करने में मदद करने की कोशिश करना चाहता था।

इस उत्तर के रूप में फिर से नीचे दिए गए उत्तर के लिए यह एक यस चल रहा ffmpeg हमेशा उस संदेश को पोस्ट करेगा जो अनिवार्य रूप से खोखला है क्योंकि ये 2 बर्तन वास्तव में अभी भी बहुत कम अंतर के साथ केवल एक ही उपयोग हैं। आपको लगभग सभी मामलों में या तो कमांड का उपयोग करके सटीक समान परिणाम प्राप्त करने चाहिए। यह जरूरी नहीं कि पूर्ण री-ट्रांसकोड हो, क्यों? ए, अगर इसकी आवश्यकता नहीं है, तो यह एक टन का समय बचाता है, और बी यदि आप एक फाइल को फिर से ट्रांसकोड करते हैं तो यह पहले से ही एक वीडियो कोडेक में संकुचित हो गया है, आप अनिवार्य रूप से उस चीज के खिलाफ एक संपीड़न दिनचर्या चला रहे हैं जो पहले से संपीड़ित है और हमेशा परिणाम देगा स्रोत से कम गुणवत्ता में। अधिकांश नए कोडेक कुछ हद तक संगत होते हैं [सभी] जैसे कि एक flv techinically एक FLV रैपर के रूप में एक MP4 हो सकता है क्योंकि FLVs जैसे AVI सिर्फ अन्य कोडेक के कंटेनर हैं। इसलिए, यह इस बात पर निर्भर करता है कि वीडियो के लिए स्रोत flv और ausio codec की तुलना में क्या आप इसे इस रूप में परिवर्तित कर रहे हैं कि क्या इसे बिल्कुल ट्रांसकोड करने की आवश्यकता है। अगर FLV के भीतर वे ऑडियो के लिए H264 MP4 वीडियो और MP4a का उपयोग करते हैं, तो आपको उस चीज़ को फिर से ट्रांसकोड करने की आवश्यकता नहीं होगी जो आपको केवल इसे कॉपी करने और फ़ाइल हेडर को समायोजित करने की आवश्यकता होगी, इसलिए इसे MP4 वीडियो के बजाय एक सच्चे MP4 के रूप में पढ़ा जाता है एक FLV फ़ाइल के अंदर।


3

इस गाइड के अनुसार , FL को MP4 में बदलने के लिए बिना किसी एवी कोडिंग के उचित कमांड यह है:

ffmpeg -i input.flv -c copy -copyts output.mp4

यह AVC वीडियो और AAC या MP3 ऑडियो के साथ सभी मामलों में मेरे लिए पूरी तरह से काम करता है।


-1

Ffmpeg का उपयोग करते समय मुझे एवोकॉन का उपयोग करने के लिए पदावनति की चेतावनी मिली। Avconv के उपयोग से मुझे अच्छे परिणाम मिले:

avconv -i inputfile.flv -map 0 -c: v libx264 -c: एक कॉपी outputf2.p4

man avconvअधिक जानकारी के लिए पढ़ें ।


1
ffmpegखुद को पदावनत नहीं किया जाता है । अच्छा लगने का कारण यह है कि आप x264 एनकोडर को निर्दिष्ट करते हैं जिसमें गुणवत्ता के लिए अच्छी डिफ़ॉल्ट सेटिंग्स हैं।
slhck

-2

मेरा सुझाव है कि आप इसके लिए एक शेल स्क्रिप्ट बनाएं video_flv_to_mp4जिसमें निम्नलिखित सामग्री हो:

ffmpeg -i $1 -sameq -ar 22050 -vcodec libx264 $1.mp4 

फिर इसे इस तरह चलाएं:

$ video_flv_to_mp4 video.flv

यह आपको एक video.flv.mp4 फ़ाइल देगा।


4
-sameqअब ffmpeg के लिए एक वैध विकल्प नहीं है। इसका अर्थ "समान गुणवत्ता" भी नहीं है। इस पोस्ट को भी देखें ।
slhck
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.