नोट: मैंने कुछ समय पहले स्टैकओवरफ्लो में एक ही प्रश्न पोस्ट किया था, जब मुझे यह कम्यूनिटी अभी तक नहीं मिली है। मैं इसे फिर से लागू करता हूं क्योंकि यह प्रश्न इस समुदाय के लिए अधिक उपयुक्त है।
1. मैंने क्या कोशिश की
मेरे पास कुछ .MTS (AVCHD प्रारूप) फाइलें हैं जो मेरे AVCHD कैमरे के साथ हैं । इसका विनिर्देश नीचे दिखाया गया है:
$ ffprobe 140612_Canon-00000.MTS
ffprobe version 2.2.1 Copyright (c) 2007-2014 the FFmpeg developers
(snip)
Input #0, mpegts, from '140612_Canon-00000.MTS':
Duration: 00:48:58.40, start: 0.800300, bitrate: 5563 kb/s
Program 1
Stream #0:0[0x1011]: Video: h264 (High) (HDMV / 0x564D4448),
yuv420p, 1440x1080 [SAR 4:3 DAR 16:9],
29.97 fps, 29.97 tbr, 90k tbn, 59.94 tbc
Stream #0:1[0x1100]: Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz,
stereo, fltp, 256 kb/s
फ़्रेमरेट / टाइमबेस के भाग पर ध्यान दें: 29.97 एफपीएस, 29.97 टीबीआर, 90k टीबीएन, 59.94 टीबीसी
अब मैं इस फ़ाइल को .mp4 फ़ाइल में बदलना चाहता हूँ , दूसरी ओर H264 वीडियो स्ट्रीम को दोबारा एन्कोडिंग के बिना , अपने ऑडियो स्ट्रीम को AAC में ट्रांसकोड करने के साथ । इसलिए मैंने निम्नलिखित कमांड की कोशिश की:
ffmpeg -i 140612_Canon-00000.MTS -t 60 -y -vcodec copy -acodec libfaac -ab 128k 140612_Canon-00001.MTS.mp4
2. परिणाम
और आउटपुट फ़ाइल का विनिर्देश नीचे दिखाया गया है:
$ ffprobe 140612_Canon-00000.MTS.mp4
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '140612_Canon-00000.MTS.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf55.33.100
Duration: 00:01:00.04, start: 0.021333, bitrate: 4590 kb/s
Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p,
1440x1080 [SAR 4:3 DAR 16:9], 4448 kb/s,
59.94 fps, 59.94 tbr, 90k tbn, 59.94 tbc (default)
Metadata:
handler_name : VideoHandler
Stream #0:1(und): Audio: aac (mp4a / 0x6134706D),
48000 Hz, stereo, fltp, 128 kb/s (default)
Metadata:
handler_name : SoundHandler
फ्रामरेट / टाइमबेस के भाग को देखें: 59.94 एफपीएस, 59.94 टीबीआर, 90k टीबीएन, 59.94 टीबीसी । हालाँकि ffmpeg ने सिर्फ वीडियो स्ट्रीम को कॉपी किया है, लेकिन फ्रेमरेट और टाइमबेस को दो बार बदल दिया गया है ।
इसलिए, जब मैं क्विकटाइम प्लेयर या वीएलसी प्लेयर के साथ आउटपुट फ़ाइल को खोलता और प्लेबैक करता हूं, तो ऑडियो को कोई समस्या नहीं होती है, हालांकि, वीडियो स्ट्रीम को सही तरीके से नहीं चलाया जाता है। वीडियो को इसके फ्रेम के आगे और पीछे की ओर बार-बार तरकश के साथ खेला जाता है।
3. प्रश्न
- मैं कैसे बदल सकता हूँ। MTS फ़ाइल (AVCHD) .Mp4 द्वारा ffmpeg द्वारा फिर से H264 वीडियो स्ट्रीम को सही तरीके से एन्कोडिंग किए बिना ?
- जब मैं कंटेनर को उसके स्विच के साथ परिवर्तित करता हूं तो मैं मूल फ्रेमरेट / टाइमबेस मान (एफपीएस / टीआरबी / टीबीएन / टीसीबी) कैसे रख सकता हूं ।
ffmpeg
-vcodec copy
- मैं एक वीडियो स्ट्रीम को फिर से एन्कोडिंग किए बिना ffmpeg के कमांड लाइन विकल्पों द्वारा फ़्रैमरेट / टाइमबेस मान (एफपीएस / tbr / tbn / tbc) कैसे सेट कर सकता हूं ।
कोई विचार?
4. -r 29.97
विकल्प जोड़ना
प्रोफेसर स्पार्कल्स ने मुझे जोड़ने की सलाह दी -r 29.97
। मैंने कोशिश की है कि:
ffmpeg -i 140612_Canon-00001.MTS -t 60 -r 29.97 -y -vcodec copy -acodec libfaac -ab 128k 140612_Canon-00001.MTS.mp4
हालाँकि, आउटपुट फ़ाइल में अभी भी गलत framerate / timebase है:
Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p,
1440x1080 [SAR 4:3 DAR 16:9], 4448 kb/s,
59.94 fps, 59.94 tbr, 11988 tbn, 59.94 tbc (default)
5. MP4Box का उपयोग कर रीमेक
प्रोफेसर स्पार्कल्स की सलाह के अनुसार, मैंने MP4Box का उपयोग करके डिमक्स और रीमक्स की कोशिश की।
brew install mp4box
ffmpeg -i 140612_Canon-00000.MTS -t 60 -y \
-vcodec copy -an 140612_Canon-00000.MTS.h264
ffmpeg -i 140612_Canon-00000.MTS -t 60 -y \
-vn -acodec libfaac -ab 128k 140612_Canon-00000.MTS.aac
mp4box -add 140612_Canon-00000.MTS.h264:fps=29.97 \
-add 140612_Canon-00000.MTS.aac \
-new 140612_Canon-00000.MTS.mp4
और उत्पादन था:
$ ffprobe 140612_Canon-00000.MTS.mp4
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '140612_Canon-00000.MTS.mp4':
(snip)
Duration: 00:02:00.22, start: 0.000000, bitrate: 2293 kb/s
Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661),
yuv420p, 1440x1080 [SAR 4:3 DAR 16:9], 2228 kb/s,
29.97 fps, 29.97 tbr, 30k tbn, 59.94 tbc (default)
Metadata:
creation_time : 2014-07-14 00:38:23
handler_name : 140612_Canon-00000.MTS.h264:fps=29.97
- Imported with GPAC 0.5.0-rev4065
Stream #0:1(und): Audio: aac (mp4a / 0x6134706D), 48000 Hz,
stereo, fltp, 125 kb/s (default)
यह थोड़ा कदम आगे दिखता है। फ्रामरेट / टाइमबेस के भाग को देखें: 29.97 एफपीएस, 29.97 टीबीआर, 30k टीबीएन, 59.94 टीबीसी । वे मूल धारा से मेल खाते हैं, सिवायtbn
(कंटेनर से टाइमबेस मान) के।
हालाँकि, जब मैं क्विकटाइम प्लेयर या वीएलसी के साथ आउटपुट फ़ाइल वापस खेलता हूं, तो वीडियो आधी गति से वापस चला जाता है ।
हालाँकि मूल फ़ाइल में 90k tbn
(90000 टिक प्रति सेकंड) है और MP4Box से नई आउटपुट फ़ाइल है 30k tbn
जो मूल एक का सिर्फ एक तिहाई मूल्य है, आउटपुट फ़ाइल आधी गति से वापस खेलती है।
मुझे इसका कारण पता नहीं है। लेकिन मुझे लगता है कि बाकी मुद्दा यह है कि मैं tbn
मूल्य को कैसे समायोजित कर सकता हूं ।
5-ख। आउटपुट फाइल पर MediaInfo की रिपोर्ट
मैं भी उत्पादन आउटपुट फ़ाइल पर MediaInfo उपकरण की कोशिश की 5. MP4Box का उपयोग कर रीमिक्स । यहाँ आउटपुट है: https://gist.github.com/kaorukobo/c5ab9eaa413dff6cd26a
6. एवोकॉन की कोशिश करना
वोलोडा ने बताया कि avconv
अच्छी तरह से काम किया। इसके अलावा मैंने एक ही कैमरे से रिकॉर्ड की गई एक छोटी सैंपल मूवी फाइल (Canon-00006.MTS) तैयार की। ठीक है, चलो कोशिश करते हैं:
brew install avconv
avconv -i Canon-00006.MTS -c:a copy -c:v copy -y Canon-00006.MTS.mp4
ffprobe Canon-00006.MTS.mp4
आउटपुट फ़ाइल की ffprobe जानकारी यहाँ है: https://gist.github.com/kaorukobo/5b53244ade2632ff1211 और इसकी framerate / timebase जानकारी निम्नानुसार है: 59.94 fps, 59.94 tbr, 90k tbn, 59.94 tbc
वोलोडा की रिपोर्ट के अनुसार वीएलसी प्लेयर के साथ आउटपुट फाइल अच्छी तरह से खेली गई थी । हालाँकि, इसे क्विकटाइम प्लेयर X के साथ खोलते हुए, वीडियो को सामान्य गति से वापस खेल लिया गया था, लेकिन इसके फ्रेम के पीछे बार-बार होने के कारण।
7. क्यों "एमवीवी के लिए नि: शुल्क AVCHD" ऐप काम करता है?
जैसा कि मैंने अपनी पिछली टिप्पणी में उल्लेख किया है , निशुल्क AVCHD से MOV ऐप के "रीवराप टू MOV" फीचर ने अच्छी तरह से काम किया, भले ही यह MP4 नहीं बल्कि MOV बनाता है।
सॉफ्टवेयर अपने स्वयं के ffmpeg (या avconv) प्रोग्राम को आंतरिक रूप से कॉल करता है, और मैंने देखा कि इसके लिए कौन से विकल्प पास किए गए हैं। यह नीचे दिखाया गया है:
/Applications/Free AVCHD to Mov.app/Contents/Resources/bin/com.geranium-soft.convert \
-i /path/to/140710_Canon-00003.MTS \
-map 0:0 -map 0:1 -c:a libfaac -vol 256 -b:a 128k -c:v copy \
-sn -movflags faststart -threads 0 -pix_fmt yuv420p -y \
/path/to/140710_Canon-00003.mov
मैंने एक ही विकल्प पास करने की कोशिश की (एक्स्ट्रीमली एक ही। मैंने आउटपुट कंटेनर टाइप को MOV पर सेट किया और यहां तक कि -t 60
स्विच भी हटा दिया ।) ffmpeg प्रोग्राम और कंवर्टिंग के लिए। लेकिन परिणाम वही था जो अब तक रिपोर्ट किया गया था ।
वैसे भी उस महान ऐप ने मेरी समस्या को "मैं कैसे परिवर्तित कर सकता हूं। एमटीएस फ़ाइल (AVCHD) को .mp4 को फिर से एन्कोडिंग के बिना H264 वीडियो स्ट्रीम?"? लेकिन मुझे अभी भी इस बात में दिलचस्पी है कि वो ऐप अच्छा क्यों करे लेकिन ffmpeg नहीं।