दोषरहित रूप से मुख्य धारा प्रारूप में फ़ाइल को कैसे परिवर्तित किया जाए?


13

मेरे पास एक फ़ाइल है जो .ts में समाप्त होती है (जैसे, यहाँ पहले 10 MB हैं )। मैं इसे और अधिक मुख्य धारा प्रारूप (जैसे, mp4, एमपीईजी 2-पीएस ...) में बदलना चाहता हूं, यदि संभव हो तो दोषरहित तरीके से (यानी, रीमूक्सिंग)।

मैंने पढ़ा है कि मैं .ts फ़ाइलों को किसी उपयोगी चीज़ में कैसे परिवर्तित करूँ? सवाल। मैंने avidemuxवीडियो और ऑडियो स्ट्रीम के लिए सेटिंग्स "कॉपी" और एमपीईजी के लिए "पीएस" कंटेनर प्रारूप के साथ प्रयास किया। वह त्रुटि संदेश "असंगत ऑडियो / डीवीडी के लिए विफल रहा है, ऑडियो 48 kHz MP2 (स्टीरियो), AC3, DTS या LPCM (स्टीरियो)" होना चाहिए।

मैंने सुझाए गए सीएलआई कमांड की भी कोशिश की।

avconv -i 10MB.ts -vcodec copy -acodec copy 10MB.mpg

आउटपुट फ़ाइल में सही वीडियो है, लेकिन कोई आवाज़ नहीं है, कम से कम जब वीएलसी के साथ खेला जाता है। यह काफी हैरान करने वाला है, क्योंकि avconvलगता है कि ऑडियो स्ट्रीम का सही पता लगाया गया है।

Input #0, mpegts, from '10MB.ts':
  Duration: 00:00:06.36, start: 51523.824800, bitrate: 12563 kb/s
  Program 37888 
    Stream #0.0[0x100]: Video: mpeg2video (Main), yuv420p, 1440x1080 [PAR 4:3 DAR 16:9], 20000 kb/s, 29.97 fps, 29.97 tbr, 90k tbn, 59.94 tbc
    Stream #0.1[0x110]: Audio: aac, 0 channels, fltp, 144 kb/s
    Stream #0.2[0x130]: Data: [6][0][0][0] / 0x0006
    Stream #0.3[0x138]: Data: [6][0][0][0] / 0x0006
    Stream #0.4[0x140]: Data: [13][0][0][0] / 0x000D
    Stream #0.5[0x160]: Data: [13][0][0][0] / 0x000D
    Stream #0.6[0x161]: Data: [13][0][0][0] / 0x000D
    Stream #0.7[0x162]: Data: [13][0][0][0] / 0x000D
    Stream #0.8[0x170]: Data: [13][0][0][0] / 0x000D
    Stream #0.9[0x171]: Data: [13][0][0][0] / 0x000D
    Stream #0.10[0x172]: Data: [13][0][0][0] / 0x000D
Output #0, mpeg, to '10MB.mpg':
  Metadata:
    encoder         : Lavf54.20.4
    Stream #0.0: Video: mpeg2video, yuv420p, 1440x1080 [PAR 4:3 DAR 16:9], q=2-31, 20000 kb/s, 90k tbn, 90k tbc
Stream mapping:
  Stream #0:0 -> #0:0 (copy)

मैंने एक और प्रश्न की टिप्पणियों में सुझाए गए सीएलआई कमांड की भी कोशिश की ।

avconv -i 10MB.ts -c:v copy -c:a libfaac 10MB.mp4

फिर, आउटपुट फ़ाइल में कोई आवाज़ नहीं।

