এফএফএমপিইগ - একঘেয়ে ডিটিএস


15

আমি যখন নিম্নলিখিত কমান্ডটি ব্যবহার করে এমপি 4 থেকে এম 3 ইউ 8 তে ভিডিও রূপান্তর করতে FFMPEG ব্যবহার করি,

ffmpeg -i op.mp4  -b:v 128k -flags -global_header -map 0:0 -map 0:1 -f segment -segment_time 4 -segment_list_size 0 -segment_list op.m3u8 -segment_format mpegts op%05d.ts

আমি নীচের সতর্কতা পেয়েছি:

Non-monotonous DTS in output stream 0:1; previous: 347527, current: 346508; changing to 347528. This may result in incorrect timestamps in the output file.

এম 3 ইউ 8 উত্পন্ন, তবে কেবলমাত্র অডিও দ্রুতগতি প্লেয়ারে আসবে up

স্যাম্পল এমপি 4 এবং এম 3 ইউ 8 উভয়ই এখানে উপলব্ধ

সুতরাং, আমি জানতে চাই

  1. এই ত্রুটির পিছনে কারণ। এটি রূপান্তরকালে কোনও দূষিত এমপি 4 বা সমস্যা। এম 3 ইউ 8 প্লেযোগ্য, দ্রুত সময়ে সঠিকভাবে প্লেযোগ্য নয়। কেবল অডিও আসে, কোনও ভিডিও আসে না।

  2. আমি কীভাবে এটি ঠিক করতে পারি

সম্পূর্ণ FFMPEG কনসোল আউটপুট:

ffmpeg version git-2013-06-06-c51654f Copyright (c) 2000-2013 the FFmpeg developers
  built on Jun  6 2013 12:54:24 with gcc 4.6.3 (GCC) 20120306 (Red Hat 4.6.3-2)
  configuration: --prefix=/root/ffmpeg_build --extra-cflags=-I/root/ffmpeg_build/include --extra-ldflags=-L/root/ffmpeg_build/lib --bindir=/root/bin --extra-libs=-ldl --enable-gpl --enable-nonfree --enable-libfdk_aac --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-libx264
  libavutil      52. 35.100 / 52. 35.100
  libavcodec     55. 15.100 / 55. 15.100
  libavformat    55.  8.102 / 55.  8.102
  libavdevice    55.  2.100 / 55.  2.100
  libavfilter     3. 75.101 /  3. 75.101
  libswscale      2.  3.100 /  2.  3.100
  libswresample   0. 17.102 /  0. 17.102
  libpostproc    52.  3.100 / 52.  3.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'op.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf55.8.102
  Duration: 00:00:06.00, start: 0.010000, bitrate: 679 kb/s
    Stream #0:0(eng): Video: h264 (Baseline) (avc1 / 0x31637661), yuv420p, 640x364 [SAR 1:1 DAR 160:91], 590 kb/s, 25 fps, 25 tbr, 90k tbn, 50 tbc
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(eng): Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 130 kb/s
    Metadata:
      handler_name    : SoundHandler
[segment @ 0x32e1d60] Codec for stream 0 does not use global headers but container format requires global headers
[segment @ 0x32e1d60] Codec for stream 1 does not use global headers but container format requires global headers
Output #0, segment, to 'op%05d.ts':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf55.8.102
    Stream #0:0(eng): Video: mpeg2video, yuv420p, 640x364 [SAR 1:1 DAR 160:91], q=2-31, 128 kb/s, 90k tbn, 25 tbc
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(eng): Audio: mp2, 44100 Hz, stereo, s16, 128 kb/s
    Metadata:
      handler_name    : SoundHandler
Stream mapping:
  Stream #0:0 -> #0:0 (h264 -> mpeg2video)
  Stream #0:1 -> #0:1 (aac -> mp2)
Press [q] to stop, [?] for help
[segment @ 0x32e1d60] Non-monotonous DTS in output stream 0:1; previous: 347527, current: 346508; changing to 347528. This may result in incorrect timestamps in the output file.
frame=  109 fps=0.0 q=31.0 size=N/A time=00:00:04.29 bitrate=N/A dup=14 drop=0  frame=  151 fps=0.0 q=24.8 Lsize=N/A time=00:00:06.00 bitrate=N/A dup=14 drop=0    
video:350kB audio:96kB subtitle:0 global headers:0kB muxing overhead -100.004823%

