Saya telah membuat satu set screencasts menggunakan recordmydesktop di ubuntu 12.10. Outputnya adalah file ogv. Ketika saya menonton file ogv menggunakan pemutar film (totem) default, terlihat baik - audio dan video dalam sinkronisasi. Ketika ditranskode (oleh saya atau youtube) audio dan video tidak sinkron. Sepertinya saya melewati satu atau dua slide sambil menceritakan.
Memperbarui
Saya menduga masalahnya lebih tepat ditandai sebagai menjatuhkan duplikat frame selama transcoding. Mengkonversi video tempat mouse bergerak sepertinya berfungsi dengan baik. Tetapi ketika saya hanya berbicara selama slide, frame duplikat itu dijatuhkan.
Saya melihat ini tetapi ini bukan situasi saya (mencoba untuk pergi dari ogv -> apa pun) /superuser/436187/ffmpeg-convert-video-w-dropped-frames-out-of-sync
File AVI tampaknya menerjemahkan dengan benar! Saya menganggap ini akan menjadi petunjuk besar bagi seseorang. Saya masih ingin melacak masalah mendasarnya. Saya sedang menguji konversi video saya sebelumnya ke AVI tetapi ini membutuhkan waktu karena saya harus memeriksa setiap transisi.
Contohnya
Ini adalah file OGV asli dari gtk-recordmydesktop: http://dl.dropbox.com/u/64693533/sync_test/sync_test1.ogv
Video dimulai dengan slide selama 10 detik, lalu naik menjadi 3 slide lebih banyak masing-masing. Setiap kali saya memajukan slide, saya juga mengetuk mikrofon (10s, 15s, 20s, 25s).
Berikut adalah beberapa konversi yang dilakukan (masing-masing menampilkan masalah waktu video sendiri):
http://dl.dropbox.com/u/64693533/sync_test/sync_test1.mp4
- ini menunjukkan slide pertama dalam bingkai pertama tetapi dengan cepat maju melewatinya
- ini dilakukan dengan menggunakan stock ffmpeg
http://dl.dropbox.com/u/64693533/sync_test/sync_test1.ffmpeg-static.mp4
- yang ini cukup dekat - untuk beberapa alasan di usia 13-an itu memutuskan untuk maju
- ini dilakukan menggunakan build statis ffmpeg dari beberapa hari yang lalu
Ini dia di youtube - Anda dapat melihat bahwa pada usia 13-an ia bergerak lebih awal (dari slide 1 -> slide 2):
Ini bukti bahwa file OGV berfungsi dengan benar:
terjemahan ffmpeg
Menggunakan ffmpeg atau avconv saya sepertinya mendapatkan hasil yang sama seperti youtube (transisi tampaknya terjadi lebih awal tetapi tidak harus pada saat yang sama).
Berikut ini adalah perintah yang saya gunakan (dengan ffmpeg statis terbaru) dan keluaran:
$ ~ / ffmpeg / ffmpeg -i JSP.ogv JSP.mp4 ffmpeg versi N-50025-gb8bb661 Hak cipta (c) 2000-2013 pengembang FFmpeg dibangun pada 17 Feb 2013 05:23:03 dengan gcc 4.6 (Debian 4.6.3-1) konfigurasi: --prefix = / root / ffmpeg-static / 64bit --extra-cflags = '- I / root / ffmpeg-static / 64bit / sertakan -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-libvamelame --enable-grey --enable-libass - -enable-libfreetype --enable-libopenjpeg --enable-libspeex --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-version3 --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 contoh lib kami 0.17.102 / 0.17.102 libpostproc 52. 2.100 / 52. 2.100 [ogg @ 0x34d4640] Beberapa fisbone untuk aliran yang sama tidak diterapkan. Perbarui versi FFmpeg Anda dengan yang terbaru dari Git. Jika masalah masih terjadi, itu berarti file Anda memiliki fitur yang belum diimplementasikan. [ogg @ 0x34d4640] Penguraian header gagal untuk aliran 0 [ogg @ 0x34d4640] File rusak, keyframe tidak ditandai dengan benar. Masukan # 0, ogg, dari 'JSP.ogv': Durasi: 00: 12: 49,67, mulai: 0,000000, bitrate: 224 kb / s Stream # 0: 0: Data: tidak ada Streaming # 0: 1: Video: theora, yuv420p, 1600x880 [SAR 1: 1 DAR 20:11], 15 fps, 15 tbr, 15 tbn, 15 tbc Metadata: RECORDMYDESKTOP: 0.3.8.1 Streaming # 0: 2: Audio: vorbis, 22050 Hz, mono, fltp, 89 kb / s [libx264 @ 0x369c5e0] menggunakan SAR = 1/1 [libx264 @ 0x369c5e0] menggunakan kemampuan cpu: MMX2 SSE2Fast SSSE3 FastShuffle SSE4.2 AVX [libx264 @ 0x369c5e0] profil Tinggi, level 4.0 [libx264 @ 0x369c5e0] 264 - core 129 r2230 1cffe9f - H.264 / MPEG-4 AVC codec - Copyleft 2003-2012 - http://www.videolan.org/x264.html - options: cabac = 1 ref = 3 deblock = 1: 0: 0 analisis = 0x3: 0x113 saya = hex subme = 7 psy = 1 psy_rd = 1.00: 0.00 mixed_ref = 1 me_range = 16 chroma_me = 1 trellis = 1 8x8dct = 1 cqm = 0 deadzone = 21,11 fast_pskip = 1 chroma_qp_offset = -2 utas = 6 lookahead_threads = 1 sliced_threads = 0 nr = 0 decimate = 1 interlaced = 0 bluray_compat = 0 constrained_intra = 0 bframe = 3 b_pyramid = 2 b_padas = 0 bb; 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 Output # 0, mp4, ke 'JSP.mp4': Metadata: encoder: Lavf54.63.100 Streaming # 0: 0: Video: h264 ([33] [0] [0] [0] / 0x0021), yuv420p, 1600x880 [SAR 1: 1 DAR 20:11], q = -1--1, 15360 tbn , 15 tbc Metadata: RECORDMYDESKTOP: 0.3.8.1 Streaming # 0: 1: Audio: aac ([64] [0] [0] [0] / 0x0040), 22050 Hz, mono, s16, 128 kb / s Pemetaan aliran: Streaming # 0: 1 -> # 0: 0 (theora -> libx264) Streaming # 0: 2 -> # 0: 1 (vorbis -> libvo_aacenc) Tekan [q] untuk berhenti, [?] Untuk bantuan [ogg @ 0x34d4640] File rusak, bingkai non-key tidak ditandai dengan benar. Pesan terakhir diulang 2 kali File rusak, non-keyframe tidak ditandai dengan benar. = 00: 00: 08.37 bitrate = 28.7kbits / s dup = 66 drop = 0 File rusak, keyframe tidak ditandai dengan benar.waktu = 00: 00: 51.01 bitrate = 125.3kbits / s dup = 675 drop = 0 File rusak, keyframe tidak ditandai dengan benar.waktu = 00: 00: 55,05 bitrate = 140.2kbits / s dup = 782 drop = 0 File rusak, keyframe tidak ditandai dengan benar.waktu = 00: 00: 59,60 bitrate = 140,5 kbits / s dup = 836 drop = 0 [ogg @ 0x34d4640] File rusak, keyframe tidak ditandai dengan benar. File rusak, keyframe tidak ditandai dengan benar.waktu = 00: 01: 08.00 bitrate = 143.0kbits / s dup = 900 drop = 0 File rusak, keyframe tidak ditandai dengan benar.waktu = 00: 01: 11.86 bitrate = 141.6kbits / s dup = 910 drop = 0
... Diulang berkali-kali ...
File rusak, keyframe tidak ditandai dengan benar.waktu = 00: 12: 47.62 bitrate = 153.0kbits / s dup = 9087 drop = 0 frame = 11521 fps = 87 q = -1.0 Lsize = 14849kB waktu = 00: 12: 49.48 bitrate = 158.1kbits / s dup = 9087 drop = 0 video: 2401kB audio: 12024kB subtitle: 0 tajuk global: 0kB muxing overhead 2,938094% [libx264 @ 0x369c5e0] bingkai I: 49 Rata-rata QP: 16,05 ukuran: 29658 [libx264 @ 0x369c5e0] bingkai P: 2912 Rata-rata QP: 9,88 ukuran: 114 [libx264 @ 0x369c5e0] bingkai B: 8560 Rata-rata QP: 12,76 ukuran: 78 [libx264 @ 0x369c5e0] B-frame berturut-turut: 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% P16..4: 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% skip: 99.9% [libx264 @ 0x369c5e0] mb B I16..4: 0.0% 0.0% B16..8: 0.3% 0.0% langsung: 0.0% lewati: 99.7% L0: 65.3% L1: 34.6% BI: 0.1% [libx264 @ 0x369c5e0] 8x8 mengubah intra: 0,5% antar: 15,8% [libx264 @ 0x369c5e0] kode y, uvDC, uvAC intra: 6,4% 0,1% 0,1% antar: 0,0% 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% 5% 5% [libx264 @ 0x369c5e0] i8c dc, h, v, p: 100% 0% 0% 0% 0% [libx264 @ 0x369c5e0] P-Frame Tertimbang: Y: UV 0,0%: 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 masih bergerak lebih awal tetapi pada waktu yang berbeda. Kedengarannya seperti gtk-recordmydesktop menghasilkan "file rusak". Yang menyebalkan adalah bahwa OGV tidak bekerja sehingga sepertinya saya harus bisa membuat ini bekerja dengan beberapa set opsi.
Saya telah menemukan bahwa saya dapat membuat video dalam kdenlive dan tampaknya berfungsi di sana. Saya masih ingin tahu apa yang sedang terjadi. kdenlive melakukan pekerjaan yang jauh lebih baik, tetapi kadang-kadang masih maju lebih awal.
sumber
ffmpeg
biner yang disertakan .Jawaban:
Mengapa mengonversikan ke OGV ketika unggahan terakhir Anda akan ke youtube, saya mungkin salah tetapi Anda dapat mengonversi ke codec video x264 dengan AAC Audio bahkan di linux dan mengunggahnya ke youtube mengingat itulah yang mereka inginkan untuk diunggah. Sudahkah Anda mencoba membuat h264 dan mengunggah ke youtube alih-alih file OGV dan melihat apakah itu masalahnya. Karena saya berani bertaruh bahwa jika itu menyelesaikannya, Anda kemudian tahu bahwa itu adalah masalah dengan OGV yang diunggah ke youtube, dan jika itu tidak menyelesaikannya, itu bisa menjadi masalah frame-rate dengan interpretasi youtube atau sesuatu yang serupa.
Ada banyak masalah dengan file OGV yang diunggah ke youtube di masa lalu. Saya tidak dapat membayangkan bahwa ini sudah 100% diperbaiki bahkan pada titik ini.
http://support.google.com/youtube/bin/answer.py?hl=id&answer=1722171
EDIT: juga baru memperhatikan bahwa rekaman asli Anda di 15fps ... ini bisa jadi sumber masalah
EDIT 2: Saya agak sedikit salah membaca pertanyaan ... karena Anda memulai dengan file video OGV, dan saya melihat Anda akan ke MP4 ... ini mengubah sedikit hal .. .tapi saya akan menebak itu ada hubungannya dengan audio 15fps dan 22050 Hz ... Saya tahu sample rate tidak ada hubungannya dengan sinkronisasi audio, tetapi dari pengalaman ketika menggunakan frame rate dan audio samplerate standar, Saya cenderung melihat drifting ... mendapatkan ini untuk disinkronkan mungkin agak sulit sementara tidak dapat mengedit ini setelah perekaman awal dengan editor video murah ...
Sementara perangkat lunak telah menjadi lebih baik tentang melayang audio itu masih merupakan masalah umum ketika menggunakan framerate dan samplerate yang tidak biasa karena titik sinkronisasi keyframed tidak standar dan bisa membulatkan bingkai kunci dll ...
Anda melihat di mana tertulis "File rusak, keyframe tidak ditandai dengan benar." itulah yang dimaksud dengan ...
saran saya bagi Anda adalah untuk sedekat mungkin, bawa ke editor video dan selipkan dan potong audio agar sesuai dengan yang Anda inginkan. Sayangnya terkadang ini adalah cara memperbaikinya ...
Transcoder berbasis perangkat lunak tidak selalu berfungsi sebagaimana mestinya ... hense mengapa pengaturan protool dan / atau pengaturan avid akan disertai dengan perangkat keras untuk lebih memastikan kemampuan sinkronisasi dan laju bingkai konstan dll ...
Hal lain yang bisa Anda coba adalah mengonversi rekaman ke framerate standar, dan mencoba untuk merevisi ulang audio ... karena saya cukup yakin itu adalah video yang melayang ... mungkin sedikit melambat dan kemudian melaju ke arah akhir atau sebaliknya.
EDIT: Saya bisa mendapatkan video untuk disinkronkan ke aslinya menggunakan perintah ffmpeg ini ... mungkin perlu klausa laju yang merupakan apa yang saya duga
ffmpeg -i sync_test1.ogv -strict experimental -pix_fmt yuv420p -r 15 -vcodec h264 -acodec aac sync_test1.mp4
sumber
-r 15
sama dengan menghilangkannya karena ffmpeg akan mewarisi laju bingkai input secara default, dan file output yang dihasilkan, dengan atau tanpa-r 15
sama persis dengan ffmpeg dari git head (versi N-50285-gad89952). Jika ini berfungsi untuk Anda menggunakan versi ffmpeg yang lebih lama, ini bisa berupa regresi dan harus dilaporkan ke pelacak bug FFmpeg .Saya kesulitan dengan masalah serupa di Ubuntu 12.04.3 LTS. Saya memperbaiki masalah menggunakan build ffmpeg statis yang tersedia dari http://johnvansickle.com/ffmpeg/
sumber
Coba ubah saja wadah ke avi daripada transcoding, yang sepertinya berfungsi lebih baik untuk youtube:
sumber