संपादित करें: मैंने @ डैनियल द्वारा सुझाए गए VLC की कोशिश की । यह लगभग सही था। यह तेज और उपयोगकर्ता के अनुकूल था। मुझे बस "कन्वर्ट / सेव" पर क्लिक करना था, इनपुट फ़ाइल जोड़ना था, MP4 प्रोफ़ाइल का चयन करना था, वीडियो कोडेक और ऑडियो कोडेक को "मूल वीडियो / ऑडियो ट्रैक रखें", एक गंतव्य फ़ाइल चुनें, और "प्रारंभ" पर क्लिक करें। वीडियो एकदम सही लग रहा था, लेकिन ऑडियो किसी तरह थोड़ा दूषित हो गया था, लेकिन यह मेरे वीडियो के ऑडियो स्ट्रीम में काफी कुछ विदेशी के कारण हो सकता है।


क्या आपने वीएलसी की कोशिश की है? videolan.org/vlc/index.html
डैनियल

आपने उल्लेख किया था कि आप रिमूव करना चाहते हैं, यदि संभव हो तो फिर से एनकोड न करें। क्या आपको यकीन है कि VLC केवल रिमूक्सिंग है?
ललगन

@LordNeckbeard अच्छी बात है! मैं कैसे आश्वस्त हो सकता हूँ?
लैक्टन

मैं कनवर्ट करने के लिए VLC से परिचित नहीं हूं, लेकिन मैंने एक उत्तर का उपयोग करके जोड़ा ffmpeg
०१:११ बजे ०१

VLC बकाया दोषरहितता के साथ किसी भी चीज़ में परिवर्तित कर देगा। मूल रूप से आप अपने द्वारा चुने गए प्रारूप द्वारा सीमित हैं।
डैनियल

जवाबों:


22

मैट्रोस्का (MKV)

यह सभी धाराओं की प्रतिलिपि (पुन: मक्स) स्ट्रीम करेगा:

ffmpeg -i input -map 0 -c copy output.mkv

-map 0विकल्प सभी धाराओं को शामिल किया जाता है। अन्यथा यह डिफ़ॉल्ट स्ट्रीम चयन व्यवहार का उपयोग करेगा जिसके परिणामस्वरूप केवल एक स्ट्रीम प्रति स्ट्रीम प्रकार का चयन किया जाएगा। चूंकि मैट्रॉस्का मैं शामिल अधिकांश मनमानी धाराओं को संभाल सकता है -map 0

MP4

यह सभी धाराओं की प्रतिलिपि (पुन: मक्स) स्ट्रीम करेगा:

ffmpeg -i input -map 0 -c copy output.mp4
  • यदि आपके इनपुट प्रारूप MP4 के साथ संगत नहीं हैं, तो आपको एक त्रुटि मिलेगी।
  • आपके खिलाड़ी / उपकरण सभी मनमाने ढंग से, कम सामान्य या विरासत स्वरूपों का समर्थन नहीं कर सकते हैं, भले ही वे MP4 द्वारा समर्थित हों।
  • यदि संदेह में फिर से H.264 + AAC को सांकेतिक शब्दों में बदलना जैसा कि नीचे दिखाया गया है।

यह वीडियो को फिर से H.264 में एनकोड करेगा और ऑडियो को कॉपी करेगा:

ffmpeg -i input.ts -c:v libx264 -c:a copy output.mp4

अगला उदाहरण वीडियो और ऑडियो दोनों को फिर से एनकोड करेगा:

ffmpeg -i input.ts -c:v libx264 -c:a aac output.mp4

दोषरहित H.264 उदाहरण:

ffmpeg -i input.ts -c:v libx264 -crf 0 -c:a copy output.mp4

दोषरहित फाइलें बहुत बड़ी होंगी।

अधिक जानकारी के लिए FFmpeg Wiki: H.264 देखें ।


यदि आप एक दोषरहित MP4 फ़ाइल को एन्कोड करना चाहते हैं, तो FFMpeg विकी पेज पर उल्लिखित -qp 0 या -rrf 0 जोड़ें, जैसे: trac.ffmpeg.org/wiki/Encode/H.264
Superlluether

2
@SuperSluether दोषरहित विशाल फ़ाइलें बनाता है। "दोषरहित" से मेरा मानना ​​है कि लैक्टन का अर्थ "रिमूक्सिंग" था।
1