Vsync এবং async বিকল্পের সাথে, ত্রুটিটি দেখা যাচ্ছে যে "স্ট্রিম 0 এর কোডেক গ্লোবাল শিরোলেখ ব্যবহার করে না তবে ধারক বিন্যাসে গ্লোবাল শিরোনাম প্রয়োজন"। কনসোল আউটপুট এখানে:

ffmpeg -i op.mp4  -b:v 128k -flags -global_header -map 0:0 -map 0:1 -f segment -segment_time 4 -segment_list_size 0 -segment_list nop.m3u8 -segment_format mpegts nop%05d.ts  
ffmpeg version git-2013-06-06-c51654f Copyright (c) 2000-2013 the FFmpeg developers
  built on Jun  6 2013 12:54:24 with gcc 4.6.3 (GCC) 20120306 (Red Hat 4.6.3-2)
  configuration: --prefix=/root/ffmpeg_build --extra-cflags=-I/root/ffmpeg_build/include --extra-ldflags=-L/root/ffmpeg_build/lib --bindir=/root/bin --extra-libs=-ldl --enable-gpl --enable-nonfree --enable-libfdk_aac --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-libx264
  libavutil      52. 35.100 / 52. 35.100
  libavcodec     55. 15.100 / 55. 15.100
  libavformat    55.  8.102 / 55.  8.102
  libavdevice    55.  2.100 / 55.  2.100
  libavfilter     3. 75.101 /  3. 75.101
  libswscale      2.  3.100 /  2.  3.100
  libswresample   0. 17.102 /  0. 17.102
  libpostproc    52.  3.100 / 52.  3.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'op.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf55.8.102
  Duration: 00:00:06.00, start: 0.010000, bitrate: 679 kb/s
    Stream #0:0(eng): Video: h264 (Baseline) (avc1 / 0x31637661), yuv420p, 640x364 [SAR 1:1 DAR 160:91], 590 kb/s, 25 fps, 25 tbr, 90k tbn, 50 tbc
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(eng): Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 130 kb/s
    Metadata:
      handler_name    : SoundHandler
[segment @ 0x3bf3d60] Codec for stream 0 does not use global headers but container format requires global headers
[segment @ 0x3bf3d60] Codec for stream 1 does not use global headers but container format requires global headers
Output #0, segment, to 'nop%05d.ts':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf55.8.102
    Stream #0:0(eng): Video: mpeg2video, yuv420p, 640x364 [SAR 1:1 DAR 160:91], q=2-31, 128 kb/s, 90k tbn, 25 tbc
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(eng): Audio: mp2, 44100 Hz, stereo, s16, 128 kb/s
    Metadata:
      handler_name    : SoundHandler
Stream mapping:
  Stream #0:0 -> #0:0 (h264 -> mpeg2video)
  Stream #0:1 -> #0:1 (aac -> mp2)
Press [q] to stop, [?] for help
[segment @ 0x3bf3d60] Non-monotonous DTS in output stream 0:1; previous: 347527, current: 346508; changing to 347528. This may result in incorrect timestamps in the output file.
frame=  119 fps=0.0 q=31.0 size=N/A time=00:00:04.68 bitrate=N/A dup=14 drop=0  frame=  151 fps=0.0 q=24.8 Lsize=N/A time=00:00:06.00 bitrate=N/A dup=14 drop=0    
video:350kB audio:96kB subtitle:0 global headers:0kB muxing overhead -100.004823%

সম্পূর্ণ ffmpeg কনসোল আউটপুট অন্তর্ভুক্ত করুন।
লগন

সম্পূর্ণ ffmpeg কনসোল আউটপুট যুক্ত করতে সম্পাদিত
Divya ਭਾਰগোভ

আপনি যদি পরামিতিগুলি যুক্ত করেন তবে কী হবে -vsync 1 -async 1?
harrymc

