Videolar birleştirilemiyor ffmpeg


9

Bir tür başlık ekranı veya feragatname ekranı olarak birçok videonun önüne birleştirmek istediğim bir bitmap var.

Videonun geri kalanıyla aynı özelliklere sahip bir videoya dönüştürmeye çalışıyorum. İlk önce videoyu inceliyorum:

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, mov,mp4,m4a,3gp,3g2,mj2, from 'EO1.mp4':
  Metadata:
major_brand     : isom
minor_version   : 512
compatible_brands: isomiso2avc1mp41
creation_time   : 1970-01-01 00:00:00
encoder         : Lavf52.78.3
  Duration: 00:00:17.77, start: 0.000000, bitrate: 582 kb/s
Stream #0:0(eng): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 584x328 [SAR 1:1 DAR 73:41], 512 kb/s, 23.98 fps, 23.98 tbr, 1199 tbn, 47.96 tbc (default)
Metadata:
  creation_time   : 1970-01-01 00:00:00
  handler_name    : VideoHandler
Stream #0:1(eng): Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 64 kb/s (default)
Metadata:
  creation_time   : 1970-01-01 00:00:00
  handler_name    : SoundHandler

Sonra benzer bir dosya oluşturmaya çalışıyorum:

/usr/local/Cellar/ffmpeg/2.2.1/bin/ffmpeg -y -loop 1 -i Yasal Uyarı.png -c: v libx264 -r 23.98 -t 5 -pix_fmt yuv420p -profile: v ana yasal uyarı.mp4

İyi çalışıyor gibi görünüyor. Beklediğim video oyunları. Nitelikler çok benzer. İşte bir fark:

< Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'disclaimer.mp4':
---
> Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'EO1.mp4':
18,20c18,21
<     encoder         : Lavf55.33.100
<   Duration: 00:00:05.01, start: 0.000000, bitrate: 21 kb/s
<     Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 584x328 [SAR 1:1 DAR 73:41], 17 kb/s, 23.98 fps, 23.98 tbr, 19184 tbn, 47.96 tbc (default)
---
>     creation_time   : 1970-01-01 00:00:00
>     encoder         : Lavf52.78.3
>   Duration: 00:00:17.77, start: 0.000000, bitrate: 582 kb/s
>     Stream #0:0(eng): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 584x328 [SAR 1:1 DAR 73:41], 512 kb/s, 23.98 fps, 23.98 tbr, 1199 tbn, 47.96 tbc (default)
21a23
22a25,28
>     Stream #0:1(eng): Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 64 kb/s (default)
>     Metadata:
>       handler_name    : SoundHandler

Ama bitiştirmeye çalıştığımda hatalar alıyorum.

> $ cat temporary.txt 

    file disclaimer.mp4
    file EO1.mp4

/usr/local/Cellar/ffmpeg/2.2.1/bin/ffmpeg -y -f concat -i temporary.txt -c kopya çıktısı.mp4

[concat @ 0x7fd880806600] Estimating duration from bitrate, this may be inaccurate
Input #0, concat, from 'temporary.txt':
  Duration: 00:00:00.02, start: 0.000000, bitrate: 17 kb/s
Stream #0:0: Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 584x328 [SAR 1:1 DAR 73:41], 17 kb/s, 23.98 fps, 23.98 tbr, 19184 tbn, 47.96 tbc
Output #0, mp4, to 'output.mp4':
  Metadata:
encoder         : Lavf55.33.100
Stream #0:0: Video: h264 ([33][0][0][0] / 0x0021), yuv420p, 584x328 [SAR 1:1 DAR 73:41], q=2-31, 17 kb/s, 23.98 fps, 19184 tbn, 19184 tbc
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
Press [q] to stop, [?] for help
[mp4 @ 0x7fd880829a00] Non-monotonous DTS in output stream 0:0; previous: 93600, current: 5951; changing to 93601. This may result in incorrect timestamps in the output file.
[concat @ 0x7fd880806600] Invalid stream index 1
[mp4 @ 0x7fd880829a00] Non-monotonous DTS in output stream 0:0; previous: 93601, current: 6001; changing to 93602. This may result in incorrect timestamps in the output file.
[concat @ 0x7fd880806600] Invalid stream index 1
[mp4 @ 0x7fd880829a00] Non-monotonous DTS in output stream 0:0; previous: 93602, current: 6051; changing to 93603. This may result in incorrect timestamps in the output file.

...

frame=  546 fps=0.0 q=-1.0 Lsize=    1127kB time=00:00:04.90 bitrate=1882.9kbits/s    
video:1123kB audio:0kB subtitle:0 data:0 global headers:0kB muxing overhead 0.349865%

Çıkış, videonun geri kalanında değil, yalnızca yasal uyarım dosyamda olduğu gibi görünüyor.

Ayrıca neden herhangi bir şeyi "tahmin etmek" gibi hissettirdiğini de karıştırıyorum. Giriş FPS ve giriş sürelerini bilir. Sorunun bu olup olmadığından emin değilim. Belki de sadece bir hata.

Diğer seçeneğim "concat filter" kullanmak ama kayıplı bir kod dönüştürme, değil mi? İkinci videoyu birleştirme işleminden önce tam olarak eskisi gibi olmasını tercih ederim.

Düzenleme: üçüncü seçenek olan concat "protokol" denemeye sona erdi. Dokümanlar kullanımını caydırıyor, ancak diğer ikisinden daha iyi çalıştı (Concat demuxer ve concat filtre).


1
Meraklı - Yaratılış zamanınız neden 1970'i gösteriyor?
Rajib

Bunun yerine veya -r 23.98kullanmanız gerektiğini unutmayın (tabii ki diğer video ile oluşturulmamışsa ). Bu durum mevcut sorunu çözmeyebilir. -r 24000/1001-r ntsc-film-r 23.98
llogan

Kendi yapınızı kullanıyorsanız, başka bir önemli sürüm oluşturmayı
deneyebilirsiniz

Yanıtlar:


1

Bu muhtemelen aradığınız cevap değil biliyorum ama neden bunu yapmak için video düzenleme yazılımı kullanmıyorsunuz? Video düzenleme farklı kare hızları, kodekler vb. Alabilir ve bunları hedef formata birleştirebilir ve sıradan yazılım tarafından oynatılabilir. Bir dizi videoya yasal uyarıyı eklemeniz gerekiyorsa, bir dizi program toplu mod sunar.

Ücretsiz açık kaynaklı video editörleri ve tescilli vardır. Yaptığınız şey, temelde aynı tür ve formattaki dosyaları birleştiren bitiştirmenin ne için tasarlandığının dışında olduğunu düşünüyorum.


0

İki video tam olarak aynı kodlama olmalıdır - kare ölçek boyutu, En boy oranı, Saniyedeki kare sayısı ve bit hızı söz konusudur.

ERrightSofts Super (c) dönüştürücüyü kullanmayı deneyin. Ffmpeg için çok kapsamlı bir GUI'dir. Ayrıca "MediaInfo" da gömülüdür, böylece filmlerinizin tamamen aynı olup olmadığını kontrol edebilirsiniz.

Yazarlar GUI dışında yazarlık talep etmiyor ve ffmpeg'e tam kredi veriyorlar.

İhtiyacınız olanı ve çok daha fazlasını yapmalı , ücretsizdir.

Şahsen dosyaları birleştirmek, video veya ses çıkarmak, videoları çeşitli formatlara yeniden kodlamak için kullandım. Adı Süper diyor ve öyle.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.