ओवरलैपिंग टाइमस्टैम्प्स के साथ वीडियो की हैंडलिंग ffmpeg HLS


1

मेरे पास एचएलएस स्ट्रीम है, जिसमें कई मनमाने ढंग से टीएस सेगमेंट शामिल हैं, जिनमें से कुछ उसी फ़ाइल को संदर्भित कर सकते हैं। डेस्कटॉप और मोबाइल सफारी इसे ठीक निभाता है, उदा। अगर मेरे पास एक प्लेलिस्ट है जिसमें दो समान खंड हैं जो 10s लंबे हैं, तो वीडियो ऐसा लगेगा जैसे एक खंड दोहराया जाता है, और 20s लंबा है।

दूसरी ओर FFmpeg (2.2.1), इसे संभाल नहीं सकता है। जब मैं एक M3U8 फ़ाइल को MP4 फ़ाइल में बदलने का प्रयास करता हूं,

ffmpeg -y -i a.m3u8 -c copy a.mp4

यह टाइमस्टैम्प के बारे में खुश नहीं है, मुझे इस तरह से आउटपुट मिलता है:

ffmpeg version 2.2.1 Copyright (c) 2000-2014 the FFmpeg developers
  built on Apr 11 2014 22:50:38 with Apple LLVM version 5.1 (clang-503.0.40) (based on LLVM 3.4svn)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/2.2.1 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-nonfree --enable-hardcoded-tables --enable-avresample --enable-vda --cc=clang --host-cflags= --host-ldflags= --enable-libx264 --enable-libfaac --enable-libmp3lame --enable-libxvid
  libavutil      52. 66.100 / 52. 66.100
  libavcodec     55. 52.102 / 55. 52.102
  libavformat    55. 33.100 / 55. 33.100
  libavdevice    55. 10.100 / 55. 10.100
  libavfilter     4.  2.100 /  4.  2.100
  libavresample   1.  2.  0 /  1.  2.  0
  libswscale      2.  5.102 /  2.  5.102
  libswresample   0. 18.100 /  0. 18.100
  libpostproc    52.  3.100 / 52.  3.100
Input #0, hls,applehttp, from 'example.m3u8':
  Duration: 00:00:20.00, start: 1.400000, bitrate: 0 kb/s
  Program 0
    Metadata:
      variant_bitrate : 0
    Stream #0:0: Video: h264 (Baseline) ([27][0][0][0] / 0x001B), yuv420p, 640x480, 20 tbr, 90k tbn, 180k tbc
    Stream #0:1: Audio: aac ([15][0][0][0] / 0x000F), 22050 Hz, mono, fltp, 71 kb/s
Output #0, mp4, to 'example.mp4':
  Metadata:
    encoder         : Lavf55.33.100
    Stream #0:0: Video: h264 ([33][0][0][0] / 0x0021), yuv420p, 640x480, q=2-31, 90k tbn, 90k tbc
    Stream #0:1: Audio: aac ([64][0][0][0] / 0x0040), 22050 Hz, mono, 71 kb/s
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
  Stream #0:1 -> #0:1 (copy)
Press [q] to stop, [?] for help
[mpegts @ 0x7fb723026e00] DTS 130180 < 1025680 out of order
[hls,applehttp @ 0x7fb723006600] DTS 130180 < 1025680 out of order
[mp4 @ 0x7fb7231afa00] Non-monotonous DTS in output stream 0:0; previous: 899680, current: 4180; changing to 899681. This may result in incorrect timestamps in the output file.
[mp4 @ 0x7fb7231afa00] Non-monotonous DTS in output stream 0:0; previous: 899681, current: 8680; changing to 899682. This may result in incorrect timestamps in the output file.

... a lot of repeating DTS logs ...

[mp4 @ 0x7fb7231afa00] Non-monotonous DTS in output stream 0:0; previous: 899879, current: 899680; changing to 899880. This may result in incorrect timestamps in the output file.
frame=  400 fps=0.0 q=-1.0 Lsize=    1338kB time=00:00:10.18 bitrate=1076.4kbits/s
video:1131kB audio:203kB subtitle:0 data:0 global headers:0kB muxing overhead 0.272749%

परिणाम 10 s लंबा है, जिसे मैं भी मानता हूं क्योंकि यह सोचता है कि यह दो खंड एक ही समय में होते हैं और फ्रेम को छोड़ देते हैं। मैं इसे टाइमस्टैम्प को टॉस करने के लिए मजबूर कर सकता हूं और नए टाइमस्टैम्प बनाने के लिए फ्रेम दर का उपयोग कर सकता हूं ताकि मुझे 20 के लंबे वीडियो मिल सकें?


कृपया पूरा शामिल करें ffmpeg कंसोल आउटपुट। आप कई बार दोहराई जाने वाली लाइनों को ट्रिम कर सकते हैं।
llogan

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