अवतल पर गैर-नीरस डीटीएस (ffmpeg)


17

इस आदेश को चलाने के बाद ffmpeg -f concat -i mylist.txt -c copy output.mp4- मुझे दूषित output.mp4फ़ाइल और यह संदेश मिल रहा है :

ffmpeg -f concat -i mylist.txt -c copy output.mp4
ffmpeg version 2.6.2 Copyright (c) 2000-2015 the FFmpeg developers
  built with Apple LLVM version 6.1.0 (clang-602.0.49) (based on LLVM 3.6.0svn)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/2.6.2 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-libx264 --enable-libmp3lame --enable-libvo-aacenc --enable-libxvid --enable-vda
  libavutil      54. 20.100 / 54. 20.100
  libavcodec     56. 26.100 / 56. 26.100
  libavformat    56. 25.101 / 56. 25.101
  libavdevice    56.  4.100 / 56.  4.100
  libavfilter     5. 11.102 /  5. 11.102
  libavresample   2.  1.  0 /  2.  1.  0
  libswscale      3.  1.101 /  3.  1.101
  libswresample   1.  1.100 /  1.  1.100
  libpostproc    53.  3.100 / 53.  3.100
Input #0, concat, from 'mylist.txt':
  Duration: N/A, start: 0.000000, bitrate: 829 kb/s
    Stream #0:0: Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1440x900, 701 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc
    Stream #0:1: Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 128 kb/s
Output #0, mp4, to 'output.mp4':
  Metadata:
    encoder         : Lavf56.25.101
    Stream #0:0: Video: h264 ([33][0][0][0] / 0x0021), yuv420p, 1440x900, q=2-31, 701 kb/s, 30 fps, 30 tbr, 15360 tbn, 15360 tbc
    Stream #0:1: Audio: aac ([64][0][0][0] / 0x0040), 44100 Hz, stereo, 128 kb/s
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
  Stream #0:1 -> #0:1 (copy)
Press [q] to stop, [?] for help
[mp4 @ 0x7f897a01bc00] Non-monotonous DTS in output stream 0:0; previous: 598061, current: 467644; changing to 598062. This may result in incorrect timestamps in the output file.
[mp4 @ 0x7f897a01bc00] Non-monotonous DTS in output stream 0:0; previous: 598062, current: 468044; changing to 598063. This may result in incorrect timestamps in the output file.
[mp4 @ 0x7f897a01bc00] Non-monotonous DTS in output stream 0:0; previous: 598063, current: 468444; changing to 598064. This may result in incorrect timestamps in the output file.
...
[mp4 @ 0x7f897a01bc00] Non-monotonous DTS in output stream 0:0; previous: 598362, current: 588044; changing to 598363. This may result in incorrect timestamps in the output file.
frame= 1472 fps=0.0 q=-1.0 Lsize=    5825kB time=00:00:49.04 bitrate= 973.0kbits/s
video:4903kB audio:877kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.776358%

की सामग्री mylist.txt

file 'cut.mp4'
file 'cut2.mp4'

ffmpeg से cut.mp4 आउटपुट:

ffmpeg -i cut.mp4
ffmpeg version 2.6.2 Copyright (c) 2000-2015 the FFmpeg developers
  built with Apple LLVM version 6.1.0 (clang-602.0.49) (based on LLVM 3.6.0svn)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/2.6.2 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-libx264 --enable-libmp3lame --enable-libvo-aacenc --enable-libxvid --enable-vda
  libavutil      54. 20.100 / 54. 20.100
  libavcodec     56. 26.100 / 56. 26.100
  libavformat    56. 25.101 / 56. 25.101
  libavdevice    56.  4.100 / 56.  4.100
  libavfilter     5. 11.102 /  5. 11.102
  libavresample   2.  1.  0 /  2.  1.  0
  libswscale      3.  1.101 /  3.  1.101
  libswresample   1.  1.100 /  1.  1.100
  libpostproc    53.  3.100 / 53.  3.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'cut.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf56.25.101
  Duration: 00:00:39.04, start: 0.036281, bitrate: 837 kb/s
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1440x900, 701 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 128 kb/s (default)
    Metadata:
      handler_name    : SoundHandler

