Saya sangat suka video 50fps, tetapi saya tidak dapat membuat ffmpeg mengubahnya menjadi 50fps untuk saya.
Resolusi 720p baik-baik saja dengan saya, hanya perlu lebih banyak FPS.
50i hanya terlihat jauh lebih halus di pemain yang tepat (misalnya GOM Player deinterlaces video dan memainkannya pada 50Hz. Perbedaan yang sangat besar untuk video 25Hz.) ...
Baris perintah saya saat ini adalah:
ffmpeg -i 00010.MTS -threads 3 -filter:v yadif -s "1280x720" -r 50 -b:v 20M output.avi
Berikut ini detail video lainnya. Sumber video adalah dari camcoder Cannon HF10 AVCHD.
ffmpeg -i 00010.MTS -threads 3 -filter:v yadif -s "1280x720" -r 50 -b:v 20M output.avi
ffmpeg version N-37541-g670229e Copyright (c) 2000-2012 the FFmpeg developers
built on Feb 3 2012 20:14:17 with gcc 4.6.2
configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-ru
ntime-cpudetect --enable-avisynth --enable-bzlib --enable-frei0r --enable-libope
ncore-amrnb --enable-libopencore-amrwb --enable-libfreetype --enable-libgsm --en
able-libmp3lame --enable-libopenjpeg --enable-librtmp --enable-libschroedinger -
-enable-libspeex --enable-libtheora --enable-libvo-aacenc --enable-libvo-amrwben
c --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxavs --enable-
libxvid --enable-zlib
libavutil 51. 37.100 / 51. 37.100
libavcodec 54. 0.102 / 54. 0.102
libavformat 54. 0.100 / 54. 0.100
libavdevice 53. 4.100 / 53. 4.100
libavfilter 2. 61.100 / 2. 61.100
libswscale 2. 1.100 / 2. 1.100
libswresample 0. 6.100 / 0. 6.100
libpostproc 52. 0.100 / 52. 0.100
[h264 @ 000000000033FA30] Increasing reorder buffer to 1
Input #0, mpegts, from '00010.MTS':
Duration: 00:03:13.92, start: 0.482156, bitrate: 16304 kb/s
Program 1
Stream #0:0[0x1011]: Video: h264 (High) (HDMV / 0x564D4448), yuv420p, 1920x1
080 [SAR 1:1 DAR 16:9], 50 fps, 50 tbr, 90k tbn, 50 tbc
Stream #0:1[0x1100]: Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, stereo, s16,
256 kb/s
File 'output.avi' already exists. Overwrite ? [y/N] y
w:1920 h:1080 pixfmt:yuv420p tb:1/1000000 sar:1/1 sws_param:
[yadif @ 0000000003CE95B0] mode:0 parity:-1 auto_enable:0
[scale @ 0000000003CE9550] w:1920 h:1080 fmt:yuv420p -> w:1280 h:720 fmt:yuv420p
flags:0x4
Output #0, avi, to 'output.avi':
Metadata:
ISFT : Lavf54.0.100
Stream #0:0: Video: mpeg4 (FMP4 / 0x34504D46), yuv420p, 1280x720 [SAR 1:1 DA
R 16:9], q=2-31, 20000 kb/s, 50 tbn, 50 tbc
Stream #0:1: Audio: mp3 (U[0][0][0] / 0x0055), 48000 Hz, stereo, s16, 128 kb
/s
Stream mapping:
Stream #0:0 -> #0:0 (h264 -> mpeg4)
Stream #0:1 -> #0:1 (ac3 -> libmp3lame)
Press [q] to stop, [?] for help
frame= 15 fps= 0 q=2.0 size= 945kB time=00:00:00.62 bitrate=12481.3kbits/
frame= 32 fps= 32 q=2.0 size= 2132kB time=00:00:01.30 bitrate=13435.2kbits/
frame= 51 fps= 34 q=2.0 size= 3372kB time=00:00:02.06 bitrate=13409.2kbits/
frame= 70 fps= 35 q=2.0 size= 4641kB time=00:00:02.82 bitrate=13482.8kbits/
frame= 76 fps= 35 q=2.0 Lsize= 5047kB time=00:00:03.06 bitrate=13511.9kbits
-vcodec libx264
? Bukan berarti itu akan menjadi masalah sebesar ~ 20 MBit / dt, tapi tetap saja.Jawaban:
"Untuk sebagian besar kasus praktis, tidak mungkin untuk mengambil video progresif lengkap dari konten interlaced."
Juga jika Anda dapat mengunggah sampel kecil video, itu akan membantu Anda dengan gemetar.
Sumber: mplayerhq.hu/DOCS/HTML/en/menc-feat-telecine.html
sumber
Sama seperti interlacing konten progresif membagi setiap frame menjadi 2 bidang, sehingga menggandakan laju bingkai, metode umum deinterlacing adalah menggabungkan masing-masing 2 bidang menjadi 1 bingkai, yang mengurangi laju dengan 2, sehingga mengambil 50 menjadi 25fps. Anda tentu saja dapat menggandakan setiap kerangka akhir, tetapi itu tidak memberikan manfaat apa pun.
Pertama, kita dapat membaca untuk tidak menggunakan -deinterlace, dan sebagai gantinya (yang sudah Anda lakukan):
Anda mungkin akan menemukan bagian yadif dari dokumentasi FFMPEG cukup menarik:
Perhatikan bagaimana MODE default adalah 0, yang menginstruksikan FFMPEG untuk mengeluarkan 1 frame untuk masing-masing 2 bidang, sehingga mengurangi separuh fps. Saya pikir yang Anda cari adalah MODE 1: satu frame per bidang . Saya tidak terlalu yakin bagaimana cara menggunakan parameter opsional ini tetapi mungkin sesuatu seperti
sumber
Menurut dokumentasi ,
-r
opsi mengatur frame file output per detik. Misalnya, ini menetapkan output ke 50 frame per detik:sumber
ffmpeg -i input.avi -deinterlace -filter:v yadif -s "1280x720" output.avi
sumber
Perintah ini bekerja untuk saya:
Sumbernya adalah file camcorder Sony.
sumber