ฉันได้สร้างชุด screencasts โดยใช้ recordmydesktop บน Ubuntu 12.10 เอาต์พุตเป็นไฟล์ ogv เมื่อฉันดูไฟล์ ogv โดยใช้โปรแกรมเล่นภาพยนตร์เริ่มต้น (โทเท็ม) มันดูดี - เสียงและวิดีโอกำลังซิงค์ เมื่อมีการแปลงรหัส (โดยฉันหรือ youtube) เสียงและวิดีโอจะไม่ซิงค์กัน ดูเหมือนว่าฉันจะข้ามผ่านสไลด์หนึ่งหรือสองขณะที่เล่าเรื่อง
ปรับปรุง
ฉันสงสัยว่าปัญหานั้นมีลักษณะที่เหมาะสมกว่าการวางเฟรมซ้ำในระหว่างการแปลงรหัส การแปลงวิดีโอที่เมาส์เคลื่อนไหวดูเหมือนว่าจะทำงานได้ตามปกติ แต่เมื่อฉันแค่พูดระหว่างสไลด์เฟรมที่ซ้ำกันเหล่านั้นจะลดลง
ฉันเห็นสิ่งนี้ แต่มันไม่ใช่สถานการณ์ของฉัน (พยายามที่จะไปจาก ogv -> อะไรก็ได้) /superuser/436187/ffmpeg-convert-video-w-dropped-frames-out-of-sync
ไฟล์ AVI ดูเหมือนจะแปลถูกต้อง! ฉันคิดว่านี่จะเป็นคำใบ้ที่ยิ่งใหญ่สำหรับใครบางคน ฉันยังต้องการติดตามปัญหาพื้นฐาน ฉันกำลังทดสอบการแปลงวิดีโอก่อนหน้าของฉันเป็น AVI แต่ใช้เวลาสักครู่เนื่องจากฉันต้องตรวจสอบการเปลี่ยนแปลงแต่ละครั้ง
ตัวอย่าง
นี่คือไฟล์ OGV ดั้งเดิมจาก gtk-recordmydesktop: http://dl.dropbox.com/u/64693533/sync_test/sync_test1.ogv
วิดีโอเริ่มต้นด้วยการนำเสนอภาพนิ่งเป็นเวลา 10 วินาทีจากนั้นเลื่อนไปอีก 5 สไลด์ต่อ 5 วินาที ทุกครั้งที่ฉันเลื่อนสไลด์ฉันแตะไมโครโฟนด้วย (10s, 15s, 20s, 25s)
ต่อไปนี้เป็น Conversion ที่เสร็จสิ้นแล้ว (แต่ละจอแสดงผลว่าเป็นปัญหาเกี่ยวกับช่วงเวลาของวิดีโอ):
http://dl.dropbox.com/u/64693533/sync_test/sync_test1.mp4
- ภาพนี้แสดงสไลด์แรกในเฟรมแรก แต่เลื่อนผ่านอย่างรวดเร็ว
- สิ่งนี้ทำโดยใช้หุ้น ffmpeg
http://dl.dropbox.com/u/64693533/sync_test/sync_test1.ffmpeg-static.mp4
- อันนี้ค่อนข้างใกล้ - ด้วยเหตุผลบางอย่างที่อายุ 13 ปีก็ตัดสินใจที่จะก้าวหน้า
- สิ่งนี้ทำโดยใช้การสร้างแบบคงที่ของ ffmpeg เมื่อไม่กี่วันที่ผ่านมา
ที่นี่อยู่บน youtube - คุณจะเห็นได้ว่าเมื่ออายุประมาณ 13 ปีมันจะเริ่มเร็วขึ้น (จากสไลด์ 1 -> สไลด์ 2):
นี่คือข้อพิสูจน์ว่าไฟล์ OGV ทำงานอย่างถูกต้อง:
การแปล ffmpeg
ใช้ ffmpeg หรือ avconv ฉันดูเหมือนจะได้ผลลัพธ์ที่คล้ายกันในขณะที่ youtube (การเปลี่ยนดูเหมือนจะเกิดขึ้นเร็ว แต่ไม่จำเป็นในเวลาเดียวกัน)
นี่คือคำสั่งที่ฉันใช้ (พร้อมกับบิลด์สแตติกล่าสุดของ ffmpeg) และเอาต์พุต:
$ ~ / ffmpeg / ffmpeg -i JSP.ogv JSP.mp4 ffmpeg รุ่น N-50025-gb8bb661 ลิขสิทธิ์ (c) 2000-2013 นักพัฒนา FFmpeg สร้างเมื่อ ก.พ. 17 2013 05:23:03 with gcc 4.6 (Debian 4.6.3-1) การกำหนดค่า: - คำนำหน้า = / root / ffmpeg-static / 64bit --extra-cflags = '- I / root / ffmpeg-static / 64bit / รวมถึงแบบคงที่' --extra-ldflags = '- L / root / ffmpeg- แบบคงที่ / 64 บิต / lib -static '--extra-libs =' - lxml2 -lexpat -lfreetype '- เปิดใช้งานแบบคงที่ - ปิดการใช้งานร่วมกัน - ปิดการใช้งาน -ffserver - ปิดใช้งาน doc -enable-bzlib - -zlib --enable-postproc --enable-runtime-cpudetect --enable-libx264 --enable-gpl --enable-libtheora --enable-libvorbis --enable-libmp3lame --enable- สีเทา --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 libswresample 0. 17.102 / 0. 17.102 libpostproc 52 2.100 / 52 2.100 [ogg @ 0x34d4640] ไม่มี fisbone หลายรายการสำหรับสตรีมเดียวกัน อัปเดตเวอร์ชัน FFmpeg ของคุณเป็นเวอร์ชั่นล่าสุดจาก Git หากปัญหายังคงเกิดขึ้นแสดงว่าไฟล์ของคุณมีคุณสมบัติที่ไม่ได้ใช้งาน [ogg @ 0x34d4640] การแยกส่วนหัวล้มเหลวสำหรับสตรีม 0 [ogg @ 0x34d4640] ไฟล์ไม่ทำงานคีย์เฟรมทำเครื่องหมายไม่ถูกต้อง ป้อน # 0, ogg จาก 'JSP.ogv': ระยะเวลา: 00: 12: 49.67, เริ่มต้น: 0.000000, อัตราบิต: 224 kb / s สตรีม # 0: 0: ข้อมูล: ไม่มี สตรีม # 0: 1: วิดีโอ: theora, yuv420p, 1600x880 [SAR 1: 1 DAR 20:11], 15 fps, 15 tbr, 15 tbn, 15 tbc เมตา RECORDMYDESKTOP: 0.3.8.1 สตรีม # 0: 2: เสียง: vorbis, 22050 Hz, mono, fltp, 89 kb / s [libx264 @ 0x369c5e0] โดยใช้ SAR = 1/1 [libx264 @ 0x369c5e0] ใช้ความสามารถของ cpu: MMX2 SSE2Fast SSSE3 FastShuffle SSE4.2 AVX [libx264 @ 0x369c5e0] โปรไฟล์สูงระดับ 4.0 [libx264 @ 0x369c5e0] 264 - core 129 r2230 1cffe9f - H.264 / MPEG-4 AVC codec - Copyleft 2003-2012 - http://www.videolan.org/x264.html - ตัวเลือก: cabac = 1 ref = 3 deblock = 1: 0: 0 วิเคราะห์ = 0x3: 0x113 me = hex subme = 7 psy_rd 1 psy_rd = 1.00: 0.00 mix_ref = 1 me_range = 16 chroma_me = 1 trellis = 1 8x8dct = 1 cqm = 0 deadzone = 21,11 fast_pskip 1 chroma_qp_offset = -2 เธรด = 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_adia = 1 b_bia = 0 direct = 1 = 1 น้ำหนัก = 1 = 1 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 เอาต์พุต # 0, mp4, ถึง 'JSP.mp4': เมตา เข้ารหัส: Lavf54.63.100 สตรีม # 0: 0: วิดีโอ: h264 ([33] [0] [0] / 0x0021), yuv420p, 1600x880 [SAR 1: 1 DAR 20:11], q = -1--1, 15360 tbn , 15 tbc เมตา RECORDMYDESKTOP: 0.3.8.1 สตรีม # 0: 1: เสียง: aac ([64] [0] [0] [0] / 0x0040), 22050 Hz, โมโน, s16, 128 kb / s สตรีมการแมป: สตรีม # 0: 1 -> # 0: 0 (theora -> libx264) สตรีม # 0: 2 -> # 0: 1 (vorbis -> libvo_aacenc) กด [q] เพื่อหยุด [?] เพื่อขอความช่วยเหลือ [ogg @ 0x34d4640] ไฟล์ที่ใช้งานไม่ได้, คีย์เฟรมที่ไม่ได้ทำเครื่องหมายไม่ถูกต้อง ข้อความล่าสุดซ้ำ 2 ครั้ง ไฟล์ที่ใช้งานไม่ได้, คีย์ - เฟรมที่ไม่ได้ทำเครื่องหมายไม่ถูกต้อง = 00: 00: 08.37 บิตเรต = 28.7kbits / s dup = 66 drop = 0 ไฟล์แตก, คีย์เฟรมไม่ได้ทำเครื่องหมายอย่างถูกต้อง. เวลา = 00: 00: 51.01 บิตเรต = 125.3kbits / s dup = 675 drop = 0 ไฟล์แตก, คีย์เฟรมไม่ได้ทำเครื่องหมายอย่างถูกต้อง. เวลา = 00: 00: 55.05 บิตเรต = 140.2kbits / s dup = 782 drop = 0 ไฟล์แตก, คีย์เฟรมไม่ได้ทำเครื่องหมายอย่างถูกต้อง. เวลา = 00: 00: 59.60 บิตเรต = 140.5kbits / s dup = 836 drop = 0 [ogg @ 0x34d4640] ไฟล์ไม่ทำงานคีย์เฟรมทำเครื่องหมายไม่ถูกต้อง ไฟล์แตก, คีย์เฟรมไม่ได้ทำเครื่องหมายอย่างถูกต้อง. เวลา = 00: 01: 08.00 บิตเรต = 143.0kbits / s dup = 900 drop = 0 ไฟล์แตก, คีย์เฟรมไม่ได้ทำเครื่องหมายอย่างถูกต้อง. เวลา = 00: 01: 11.86 บิตเรต = 141.6kbits / s dup = 910 drop = 0
... ซ้ำหลายครั้ง ...
ไฟล์แตก, คีย์เฟรมไม่ได้ทำเครื่องหมายอย่างถูกต้อง. เวลา = 00: 12: 47.62 บิตเรต = 153.0kbits / s dup = 9087 drop = 0 frame = 11521 fps = 87 q = -1.0 Lsize = 14849kB เวลา = 00: 12: 49.48 บิตเรต = 158.1kbits / s ซ้ำ = 9087 drop = 0 วิดีโอ: เสียง 2401kB: คำบรรยาย 12024kB: 0 ส่วนหัวทั่วโลก: 0kB muxing ค่าใช้จ่าย 2.938094% [libx264 @ 0x369c5e0] เฟรม I: 49 ค่าเฉลี่ย QP: 16.05 ขนาด: 29658 [libx264 @ 0x369c5e0] เฟรม P: 2912 ค่าเฉลี่ย QP: 9.88 ขนาด: 114 [libx264 @ 0x369c5e0] เฟรม B: 8560 ราคา QP: 12.76 ขนาด: 78 [libx264 @ 0x369c5e0] เฟรม B ต่อเนื่อง: 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% 0.0% ข้าม: 99.9% [libx264 @ 0x369c5e0] mb B I16..4: 0.0% 0.0% 0.0% B16..8: 0.3% 0.0% 0.0% โดยตรง: 0.0% ข้าม: 99.7% L0: 65.3% L1: 34.6% BI: 0.1% [libx264 @ 0x369c5e0] การแปลงภายใน 8x8: 0.5% อินเตอร์: 15.8% [libx264 @ 0x369c5e0] รหัส y, uvDC, uvAC ภายใน: 6.4% 0.1% 0.1% ระหว่าง: 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% [libx264 @ 0x369c5e0] i8c dc, h, v, p: 100% 0% 0% 0% 0% [libx264 @ 0x369c5e0] น้ำหนัก P เฟรม: Y: 0.0% UV: 0.0% [libx264 @ 0x369c5e0] อ้างอิง P L0: 82.5% 1.4% 11.9% 4.3% [libx264 @ 0x369c5e0] ref B L0: 47.2% 52.4% 0.4% [libx264 @ 0x369c5e0] อ้างอิง B L1: 99.2% 0.8% [libx264 @ 0x369c5e0] kb / s: 25.60
วิดีโอยังคงก้าวหน้าเร็ว แต่ในเวลาต่างกัน ดูเหมือนว่า gtk-recordmydesktop กำลังสร้าง "ไฟล์ที่เสียหาย" สิ่งที่น่ารำคาญคือ OGV ทำงานได้ดังนั้นจึงดูเหมือนว่าฉันจะสามารถใช้งานตัวเลือกบางอย่างได้
ฉันพบว่าฉันสามารถแสดงวิดีโอเป็น kdenlive และดูเหมือนว่าจะทำงานที่นั่น ฉันยังอยากรู้ว่าเกิดอะไรขึ้น kdenlive ทำงานได้ดีขึ้นมาก แต่ก็ยังมีความก้าวหน้าในบางครั้ง
ffmpeg
ไบนารีที่รวมอยู่