ffmpeg से cut2.mp4 आउटपुट:

ffmpeg -i cut2.mp4
ffmpeg version 2.6.2 Copyright (c) 2000-2015 the FFmpeg developers
  built with Apple LLVM version 6.1.0 (clang-602.0.49) (based on LLVM 3.6.0svn)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/2.6.2 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-libx264 --enable-libmp3lame --enable-libvo-aacenc --enable-libxvid --enable-vda
  libavutil      54. 20.100 / 54. 20.100
  libavcodec     56. 26.100 / 56. 26.100
  libavformat    56. 25.101 / 56. 25.101
  libavdevice    56.  4.100 / 56.  4.100
  libavfilter     5. 11.102 /  5. 11.102
  libavresample   2.  1.  0 /  2.  1.  0
  libswscale      3.  1.101 /  3.  1.101
  libswresample   1.  1.100 /  1.  1.100
  libpostproc    53.  3.100 / 53.  3.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'cut2.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf56.25.101
  Duration: 00:00:10.07, start: 0.000000, bitrate: 1498 kb/s
    Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 1440x900, 1271 kb/s, 30 fps, 30 tbr, 12k tbn, 60 tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 218 kb/s (default)
    Metadata:
      handler_name    : SoundHandler

cut.mp4 मुझे इस आज्ञा से मिला ffmpeg -ss 00:00:11 -i myfile.mp4 -to 00:00:39 -vf 'drawbox= : x=0 : y=0 : color=invert' cut.mp4

cut2.mp4 मुझे इस आज्ञा से मिला ffmpeg -ss 00:00:00 -i myfile.mp4 -to 00:00:10 -c copy cut2.mp4

मैंने बहुत खोज की - कोई हल नहीं निकला, हो सकता है, कोई मेरी मदद कर सके।

output.mp4 बजाने योग्य है, लेकिन अजीब लगता है।

यहां छवि विवरण दर्ज करें


1
क्या आप दोनों इनपुट फाइलें प्रदान कर सकते हैं ताकि मैं परीक्षण कर सकूं?
ललगन

@LordNeckbeard हाँ, मैंने इसे आपके पास भेजा, बहुत-बहुत धन्यवाद।
गोरेसरोई

1
मैं सटीक मुद्दे की नकल नहीं कर सकता। मैं टेसू से उपलब्ध सबसे हालिया स्थैतिक निर्माण का उपयोग कर रहा हूं । नमूना फ़ाइलें आपके स्क्रीनशॉट से भिन्न प्रतीत होती हैं, लेकिन यह वीएलसी और क्विकटाइम में ठीक काम करती हुई प्रतीत होती हैं, सिवाय इसके कि गड़बड़ी की तलाश की जाए। मैंने एक OS X मशीन पर परीक्षण किया क्योंकि यह दिखता है कि आप क्या उपयोग कर रहे हैं।
ललगन

@LordNeckbeard बहुत बहुत धन्यवाद, हाँ इस संस्करण ffmpeg संस्करण N-71996-g372aa07-tessus के साथ यह बहुत अच्छा काम करता है। धन्यवाद।
व्हाईटसराय

tl; डॉ; -c copyपुन: एन्कोडिंग या -c:a copyकेवल उपयोग की अनुमति देने के लिए निकालें । तब कॉनकैट स्टेप अभी भी उपयोग कर सकता है -c copyक्योंकि सभी वीडियो पहले से ही पुन: इनकोड किए गए हैं। ध्यान दें कि इस चेतावनी के साथ कुछ वीडियो कॉनकट के बाद भी ठीक दिखते हैं और इसलिए -c copyठीक है।
林果 林果

जवाबों:


10