1
আপনি কি করতে চাইছেন তা আমি বুঝতে পারছি না। এম 3 ইউ 8 প্লেলিস্টের স্পেসিফিকেশন, কোনও ভিডিও ফর্ম্যাট নয়। আপনার পছন্দসই ব্যবহারের ক্ষেত্রে আরও বিশদ সরবরাহ করুন।
মিঃডিআরএমসিকয়

2
এই গ্রহে 5 জনের মতো লোক রয়েছে যারা উত্তরটি জানেন ...
বোডাসিডো

উত্তর:


1

আপনার সিএসআই ক্লিপটি অ-একঘেয়ে ডিটিএস বার্তায় রূপান্তরিত হয়েছে। আমি ভিএলসিতে এমপি 4 ক্লিপটি ঠিকঠাক খেলতে পেরেছি, তবে এফফ্লে প্লে হিচাপে শেষ হয়েছে। আমি এর অর্থ কী তা নিশ্চিত নই।

ffmpeg -i op.mp4 -b:v 128k -flags -global_header -map 0:0 -map 0:1 -f segment -segment_time 4 -segment_list_size 0 -segment_list op.m3u8 -segment_format mpegts op%05d.ts

শুধু ffmpeg এর একটি নতুন সংস্করণ পান । আপনার জুন 2013 থেকে। মার্চ 2014 থেকে আমার কাজটি ঠিকঠাক হয়েছিল। এমপি 4 ভিএলসিতে আমার পক্ষে দুর্দান্ত অভিনয় করে। পৃথক .ts ফাইলগুলিও আমার পক্ষে ঠিক আছে।

C:\temp>dir op*
 Volume in drive C has no label.
 Volume Serial Number is xxx-xxx

 Directory of C:\temp

10/07/2014  08:52 PM               169 op.m3u8
10/07/2014  08:51 PM           509,425 op.mp4
10/07/2014  08:52 PM           404,764 op00000.ts
10/07/2014  08:52 PM           148,520 op00001.ts
               4 File(s)      1,062,878 bytes

op.m3u8 ফাইলটি পুরোপুরি প্রক্রিয়া না করা অবধি 4 সেকেন্ড ইনক্রিমেন্টে বিভাগটি তৈরি করেছে।

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-ALLOW-CACHE:YES
#EXT-X-TARGETDURATION:5
#EXTINF:4.120000,
op00000.ts
#EXTINF:1.960000,
op00001.ts
#EXT-X-ENDLIST

1

এই এমপি 4 কেবলমাত্র 6 সেকেন্ড দীর্ঘ এবং অডিও স্ট্রিমটি ভিডিওর চেয়ে পৃথক দৈর্ঘ্যের, আমি দুটি সিঙ্ক করতে সক্ষম হয়েছি এবং নিম্নলিখিতটি করে ডিটিএস ত্রুটি থেকে মুক্তি পেতে সক্ষম হয়েছি:

ffmpeg -i op.mp4 -ss 00:00:00.11 -t 00:00:06.00 -vn -y op.wav

ffmpeg -i op.mp4 -ss 0.010000 -t 00:00:06 -vcodec rawvideo -an -y op.avi

ffmpeg -i op.avi -i op.wav -b:v 590k -b:a 130k -t 00:00:06 -y op_fixed.mp4

এটি মূলত এমপি 4 পুনরায় তৈরি করে এবং উভয় প্রবাহকে একই দৈর্ঘ্য তৈরি করার সময় কিছু ক্ষুদ্র দুর্নীতির সমস্যা সমাধান করে।

এছাড়াও, আপনার কমান্ড লাইনের দ্বি-ম্যাপের প্যারামিটারগুলির প্রয়োজন নেই, এবং মূল এমপি 4 এর কোনও কোডেক গ্লোবাল শিরোনামকে সমর্থন করে না, এগুলি ছাড়াও আমি ভাবতে পারি না যে যাইহোক আপনার এগুলি দরকার। আমি উপরে তালিকাভুক্ত পদক্ষেপগুলি শেষ করার পরে নিম্নলিখিতটি ত্রুটি ছাড়াই সম্পূর্ণ হওয়া উচিত:

ffmpeg -i op_fixed.mp4 -b:v 128k -f segment -segment_time 4 -segment_list_size 0 -segment_list op.m3u8 -segment_format mpegts op%05d.ts
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.