Saya perlu menyandikan video pendek dalam format yang dapat diputar dengan windows media player di windows xp tanpa menginstal codec tambahan. Untuk proses pengodean ulang saya menggunakan ffmpeg.
Saya sudah mencoba msmpeg4v2
codec tetapi kualitasnya mengerikan (dibandingkan dengan video asli yang Anda lihat "blok" besar) jadi saya mencari codec lain yang bekerja di luar kotak dan setidaknya memiliki kualitas "ok".
Karena komentar menunjukkan bahwa itu mungkin bukan codec tetapi masalah bitrate, inilah perintah yang saya gunakan:
ffmpeg -i x.flv -vcodec msmpeg4v2 -acodec adpcm_ima_wav x.avi
Keluaran:
Input #0, flv, from 'x.flv':
Metadata:
moovPosition : 39337765
avcprofile : 100
avclevel : 30
aacaot : 2
videoframerate : 25
audiochannels : 2
Duration: 00:06:19.52, start: 0.000000, bitrate: 836 kb/s
Stream #0:0: Video: h264 (High), yuv420p, 702x396 [SAR 2596:3679 DAR 354:283], 25 tbr, 1k tbn, 50 tbc
Stream #0:1: Audio: aac, 48000 Hz, stereo, s16
w:702 h:396 pixfmt:yuv420p tb:1/1000000 sar:2596/3679 sws_param:
Output #0, avi, to 'x.avi':
Metadata:
moovPosition : 39337765
avcprofile : 100
avclevel : 30
aacaot : 2
videoframerate : 25
audiochannels : 2
ISFT : Lavf53.32.100
Stream #0:0: Video: msmpeg4v2 (MP42 / 0x3234504D), yuv420p, 702x396 [SAR 2596:3679 DAR 354:283], q=2-31, 200 kb/s, 25 tbn, 25 tbc
Stream #0:1: Audio: adpcm_ima_wav ([17][0][0][0] / 0x0011), 48000 Hz, stereo, s16, 384 kb/s
Stream mapping:
Stream #0:0 -> #0:0 (h264 -> msmpeg4v2)
Stream #0:1 -> #0:1 (aac -> adpcm_ima_wav)
Press [q] to stop, [?] for help
frame= 9485 fps=436 q=31.0 Lsize= 31197kB time=00:06:19.48 bitrate= 673.5kbits/s
video:12628kB audio:17913kB global headers:0kB muxing overhead 2.149820%
ffmpeg
codec
video-codecs
Pencuri
sumber
sumber
Jawaban:
Karena Anda tidak menentukan hal lain, aliran video Anda diatur untuk digunakan
q=2-31, 200 kb/s
. Ini menghasilkan673.5kbits
rata-rata, yang tidak banyak, setidaknya tidak untuk codec non-h.264.Coba paksakan
-b:v 1000K
misalnya. Dengan versi FFmpeg yang lebih lama, Anda hanya dapat menggunakan-b
.-qscale 2
misalnya. Di sini nilainya dapat berkisar dari 1 hingga 31. Nilai-nilai sehat untukqscale
berada dalam kisaran 2 hingga 5 atau lebih. Coba dan lihat apa yang mencapai hasil terbaik.Codec yang benar-benar didukung pada Windows secara default adalah ini :
Lihat juga tipe file Multimedia yang didukung Windows Media Player untuk informasi lebih lanjut.
Dengan FFmpeg, Anda dapat mencoba
mpeg1video
(MPEG-1) ataumpeg2video
(MPEG-2), ataumsmpeg4
(MPEG-4 Bagian II), tetapi saya tidak yakin apakah yang terakhir ini didukung secara universal. Jika Anda ingin bermain aman, Anda terpaksa menggunakan MPEG-1 atau MPEG-2.sumber
Saya memiliki masalah serupa dengan file .mp4 aac / h264 yang awalnya diputar dengan baik di Windows Media Player (Windows 7). Setelah saya edit dalam VirtualDub dan disimpan dalam format .avi, dan kemudian dikonversi kembali ke aac / h264 .mp4 menggunakan ffmpeg default, itu tidak akan lagi bermain di Windows Media Player.
Menggunakan MediaInfo untuk membandingkan file asli dan final, saya perhatikan profil encoding yang berbeda telah digunakan, dan pengaturan subsampel chroma yang berbeda (4: 2: 0, final 4: 4: 4). Dengan meng-enkode ulang dengan ffmpeg menggunakan opsi berikut ini WMP dapat memutar file dengan benar:
sumber
-pix_fmt yuv420p
dan mendukung ide ini.-pix_fmt yuv420p
saya dapat membuka mp4 di aplikasi Microsoft (baik pemutar bawaan dan Movie Maker).The FFMPEG wiki merekomendasikan berikut :
sumber
Karena kedua codec sudah didukung oleh wadah AVI yang bisa Anda lakukan
itu dengan asumsi XP Anda mendukung h.264, kalau tidak saya akan pergi dengan file wmv, quantizer yang sama, dan biarkan ffmpeg mengisi codec. Ini akan memberi Anda kualitas yang hampir sama dengan aslinya:
sumber
-sameq
seharusnya tidak digunakan untuk mengonversi format yang tidak berbagi skala kuantizer yang sama. Pilihan ini tidak berarti "kualitas yang sama" seperti yang digunakan oleh dokumentasi. Juga, H.264 dalam AVI tidak dianjurkan (meskipun H.264 lossless [tidak ada b-frame] harus baik-baik saja).