Saya mencoba mengonversi video dari WMV ke MP4 dengan FFmpeg tetapi butuh beberapa jam. Jika saya mencoba mengonversinya menjadi AVI, hanya membutuhkan waktu sekitar 10-15 menit.
versi ffmpeg
ffmpeg version N-43206-gf857465
built on Aug 4 2012 16:10:39 with gcc 4.7.1 (GCC)
Konversi ke MP4
ffmpeg -i input.wmv -vcodec libx264 output.mp4
libavutil 51. 66.100 / 51. 66.100
libavcodec 54. 49.100 / 54. 49.100
libavformat 54. 22.100 / 54. 22.100
libavdevice 54. 2.100 / 54. 2.100
libavfilter 3. 5.102 / 3. 5.102
libswscale 2. 1.100 / 2. 1.100
libswresample 0. 15.100 / 0. 15.100
libpostproc 52. 0.100 / 52. 0.100
Input #0, asf, from 'input.wmv':
Metadata:
WMFSDKVersion : 12.0.7601.17514
WMFSDKNeeded : 0.0.0.0000
IsVBR : 0
encoder : Lavf54.22.100
Duration: 01:14:23.06, start: 0.000000, bitrate: 324 kb/s
Stream #0:0: Video: msmpeg4 (MP43 / 0x3334504D), yuv420p, 1280x720, 15 tbr,
1k tbn, 1k tbc
[libx264 @ 03427620] using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle Cac
he64
[libx264 @ 03427620] profile High, level 3.1
[libx264 @ 03427620] 264 - core 125 r2208 d9d2288 - H.264/MPEG-4 AVC codec - Cop
yleft 2003-2012 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deb
lock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 m
e_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chro
ma_qp_offset=-2 threads=3 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 i
nterlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1
b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=15 scenec
ut=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, to 'output.mp4':
Metadata:
WMFSDKVersion : 12.0.7601.17514
WMFSDKNeeded : 0.0.0.0000
IsVBR : 0
encoder : Lavf54.22.100
Stream #0:0: Video: h264 ([33][0][0][0] / 0x0021), yuv420p, 1280x720, q=-1--
1, 15 tbn, 15 tbc
Stream mapping:
Stream #0:0 -> #0:0 (msmpeg4 -> libx264)
Konversi ke MP4 dengan copy
ffmpeg -i input.wmv -c:v:1 copy output.mp4
libavutil 51. 66.100 / 51. 66.100
libavcodec 54. 49.100 / 54. 49.100
libavformat 54. 22.100 / 54. 22.100
libavdevice 54. 2.100 / 54. 2.100
libavfilter 3. 5.102 / 3. 5.102
libswscale 2. 1.100 / 2. 1.100
libswresample 0. 15.100 / 0. 15.100
libpostproc 52. 0.100 / 52. 0.100
Input #0, asf, from 'input.wmv':
Metadata:
WMFSDKVersion : 12.0.7601.17514
WMFSDKNeeded : 0.0.0.0000
IsVBR : 0
encoder : Lavf54.22.100
Duration: 01:14:23.06, start: 0.000000, bitrate: 324 kb/s
Stream #0:0: Video: msmpeg4 (MP43 / 0x3334504D), yuv420p, 1280x720, 15 tbr,
1k tbn, 1k tbc
[libx264 @ 03437620] using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle Cac
he64
[libx264 @ 03437620] profile High, level 3.1
[libx264 @ 03437620] 264 - core 125 r2208 d9d2288 - H.264/MPEG-4 AVC codec - Cop
yleft 2003-2012 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deb
lock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 m
e_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chro
ma_qp_offset=-2 threads=3 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 i
nterlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1
b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=15 scenec
ut=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, to 'output.mp4':
Metadata:
WMFSDKVersion : 12.0.7601.17514
WMFSDKNeeded : 0.0.0.0000
IsVBR : 0
encoder : Lavf54.22.100
Stream #0:0: Video: h264 ([33][0][0][0] / 0x0021), yuv420p, 1280x720, q=-1--
1, 15 tbn, 15 tbc
Stream mapping:
Stream #0:0 -> #0:0 (msmpeg4 -> libx264)
Konversi ke AVI dengan copy
ffmpeg -i input.wmv -c:v:1 copy output.avi
Input #0, asf, from 'input.wmv':
Metadata:
WMFSDKVersion : 12.0.7601.17514
WMFSDKNeeded : 0.0.0.0000
IsVBR : 0
encoder : Lavf54.22.100
Duration: 01:14:23.06, start: 0.000000, bitrate: 324 kb/s
Stream #0:0: Video: msmpeg4 (MP43 / 0x3334504D), yuv420p, 1280x720, 15 tbr,
1k tbn, 1k tbc
Output #0, avi, to 'output.avi':
Metadata:
WMFSDKVersion : 12.0.7601.17514
WMFSDKNeeded : 0.0.0.0000
IsVBR : 0
ISFT : Lavf54.22.100
Stream #0:0: Video: mpeg4 (FMP4 / 0x34504D46), yuv420p, 1280x720, q=2-31, 20
0 kb/s, 15 tbn, 15 tbc
Stream mapping:
Stream #0:0 -> #0:0 (msmpeg4 -> mpeg4)
Apakah ada beberapa parameter tambahan yang perlu saya lewati?
ffmpeg
video-conversion
mp4
wmv
Giorgi
sumber
sumber
copy
, Anda tidak melakukan encoding ulang apa pun. Perangkat keras apa yang Anda miliki, mis. CPU? Apa OS Anda dan FFmpeg versi apa itu?Jawaban:
Menyalin aliran
Saat Anda menelepon
-c:v:1 copy
, FFmpeg akan mengambil bitstream video yang ada dan mengalirkannya . Bitstream video hanya dienkapsulasi dalam wadah luar, mis. WMV, AVI atau MP4 - bitstream video Anda yang sebenarnya adalahmsmpeg4
dan akan tetap seperti ini.Jika Anda ingin tahu lebih banyak tentang apa yang saya bicarakan, lihat di sini: Apa itu Codec (misalnya DivX?), Dan bagaimana perbedaannya dari Format File (misalnya MPG)?
Saat menyalin bitstream, FFmpeg tidak perlu benar-benar memecahkan kode dan meng-encode ulang video yang sebenarnya. Hanya perlu menggabungkan bitstream video ke dalam format wadah baru, yang seringkali merupakan operasi yang agak sederhana dan karenanya tidak butuh waktu lama.
Pengkodean
Berbeda dengan itu, jika Anda memanggil
-vcodec libx264
(atau-c:v libx264
, sintaks yang harus Anda gunakan karenavcodec
sudah usang), FFmpeg akan dipaksa untuk men-decode bitstream video darimsmpeg4
ke format mentah, kemudian menyalurkannya kex264
, enkoder H.264.x264 cepat, tetapi tetap saja, pengkodean video membutuhkan waktu - terutama saat konten 720p. Dan mungkin butuh lebih dari satu jam, terutama jika input Anda sudah lebih dari satu jam. Selain itu, CPU Anda mungkin bukan yang tercepat. Ini adalah alasan utama encoder Visual MPEG-4 yang lebih tua seperti XviD masih ada dan sangat populer: Mereka membutuhkan waktu lebih sedikit untuk menyandikan dari codec H.264. Mereka mungkin tidak memberi Anda kinerja terbaik dalam hal kualitas vs ukuran file, tetapi mereka cepat.
Itu semua dikatakan: Anda dapat mempercepat pengkodean x264 dengan memaksa preset. Preset adalah pengaturan dan kisaran optimisasi encoder dari: ultrafast, superfast, veryfast, lebih cepat, cepat, sedang, lambat, lebih lambat, sangat lambat. Perintah Anda kemudian dapat terlihat seperti ini:
Ini harus berjalan lebih cepat daripada tanpa preset. Satu-satunya kelemahan adalah tidak mencapai kualitas yang baik untuk tingkat kompresi yang sama dibandingkan dengan, misalnya
-preset veryslow
,.Selain itu, tidak banyak yang dapat Anda lakukan kecuali berinvestasi dalam CPU yang cepat, dan memastikan Anda menjalankan FFmpeg terbaru dengan dukungan x264.
Untuk info lebih lanjut lihat FFmpeg Wiki: H.264 Panduan Pengkodean .
sumber
libx264
ketika Anda menetapkan ´h264` sebagai enkoder.fast
. Beberapa statistik menarik (jika VMAF dapat dipercaya di sini): streaminglearningcenter.com/blogs/…SEBAGAI saya bermain (berjam-jam tanpa henti) dengan konversi WMV-> MP4, saya menemukan cara super cepat untuk melakukannya. Tetapi memiliki harga: harga penyimpanan. Jika Anda mengonversi WMV menjadi lossless, maka dari lossless ke MP4, itu melakukan konversi penuh dalam waktu singkat. Tetapi Anda membutuhkan ruang HDD 100 kali untuk menyimpan versi lossless, yang menyakitkan.
Jadi ternyata Anda dapat memilih dari konversi WMV-> MP4 versi HDD yang sangat lambat atau sangat intensif dan Anda tidak punya pilihan lain.
Mengonversi WMV menjadi AVI lossless: ffmpeg.exe -i screen.wmv -vcodec ffv1 screen.avi Kemudian mengonversi AVI lossless ke MP4 (atau WebM, tidak masalah) ffmpeg.exe -i screen.avi screen.mp4
Sangat cepat!
sumber