क्या ffmpeg कमांड लाइन सभी उपकरणों में वीडियो को अधिक संगत बनाता है?


16

इसलिए मेरे पास उपयोगकर्ता हैं जो कह रहे हैं कि H264 वीडियो MP4 के ऐप्पल के आईपैड पर ऑडियो प्ले नहीं करते हैं और मुझे एंड्रॉइड पर भी ठीक से खेलने के लिए MP4 वीडियो प्राप्त करने के लिए संघर्ष करना पड़ता है।

दो अलग-अलग कमांड लाइन हैं कमांड लाइन क्या है जो मुझे उपयोग करना चाहिए।

-profile:v baseline -level 3.0

तथा :

-vpre baseline

मुझे क्या उपयोग करना चाहिए जिससे यह सभी उपकरणों के साथ काम कर सके?

मैंने यह भी पढ़ा है कि यह ऑडियो बिटरेट हो सकता है मेरी वर्तमान ऑडियो बिटरेट है

-ab 192k

शायद मुझे इसे कम करना चाहिए

-ab 160k

कमांड लाइन का उपयोग एमपी 3 ऑडियो को MP4 फ़ाइलों में एन्कोड करने के लिए किया जाता है।

"C:/server/ffmpeg/bin/ffmpeg.exe" -y -i Z:/server/websites/ps/public_www/media/com_hwdmediashare/files/55/ac/fb/54bbf30bb11a0f6b9dc832114c26fd29.mp4 -strict experimental -acodec libmp3lame -ar 44100 -ac 2 -ab 192k -s 480x360 -aspect 16:9 -r 24000/1001 -vcodec libx264 -b:v 1000k -minrate 800k -maxrate 1000k -bufsize 800K -crf 18 -preset veryslow -f mp4 -threads 0 -movflags +faststart Z:/server/websites/ps/public_www/media/com_hwdmediashare/files/55/ac/fb/98382d43d31d4ff91ea44cb2aa1bbc49.mp4 2>&1

जवाबों:


26

पहले आपको FFmpeg प्रोफाइल और डायरेक्ट कमांडलाइन विकल्पों का उपयोग करने के बीच अंतर को समझना चाहिए। या जहाँ भी ffmpeg स्थापित किया गया था उसमें स्थित फ़ाइल -vpreका उपयोग करता है। यह विकल्प = मूल्य युग्मों की एक श्रृंखला है , और आपके मामले में आपको इसे स्वयं परिभाषित करना होगा (कम से कम मुझे एक पूर्व निर्धारित नहीं पता है जिसे ffmpeg के साथ शिप किया गया है)।.ffpreset/usr/share/ffmpeg/baseline

मैं प्रीसेट का उपयोग करने के खिलाफ सिफारिश करूंगा जब तक कि आप इसे स्वयं नहीं बनाते हैं और जानते हैं कि कमांड लाइन विकल्प क्या हैं। मैं वर्षों से ffmpeg का उपयोग कर रहा हूं, और मैंने कभी प्रीसेट का उपयोग नहीं किया है - मैंने वास्तव में कभी नहीं किया है।

अधिकांश उपकरणों के साथ संगत H.264 वीडियो बनाने के लिए एक सामान्य कमांड लाइन होगी:

ffmpeg -i <input> \
  -c:v libx264 -crf 23 -profile:v baseline -level 3.0 -pix_fmt yuv420p \
  -c:a aac -ac 2 -b:a 128k \
  -movflags faststart \
  output.mp4

कुछ नोट:

  • एचटीएमएल 5 में व्यापक समर्थन के लिए H.264 / AAC सबसे अच्छा संयोजन है। हालांकि जिन ब्राउज़रों के पास H.264 डिकोडर्स नहीं हैं, उन्हें VP8 / Vorbis वीडियो की भी आवश्यकता होगी। कुछ कमांड लाइन उदाहरणों के लिए, इस उत्तर को देखें । अन्य कोडेक्स के लिए विकिपीडिया का ब्राउज़र सपोर्ट पेज भी देखें ।

  • H.264 मोबाइल उपकरणों में भी अच्छा काम करता है।

  • -profile:v baselineऔर -level 3.0विकल्प केवल पुराने मोबाइल उपकरणों कि 264 की CPU- सघन सुविधाओं को संभाल नहीं सकता के लिए आवश्यक हैं। आप आमतौर पर इन्हें छोड़ सकते हैं या इसके बजाय उपयोग कर सकते हैं -profile:v main

  • सीआरएफ गुणवत्ता सेट करता है (1828 एक उचित सीमा है, कम का मतलब बेहतर गुणवत्ता है)। आप निश्चित रूप से -b:v 1000kया इसी तरह के साथ एक निश्चित बिटरेट का उपयोग कर सकते हैं । एक बिटरेट चुनें जो वीडियो के रिज़ॉल्यूशन से मेल खाता हो। कुछ कम शक्ति वाले उपकरण अनावश्यक रूप से उच्च बिटरेट को संभालने में सक्षम नहीं हो सकते हैं।

  • -movflags faststartके बाद से यह बजाय फ़ाइल की शुरुआत करने के लिए कंटेनर मेटाडाटा ले जाता है अंत में इसे छोड़ने का विकल्प, स्ट्रीमिंग के लिए आवश्यक है। इससे प्लेबैक तुरंत पूरी तरह से लोड होने वाली फ़ाइल के लिए प्रतीक्षा करने के बजाय शुरू हो जाएगा।