नवीनतम का उपयोग करना ffmpeg

सामान्य उपयोगकर्ताओं को हमेशा ffmpegवर्तमान गिट मास्टर शाखा (उपलब्ध नवीनतम कोड) से उपयोग करना चाहिए :

  • किसी समस्या का सामना करते समय पहली बात यह देखना है कि क्या आप गिट मास्टर से बिल्ड का उपयोग कर रहे हैं।
  • इसे स्थिर माना जाता है।
  • इसमें अधिक बग फिक्स और विशेषताएं होंगी।
  • FFmpeg का विकास बहुत सक्रिय है
  • यदि आप आधिकारिक सहायता संसाधनों से समर्थन प्राप्त करना चाहते हैं तो आपको गिट मास्टर का उपयोग करना चाहिए।
  • वितरण वितरकों के लिए हैं।

देखें FFmpeg डाउनलोड या विभिन्न विकल्पों के लिए पेज, का उल्लेख FFmpeg विकी: संकलित गाइड

अन्य सामान

  • अपने आदेश में drawboxआप इसे फिर से एन्कोडिंग करने के बजाय ऑडियो को भाप से कॉपी कर सकते हैं -c:a copy

  • उपयोग करते समय -ss, -toकेवल -ssआउटपुट विकल्प के रूप में उपयोग किए जाने पर अपेक्षित रूप से काम करता है।


बहुत बहुत धन्यवाद, यह बेहतर और तेज काम करता है। क्या आप इस एक वीडियो को भी देख सकते हैं ।stackexchange.com / questions / 15477 /… अगर मैं इसे सरल बना सकता हूं तो मैं बहुत उत्सुक हूं।
गोरेसरोई

@ व्हाइटसिरोई ज़रूर। उत्तर दिया, हालांकि ऐसा प्रतीत होता है कि मैंने उस प्रश्न के लिए एक टिप्पणीकार को दुखी कर दिया।
llogan

उसके लिए खेद है।
गोरेसरोई

1

प्रति https://trac.ffmpeg.org/wiki/Concatenate के अनुसार

मेरा भी यही मुद्दा था। मैं एक ffmpeg संस्करण 2.6.3 चला रहा हूँ MAC। मैंने अपने स्रोत क्लिप को -MTS प्रारूप में जोड़ा -q 0 के टैग के साथ, टेक्स्ट फ़ाइल में एक्सटेंशन को अपडेट किया और अपनी आउटपुट फ़ाइल को .MTS में सेट किया जब मैंने ffmpeg में कॉनैट कमांड को चलाया। इसने एक जादू की तरह काम किया। यहाँ मेरा वर्कफ़्लो है।

ffmpeg -i clip-1.MOV -q 0 clip-1.MTS

ffmpeg -i clip-2.MOV -q 0 clip-2.MTS

पढ़ने के लिए टेक्स्ट फ़ाइल (mylist.txt) को अपडेट किया:

file clip-1.MTS
file clip-2.MTS

फिर इस प्रकार से कॉनैट कमांड को चलाया गया:

ffmpeg -f concat -i mylist.txt -c copy output.MTS

मेरे लिए काम किया! आप अंतिम आउटपुट में कनवर्ट कर सकते हैं। आपको जो भी प्रारूप की आवश्यकता है।


क्या यह प्रोटोकॉल दोषरहित है?
बेज

नहीं, पहला कमांड MPEG-2 में परिवर्तित होता है जिसमें दोषरहित मोड नहीं होता है।
ज्ञान १

1

मुझे ऐसी ही त्रुटियां मिलीं, और मेरे आउटपुट वीडियो में ऑडियो कभी-कभी सिंक से बाहर था और कभी-कभी पूरी तरह से गायब होता था, लेकिन मैंने mkvmergeइसके बजाय mkvtoolnix का उपयोग करना समाप्त कर दिया।

