OGV Biçimi bilgisayarımda düzgün oynuyor ancak kodları (yinelenen?)


11

Ubuntu 12.10 üzerinde recordmydesktop kullanarak bir dizi screencasts yaptım. Çıktı bir ogv dosyasıdır. Varsayılan film oynatıcısını (totem) kullanarak ogv dosyasını izlediğimde iyi görünüyor - ses ve video senkronize. Kod dönüştürüldüğünde (benim veya youtube tarafından) ses ve video senkronize değil. Anlatılırken bir veya iki slayttan atladığım anlaşılıyor.

Güncelleme

Sorunun kod geçişi sırasında yinelenen kareleri düşürme olarak daha düzgün karakterize edildiğinden şüpheleniyorum. Videonun farenin hareket ettiği yere dönüştürülmesi normal olarak iyi çalışıyor gibi görünüyor. Ama sadece bir slayt sırasında konuştuğumda, bu yinelenen kareler düşüyor.

Bunu gördüm ama bu benim durumum değil (ogv -> herhangi bir şey gitmeye çalışıyorum) /superuser/436187/ffmpeg-convert-video-w-dropped-frames-out-of-sync

AVI dosyaları doğru şekilde çevrilmiş gibi görünüyor! Bunun birine büyük bir ipucu olacağını düşünüyorum. Hala altta yatan sorunu izlemek istiyorum. Önceki videolarımın AVI'ye dönüştürülmesini test ediyorum, ancak her geçişi kontrol etmem gerektiğinden bu biraz zaman alıyor.

Örnekler

Bu gtk-recordmydesktop'un orijinal OGV dosyasıdır: http://dl.dropbox.com/u/64693533/sync_test/sync_test1.ogv

Video, 10 saniye boyunca bir slaytla başlar, ardından her biri 5 saniyede 3 slayt daha ilerler. Slaytları her ilerlediğimde mikrofona da dokundum (10s, 15s, 20s, 25s).

Yapılan bazı dönüşümler şunlardır (her biri kendi video zamanlama sorunlarını görüntüler):

http://dl.dropbox.com/u/64693533/sync_test/sync_test1.mp4

  • bu, ilk karedeki ilk slaydı gösterir ancak hızla ilerler
  • bu hisse senedi ffmpeg kullanılarak yapıldı

http://dl.dropbox.com/u/64693533/sync_test/sync_test1.ffmpeg-static.mp4

  • bu oldukça yakın - bazı nedenlerden dolayı 13s olsa ilerlemeye karar verir
  • Bu, birkaç gün önce ffmpeg'in statik yapısı kullanılarak yapıldı