हालाँकि, यह सब आपके द्वारा लक्षित सभी उपकरणों के लिए न्यूनतम सामान्य भाजक को खोजने के लिए नीचे आता है, जो हमेशा मौजूद नहीं हो सकता है। निश्चित रूप से आप H.264 की तुलना में किसी अन्य (अर्थात, बदतर ) कोडेक का उपयोग नहीं करना चाहेंगे । वास्तव में, ग्राहकों को बेसलाइन-एन्कोडेड वीडियो की पेशकश करना भी समझदारी नहीं होगी जो मुख्य या उच्च प्रोफ़ाइल को डिकोड कर सकता है। आप कम डिकोडिंग जटिलता के खिलाफ गुणवत्ता बंद व्यापार करेंगे।

मेरे अनुभव से, एंड्रॉइड डिवाइस बस ठीक एक MP4 कंटेनर में AAC-LC ऑडियो के साथ बेसलाइन H.264 खेल सकते हैं। मुझे इससे कोई समस्या नहीं है। वास्तव में, कुछ डिवाइस उच्च प्रोफ़ाइल भी खेल सकते हैं, हालांकि यह आधिकारिक तौर पर समर्थित नहीं है। iOS आमतौर पर बेसलाइन H.264 को भी सपोर्ट करता है, लेकिन आप कुछ डिवाइस पर भी मेन प्रोफाइल का इस्तेमाल कर सकते हैं। कुछ दिशानिर्देशों के लिए यह पोस्ट देखें (जो थोड़ी पुरानी है)।

यदि आपके पास प्लेबैक समस्याओं वाले उपयोगकर्ता हैं, तो आपको यह पता लगाना होगा कि कौन सा वीडियो समस्याएँ पैदा कर रहा है, और हार्डवेयर और खिलाड़ी सॉफ़्टवेयर का उपयोग करने के बारे में अधिक जानकारी प्राप्त करें। तब हम उस विशेष मामले के निवारण के बारे में बात कर सकते थे।


1
इस तरह के एक विस्तृत जवाब के लिए धन्यवाद, मैं इसे फिर से पढ़ता रहता हूं :) इसके अलावा, मैं -acodec libmp3lame -ab 160k के साथ सांकेतिक शब्दों में बदलना और ipad Apple उपकरणों का उपयोग करने वाले उपयोगकर्ताओं से कह रहा हूं कि वे वीडियो देख सकते हैं, लेकिन ध्वनि नहीं सुन सकते इसलिए मुझे लगता है कि यह कुछ करना था ऑडियो कोडेक या बिटरेट। एंड्रॉइड और विंडोज उपयोगकर्ता कहते हैं कि यह ठीक है और उनके पास वीडियो स्ट्रीम में ऑडियो है इसलिए मैं अनिश्चित हूं कि एएसी के बजाय libmp3lame का उपयोग करने से ऐपल उपयोगकर्ताओं को वीडियो का कोई ऑडियो नहीं मिलेगा।
C0nw0nk

मैंने शायद ही कभी एमपी 3 ऑडियो MP4 कंटेनर में इस्तेमाल किया है। शायद AAC सुरक्षित विकल्प है।
slhck

वैसे मैं केवल एमपी 3 का उपयोग कर रहा हूं क्योंकि मुझे बिट_रेट मिलता रहा, aac के साथ चौड़ाई की ऊँचाई त्रुटियां मैंने libmp3lame पर स्विच कर दीं और वे सभी त्रुटियां बंद हो गईं और फिर Apple उपयोगकर्ता कहते हैं कि उनके पास कोई ऑडियो नहीं है, लेकिन फिर भी बाकी सभी एक ही फ़ाइल देख सकते हैं और यह ध्वनि के लिए ठीक है अन्य सभी उपकरणों पर, शायद मुझे एक बग मिला है जो जानता है :( और ऐप्पल एमपी के अनुसार ठीक होना चाहिए डेवलपर
।apple.com

@ user2068371 यह लिंक MPEG-2 परिवहन स्ट्रीम को संदर्भित करता है, न कि MP4 कंटेनर प्रारूप को।
ललगन

1
@ user2068371 मुझे MediaElementjs से कभी कोई समस्या नहीं है। H.264 और MP3 सभी ब्राउज़रों में समर्थित नहीं है । HTML5 वीडियो के लिए विशेष रूप से, हमेशा H.264 / AAC और संभवतः VP8 / Vorbis को एक कमबैक के रूप में उपयोग करें। यदि आपको AAC रूपांतरण की समस्या है, तो कृपया इसके बारे में एक नया प्रश्न पूछें और पूर्ण कमांड लाइन आउटपुट को भी शामिल करना सुनिश्चित करें।
19
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.