मेरे इनपुट वीडियो अलग-अलग सेटिंग्स के साथ एन्कोड किए गए थे और उनके अलग-अलग आयाम थे, इसलिए मैंने पहली बार उनका उपयोग करके उनका पुन: एनकोड और पुन: एनकोड किया ffmpeg:

for f in *.mp4;do w=1280;h=720;ffmpeg -i $f -filter:v "scale=iw*min($w/iw\,$h/ih):ih*min($w/iw\,$h/ih),pad=$w:$h:($w-iw*min($w/iw\,$h/ih))/2:($h-ih*min($w/iw\,$h/ih))/2" -c:v libx264 -crf 22 -preset slow -pix_fmt yuv420p -c:a libfdk_aac -vbr 3 -ac 2 -ar 44100 ${f%mp4}mkv;done

मेरे कुछ इनपुट वीडियो में एक ऑडियो चैनल नहीं था, इसलिए मैंने उनके लिए एक मूक ऑडियो चैनल जोड़ने के लिए इस तरह की एक कमांड का उपयोग किया:

for f in *.mkv;do ffprobe $f|&grep -q '1: Audio'||ffmpeg -i $f -f lavfi -i anullsrc -c:a libfdk_aac -shortest -c:v copy temp-$f;mv {temp-,}$f;done

उसके बाद मैंने वीडियो को संक्षिप्त किया:

mkvmerge -o /tmp/output.mkv $(printf %s\\n *.mkv|sed '1!s/^/+/')

यदि आपकी इनपुट फ़ाइलों में समान आयाम हैं, तो ऑडियो चैनलों की समान संख्या, समान ऑडियो नमूना दर, और इसी तरह, आप केवल mkvmergeहानिरहित फ़ाइलों को संक्षिप्त करने के लिए उपयोग कर सकते हैं । के लिए इनपुट फ़ाइलों mkvmergeमें एक MP4 कंटेनर भी हो सकता है, लेकिन आउटपुट फ़ाइल में MKV कंटेनर होगा, भले ही इसका फ़ाइल नाम एक्सटेंशन के रूप में निर्दिष्ट हो .mp4। आप ffmpeg -i output.mkv -c copy output.mp4कंटेनर को बदलने के लिए चला सकते हैं ।

mkvmergeजैसे एक वाक्यविन्यास है mkvmerge -o output.mkv file1.mkv + file2.mkv + file3.mkv, जहाँ mkvmerge -o output.mkv file1.mkv +file2.mkv +file3.mkvभी स्वीकार किया जाता है।


1

डंकन के वास्तव में उपयोगी उत्तर के आधार पर:

for f in ./*.mp4; do ffmpeg -i $f -q 0 "${f%.*}.mts"; done

फिर यह:

ffmpeg -f concat -safe 0 -i <(for f in ./*.mts; do echo "file '$PWD/$f'"; done) -c copy All.mts

0

जब मैं कुछ रिकॉर्ड किए गए वीडियो (TS, MP4 या MKV हो सकता है) को रिमूव करने के लिए ffmpeg का उपयोग करता हूं और आउटपुट स्ट्रीम - टाइमस्टैम्प आदि में गैर नीरस dts प्राप्त करता हूं, जिसके परिणामस्वरूप वीडियो या तो केवल ऑडियो के लिए दिखाई देता है या जिस्मानी खेलता है। एकमात्र तरीका जो मैंने मज़बूती से पाया है, वह है एविडेमक्स का उपयोग करना। ऑडियो और वीडियो दोनों के लिए कॉपी सेटिंग्स के साथ और MP4V2 Muxer का चयन करना संभव है।, कॉन्फ़िगर करने के लिए ऑप्टिमाइज़िंग का चयन करने के लिए कॉन्फ़िगर विकल्प के तहत। परिणामस्वरूप MP4 फ़ाइल अब त्रुटि संदेशों को उत्पन्न किए बिना ffmpeg में उपयोग की जा सकती है। भरोसा रखो यह उपयोग का है।

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