İşte youtube'da - 13'lerde erken ilerlediğini görebilirsiniz (slayt 1 -> slayt 2'den):

İşte OGV dosyasının doğru çalıştığının kanıtı:

ffmpeg çeviri

Ffmpeg veya avconv kullanarak youtube ile benzer sonuçlar alıyorum (geçişler erken gerçekleşiyor, ancak aynı anda olması gerekmiyor).

İşte kullandığım (ffmpeg'in son statik yapısıyla) ve çıktı:

$ ~ / ffmpeg / ffmpeg -i JSP.ogv JSP.mp4
ffmpeg sürüm N-50025-gb8bb661 Telif Hakkı (c) 2000-2013 FFmpeg geliştiricileri
  17 Şubat 2013 05:23:03 tarihinde gcc 4.6 (Debian 4.6.3-1) ile oluşturuldu
  yapılandırma: --prefix = / root / ffmpeg-static / 64bit --extra-cflags = '- I / root / ffmpeg-static / 64bit / include -static' --extra-ldflags = '- L / root / ffmpeg- static / 64bit / lib -static '--extra-libs =' - lxml2 -lexpat -lfreetype '--enable-static --disable-shared --disable-ffserver --disable-doc --enable-bzlib --enable -zlib --enable-postproc --enable-runtime-cpudetect --enable-libx264 --enable-gpl --enable-libtheora --enable-libvorbis --enable-libmp3lame --enable-gri --enable-libass - -enable-libfreetype --enable-libopenjpeg --enable-libspeex --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-sürüm3 --enable-libvpx
  libavutil 52. 17.101 / 52. 17.101
  libavcodec 54. 91.103 / 54. 91.103
  libavformat 54. 63.100 / 54. 63.100
  libavdevice 54. 3.103 / 54. 3.103
  libavfilter 3. 38.100 / 3. 38.100
  libswscale 2. 2.100 / 2. 2.100
  libswresample 0. 17.102 / 0. 17.102
  libpostproc 52. 2.100 / 52. 2.100
[ogg @ 0x34d4640] Aynı akış için birden fazla fisbone uygulanmadı. FFmpeg sürümünüzü Git'in en yeni sürümüne güncelleyin. Sorun devam ederse, dosyanızın uygulanmamış bir özelliği olduğu anlamına gelir.
[ogg @ 0x34d4640] Akış 0 için başlık ayrıştırma başarısız oldu
[ogg @ 0x34d4640] Bozuk dosya, ana kare doğru işaretlenmemiş.
'JSP.ogv' den # 0, ogg girin:
  Süre: 00: 12: 49.67, başlangıç: 0.000000, bit hızı: 224 kb / s
    Akış # 0: 0: Veri: yok
    Akış # 0: 1: Video: theora, yuv420p, 1600x880 [SAR 1: 1 DAR 20:11], 15 fps, 15 tbr, 15 tbn, 15 tbc
    Meta veri:
      RECORDMYDESKTOP: 0.3.8.1
    Akış # 0: 2: Ses: vorbis, 22050 Hz, mono, fltp, 89 kb / s
[libx264 @ 0x369c5e0] SAR = 1/1 kullanarak
[libx264 @ 0x369c5e0] işlemci yeteneklerini kullanma: MMX2 SSE2Fast SSSE3 FastShuffle SSE4.2 AVX
[libx264 @ 0x369c5e0] profil Yüksek, düzey 4.0
[libx264 @ 0x369c5e0] 264 - çekirdek 129 r2230 1cffe9f - H.264 / MPEG-4 AVC codec bileşeni - Copyleft 2003-2012 - http://www.videolan.org/x264.html - seçenekler: cabac = 1 ref = 3 deblock = 1: 0: 0 analiz = 0x3: 0x113 me = hex subme = 7 psy = 1 psy_rd = 1.00: 0.00 mixed_ref = 1 me_range = 16 chroma_me = 1 kafes = 1 8x8dct = 1 cqm = 0 deadzone = 21,11 fast_pskip = 1 chroma_qp_offset = -2 konu = 6 lookahead_threads = 1 dilimlenmiş_treads = 0 nr = 0 decimate = 1 geçmeli = 0 bluray_compat = 0 kısıtlanmış_intra = 0 çerçeveler = 3 b_pyramid = 2 b_adapt = 1 b_bias = 0 doğrudan = 1 ağırlıkb = 1 açık_gop = 0 weightp = 2 keyint = 250 keyint_min = 15 scenecut = 40 intra_refresh = 0 rc_lookahead = 40 rc = crf mbtree = 1 crf = 23.0 qcomp = 0.60 qpmin = 0 qpmax = 69 qpstep = 4 ip_ratio = 1.40 aq = 1: 1.00
Çıkış # 0, mp4, 'JSP.mp4' e:
  Meta veri:
    kodlayıcı: Lavf54.63.100
    Akış # 0: 0: Video: h264 ([33] [0] [0] [0] / 0x0021), yuv420p, 1600x880 [SAR 1: 1 DAR 20:11], q = -1--1, 15360 tbn , 15 tbc
    Meta veri:
      RECORDMYDESKTOP: 0.3.8.1
    Akış # 0: 1: Ses: aac ([64] [0] [0] [0] / 0x0040), 22050 Hz, mono, s16, 128 kb / s
Akış eşleme:
  Akış # 0: 1 -> # 0: 0 (theora -> libx264)
  Akış # 0: 2 -> # 0: 1 (vorbis -> libvo_aacenc)
Durdurmak için [q] tuşuna, yardım için [?] Tuşuna basın
[ogg @ 0x34d4640] Bozuk dosya, ana kare olmayan doğru işaretlenmemiş.
    Son mesaj 2 defa tekrarlandı
Bozuk dosya, ana kare olmayan doğru işaretlenmemiş. = 00: 00: 08.37 bit hızı = 28.7kbits / s dup = 66 drop = 0    
Bozuk dosya, ana kare doğru işaretlenmemiş. Zaman = 00: 00: 51.01 bit hızı = 125.3kbits / s dup = 675 düşüş = 0    
Bozuk dosya, anahtar kare doğru işaretlenmemiş. Zaman = 00: 00: 55.05 bit hızı = 140.2kbits / s dup = 782 düşüş = 0    
Bozuk dosya, anahtar kare doğru işaretlenmemiş. Zaman = 00: 00: 59.60 bit hızı = 140.5kbits / s dup = 836 düşüş = 0    
[ogg @ 0x34d4640] Bozuk dosya, ana kare doğru işaretlenmemiş.
Bozuk dosya, anahtar kare doğru işaretlenmemiş. Zaman = 00: 01: 08.00 bit hızı = 143.0kbits / s dup = 900 düşüş = 0    
Bozuk dosya, anahtar kare doğru işaretlenmemiş. Zaman = 00: 01: 11.86 bit hızı = 141.6kbits / s dup = 910 düşme = 0    

... defalarca tekrarladı ...

Bozuk dosya, anahtar kare doğru işaretlenmemiş. Time = 00: 12: 47.62 bit hızı = 153.0kbits / s dup = 9087 drop = 0    
çerçeve = 11521 fps = 87 q = -1,0 Lsize = 14849kB zaman = 00: 12: 49,48 bit hızı = 158,1 kb / sn dup = 9087 damla = 0    
video: 2401kB ses: 12024kB altyazı: 0 global headers: 0kB muxing havai 2.938094%
[libx264 @ 0x369c5e0] çerçeve I: 49 Ort. QP: 16.05 boyut: 29658
[libx264 @ 0x369c5e0] çerçeve P: 2912 Ort. QP: 9.88 boyut: 114
[libx264 @ 0x369c5e0] çerçeve B: 8560 Ort. QP: 12.76 boyut: 78
[libx264 @ 0x369c5e0] ardışık B-kareleri:% 0.9% 0.1% 0.2% 98.9
[libx264 @ 0x369c5e0] mb I I16..4:% 90.8% 0.4% 8.8%
[libx264 @ 0x369c5e0] mb P I16..4:% 0.0% 0.0% 0.0% P16..4: 0.0% 0.0% 0.0% 0.0% 0.0% atlama: 99.9%
[libx264 @ 0x369c5e0] mb B I16..4:% 0.0% 0.0% 0.0% B16..8:% 0.3% 0.0% 0.0 doğrudan:% 0.0 atlama:% 99.7 L0:% 65.3 L1:% 34.6 BI:% 0.1
[libx264 @ 0x369c5e0] 8x8 dönüşüm içi:% 0,5 arası:% 15,8
[libx264 @ 0x369c5e0] kodlanmış y, uvDC, uvAC intra: 6.4% 0.1% 0.1% inter: 0.0% 0.0% 0.0%
[libx264 @ 0x369c5e0] i16 v, h, dc, p:% 94% 4% 2% 0
[libx264 @ 0x369c5e0] i8 v, h, dc, ddl, ddr, vr, hd, vl, hu: 19% 22% 44% 1% 2% 2% 3% 1% 6%
[libx264 @ 0x369c5e0] i4 v, h, dc, ddl, ddr, vr, hd, vl, hu: 35% 17% 19% 4% 5% 5% 5% 5% 5%
[libx264 @ 0x369c5e0] i8c dc, h, v, p:% 100% 0% 0% 0
[libx264 @ 0x369c5e0] Ağırlıklı P-Çerçeveleri: Y:% 0.0 UV:% 0.0
[libx264 @ 0x369c5e0] ref P L0:% 82,5% 1,4% 11,9% 4,3%
[libx264 @ 0x369c5e0] ref B L0:% 47,2% 52,4% 0,4%
[libx264 @ 0x369c5e0] ref B L1:% 99,2% 0,8
[libx264 @ 0x369c5e0] kb / s: 25.60

Video hala erken, ancak farklı zamanlarda ilerliyor. Kulağa gtk-recordmydesktop bir "bozuk dosya" oluşturuyor gibi geliyor. Ne sinir bozucu OGV işe yarıyor bu yüzden bazı seçenekler kümesi ile bu işi yapmak gerekir gibi görünüyor.

Videoyu kdenlive'de oluşturabildiğimi fark ettim ve orada çalışıyor gibi görünüyor. Hala neler olduğunu bilmek istiyorum. kdenlive çok daha iyi bir iş çıkarıyor, ama yine de bazen erken ilerliyor.


2
Lütfen ffmpeg komutunuzu ve sonuçta ortaya çıkan tam konsol çıktısını gösterin.
llogan

İyi fikir @LordNeckbeard Komutu ve çıktıyı ekledim. Bir hata / uyarı fark ettim: max_analyze_duration ulaşıldı.
Amir T

Yeni bir statik ffmpeg derlemesi kullanıyorsanız, sorun hala devam ediyor mu? Bu, karşılaştığınız ve daha yeni bir ffmpeg sürümüyle düzeltilmiş olabilecek olası hataları ortadan kaldırır. Yüklemeye gerek yok. Sadece indir, arşivi çıkar ve sonra dahil olan ffmpegikili dosyayı çalıştır .
llogan

Sorunun yeniden oluşturulabileceği örnek bir girdi dosyası sağlayabilir misiniz?
llogan

İyi fikir, küçük bir tane çırpacağım ve bu gece daha sonra göndereceğim.
Amir T

Yanıtlar:


4

Nihai yüklemeniz youtube olacak zaman neden OGV dönüştürmek, yanlış olabilir ama linux bile AAC Audio ile x264 video codec dönüştürmek ve zaten yüklenmeyi tercih olduğunu düşünüyor bu youtube yükleyebilirsiniz. Bir h264 yapmayı ve OGV dosyası yerine youtube'a yüklemeyi ve sorunun olup olmadığını görmeyi denediniz mi? Bahse girerim bu çözerse, o zaman OGV'nin youtube'a yüklenmesiyle ilgili bir sorun olduğunu biliyorsunuzdur ve çözmezse, youtube'un yorumu veya benzer bir şeyle çerçeve hızı sorunu olabilir.

Geçmişte youtube'a yüklenmiş OGV dosyalarıyla ilgili birçok sorun vardı. Bu noktada bile% 100 sabit olduğunu hayal edemiyorum.

http://support.google.com/youtube/bin/answer.py?hl=en&answer=1722171

EDIT: ayrıca orijinal çekimlerinizin 15 fps'de olduğunu fark ettiniz ... bu sorunun kaynağı olabilir

DÜZENLEME 2: Ben biraz soru yanlış okudum gibi görünüyordu ... OGV olan bir video dosyası ile başlıyor olmak ve MP4 gidiyoruz gördüm ... Bu biraz şeyleri değiştirir .. ama 15fps ve 22050 Hz ses ile bir ilgisi olduğunu tahmin edeceğim ... Örnekleme hızının ses senkronizasyonu ile ilgisi olmadığını biliyorum, ancak standart olmayan kare hızlarını ve ses örneklerini kullanırken deneyimden, Sürüklenmeyi görme eğilimindeydim ... bunları senkronize etmek, ucuz bir video editörü ile ilk kayıttan sonra bunları düzenleyememek oldukça zor olabilir ...

Yazılım ses sürükleme konusunda daha iyi hale gelmiş olsa da, anahtar kare senkronizasyon noktaları standart olmadığından ve anahtar kareleri yuvarlayabildiğinden, yaygın olmayan çerçeveler ve örneklemeler kullanıldığında hala yaygın bir sorundur ...

"Bozuk dosya, ana kare doğru işaretlenmemiş" yazdığını görürsünüz. bu demek oluyor ki ...

benim tavsiyem, onu olabildiğince yakınlaştırmak, bir video düzenleyiciye almak ve sesi istediğiniz gibi eşleştirmek için kaydırmak ve kesmek olacaktır. Ne yazık ki bazen bu nasıl düzeltilir?

Yazılım tabanlı kod dönüştürücüler her zaman olması gerektiği gibi çalışmaz ... eşitleme yetenekleri ve sabit kare hızları vb.

Deneyebileceğiniz başka bir şey, görüntüleri standart bir kare hızına dönüştürmek ve sesi yeniden oluşturmaya çalışmaktır ... videonun sürüklendiğinden emin olduğumdan ... muhtemelen biraz yavaşlıyor ve sonra hızlanıyor sonu veya tam tersi.

DÜZENLEME: Bu ffmpeg komutunu kullanarak videoyu orijinaliyle senkronize etmeyi başardım ... şüphelendiğim şey olan oran maddesine ihtiyaç duyabilirdi

ffmpeg -i sync_test1.ogv -strict experimental -pix_fmt yuv420p -r 15 -vcodec h264 -acodec aac sync_test1.mp4


Orijinal dosya ogv kapsayıcısında Theora video ve Vorbis ses. Amir T, bildiğim kadarıyla bu biçime yeniden kodlamıyor, ancak orijinali ffmpeg veya YouTube ile yeniden kodlamaya çalıştığında senkronizasyon sorunu ortaya çıkıyor.
llogan

Girdi biçimi gtk-recordmydesktop çıktılarının çıktısı ogv'dir. OGV (flv, vs) dışında bir şey almaya çalışıyorum.
Amir T

Güncellenmiş cevabımı okuyun ... Sanırım bu bir FPS sorunu
Chris James Champeau

1
Ekleme -r 15, atlamakla aynıdır, çünkü ffmpeg varsayılan olarak giriş kare hızını devralır ve elde edilen veya içermeyen sonuç dosyaları -r 15git head ffmpeg ile tam olarak aynıdır (sürüm N-50285-gad89952). Eski bir ffmpeg sürümü kullanarak sizin için çalışıyorsa, bu bir gerileme olabilir ve FFmpeg hata izleyicisine bildirilmelidir .
llogan

1
@LordNeckbeard ile beraberim bunu bir hata olarak FFMPEG'e bildirmelisin
Chris James Champeau

3

Benzer bir sorunla Ubuntu 12.04.3 LTS'de de mücadele ettim. Http://johnvansickle.com/ffmpeg/ adresinde bulunan statik ffmpeg derlemesini kullanarak sorunu çözdüm


1
Ayrıca statik bir yapı denedim ve biraz daha iyi çalıştı. Belki de hata düzeltildi, bu durumda statik derlemeden sürüm numarasını cevabınıza eklemek yararlı olabilir mi?
Amir T

0

YouTube için daha iyi çalışan dönüşüm kodlaması yerine yalnızca kapsayıcıyı avi olarak değiştirmeyi deneyin:

ffmpeg -i JSP.ogv -vcodec copy -acodec copy JSP.avi

Bunu denedim ve yükleme OGV'yi yüklediğim gibi işlemeyi asla bitirmiyor. Bu yanıt youtube'un OGV'yi kabul etmesinden önce olduğundan, bu değişiklik olmalı. Ffmpeg'in dört yıl sonra hala bu dönüşüm sorunu yaşadığını sinirlendirmek.
mcr

Benim ffpmeg: 3.2.14-1 ~ deb9u1 (apt-get yüklü)
mcr

Yukarıdaki tüm varyasyonları denedim, statik yapılarla (git-20191029) ve biraz daha iyi olurken, ses ve video senkronizasyonu. Eğer denemek büyük bir --max_muxing_queue_size değerine ihtiyaç duyarsa. 40960 kullandım.
mcr
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.