मैंने जो नमूना फ़ाइल प्रदान की है वह वास्तव में छोटी है। जिस वास्तविक फ़ाइल को मैं रिमूव करना चाहता हूं वह आसान साझाकरण के लिए बहुत बड़ी है।
लैक्टन

1
@ लैक्टन मैट्रोज़का में muxing का प्रयास करें ffmpeg -i 10MB.ts -c copy output.mkv:। आपको त्रुटि मिलेगी Error parsing AAC extradata, unable to determine samplerate:। यही कारण है कि मेरे MKV उदाहरण ने ऑडियो को फिर से एन्कोड किया। # 4472 भी देखें : एन्कोडिंग के बिना स्ट्रीम से AAC प्रतिलिपि विफल रहता है और lavf / mkv: AAC रीक्सिंग ठीक करें । हालाँकि, इसमें से कोई भी आपके बड़े, असत्य इनपुट फ़ाइल पर लागू नहीं हो सकता है और यह उम्मीद के मुताबिक काम कर सकता है।
०१:०१

1
@LordNeckbeard ffmpeg -i input -c:v copy -c:a aac output.mkvने पूरी तरह से काम किया। वीडियो को हटा दिया गया था, और ऑडियो को मूल रूप में अच्छा लगता है, बिना मामूली भ्रष्टाचार के मुझे वीएलसी के साथ कनवर्ट करते समय मिला।
लैक्टन

3

VideoLAN (VLC - http://www.videolan.org/vlc/index.html ) आसानी से किसी भी चीज़ के बारे में किसी भी चीज़ में आसानी से परिवर्तित कर देगा।

इसे आजमा कर देखें। यह लिनक्स, विंडोज और मैक ओएस एक्स पर चलता है, और एक बहुत उपयोगकर्ता के अनुकूल इंटरफेस है।


अब जब मैंने वीडियो रूपांतरण के लिए वीएलसी का उपयोग किया है, तो मैं इसकी सिफारिश करूंगा। इस सुझाव के लिए धन्यवाद। मेरी .ts फ़ाइल के लिए, यह लगभग काम कर गया। वीडियो बिल्कुल सही लग रहा था, लेकिन ऑडियो किसी तरह थोड़ा दूषित था। यह मेरे वीडियो के ऑडियो स्ट्रीम में कुछ अधिक ही विदेशी होने के कारण हो सकता है। मैंने इसे शामिल करने के लिए मूल प्रश्न संपादित किया।
लैक्टन

हाँ, अगर आप mp4 के अंदर ऑडियो के लिए एक अलग उप-संयोजक का उपयोग करते हैं तो यह बेहतर काम कर सकता है। शायद रॉ।
डैनियल

0

@Llogan द्वारा अन्य उत्तर के पूरक के रूप में - एक धारा की नकल के रूप में वैसे भी बेहतर है:

मैं फ़ाइलों का नाम बदले बिना ऑडियो निकालने के लिए कुछ आदेशों का लंबे समय से उपयोग कर रहा हूं, जो कि यहां प्रस्तुत किए गए लोगों के अनुकूल हो सकते हैं, ताकि उन्हें फ़ाइल प्रबंधकों के संदर्भ मेनू में एकीकृत किया जा सके।

तो, फ़ाइल के उपयोग के नाम को बदले बिना "डिमक्सिंग और मक्सिंग" के लिए:

ffmpeg -i "$0" -map 0 -c copy "${0%%.*}".mkv

मैंने जोड़ा है कि थूनर के कस्टम एक्शन और फाइलमैनेजर एक्ट्स कॉन्फ़िगरेशन टूल (Nautilus, Nemo, Caja, PCManFM), जैसे:

sh -c 'ffmpeg -i "$0" -map 0 -c copy "${0%%.*}".mkv' %f

इसे थुनर में और फ़ाइलमेन्जर क्रियाओं में "* .ts" तक सीमित रखते हुए video/mp2t

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.