Saya telah mendapatkan file WMV (v9 (WMV3), 960x720, 30.000030 fps, planar 4: 2: 0 YUV, diproduksi oleh PowerPoint 2010) dan perlu mengubahnya menjadi MPEG2 - satu-satunya format TVset saya dapat membaca dari USB flash drive. (Saya juga sudah mencoba MP4 / h.264, AVI / XVID - hanya MPEG2 yang berfungsi).
Saya telah berhasil melakukan pekerjaan dengan sederhana
ffmpeg -i "in.wmv" -c:v mpeg2video "out.mpg"
tetapi kualitas hasilnya mengerikan (distorsi visual yang terlihat jelas diperkenalkan) dan pemutarannya tidak mulus (terlalu lambat pada beberapa saat).
Saya juga sudah mencoba
ffmpeg -i "in.wmv" -c:v mpeg2video -pix_fmt yuv420p -me_method epzs -threads 4 -r 30.000030 -g 45 -bf 2 -trellis 2 -cmp 2 -subcmp 2 -s 960x720 -b 2500k -bt 300k -async 1 -y "out.mpg"
(Saya telah menemukan ini di suatu tempat di Internet dan dimodifikasi sedikit - mengubah resoultion, refresh rate dan format output (dari VOB ke telanjang MPG)) berhasil tetapi kualitasnya masih terlalu buruk.
Parameter apa yang harus saya gunakan untuk menghemat kualitas sebanyak mungkin? Rasio kompresi tidak masalah sama sekali, bahkan peningkatan ukuran file dapat diterima.
Hal lain yang benar-benar saya butuhkan (saya memilih untuk tidak memasukkannya dalam judul pertanyaan untuk menghindari membuatnya terlalu spesifik tapi saya menghargai itu dipertimbangkan dalam jawaban) menambahkan keheningan murni sebagai trek suara - tidak ada suara dalam asli tetapi TV mengeluh tentang hal itu dan saya ingin menyingkirkan keluhan ini. Saya telah menghasilkan file OGG Vorbis yang sama panjang (tepat kedua) menggunakan Audacity tetapi saya tidak bisa menggabungkannya dengan video:
ffmpeg -i in.mpg -i silence.ogg -c:v copy -c:a libmp3lame out.mpg
dan bahkan telanjang
ffmpeg -i in.mpg -c:v copy -out.mpg
memberikan "buffer underflow" dan "paket terlalu besar". (in.mpg adalah file yang dihasilkan oleh biner FFMPEG yang sama dan file WMV sumber yang sama menggunakan dua perintah pertama dalam pertanyaan).
Saya menggunakan Zeranoe FFMPEG build di Windows 7.
Philips 42PFL3606H/58
, saya menyandikan ke H.264 denganffmpeg -i "in.wmv" -sws_flags lanczos+accurate_rnd -c:v libx264 -crf 20 -preset slow -profile:v baseline -level 3.0 -pix_fmt yuv420p -tune fastdecode -x264-params keyint=240:min-keyint=20 "out.mp4"
- profil adalah yang terendah yang saya tahu dan bahkan lebih banyak tweak digunakan untuk membuat memainkan file yang dihasilkan menjadi tugas yang lebih mudah.Jawaban:
Masalahnya adalah bahwa bitrate default untuk MPEG-2 agak rendah (seperti kebanyakan encoders video lainnya di ffmpeg, yang H.264 menjadi pengecualian). MPEG-2 juga bukan pilihan terbaik sebagai codec hari ini.
Kualitas yang lebih baik untuk MPEG-2
Anda memiliki beberapa opsi jika ingin tetap menggunakan MPEG-2:
Tambah bitrate. Anda sekarang menggunakan
-b:v 2500k
. Jika video HD, Anda tidak akan jauh dengan hanya 2,5 MBit / s. Anda membutuhkan setidaknya dua kali lipat atau bahkan lebih untuk membuat hasilnya terlihat bagus. Sebagai contoh, gunakan-b:v 6000k -target pal-dvd
.Untuk 720p, saya pikir Anda masih harus menggunakan bitrate yang lebih tinggi. Ingatlah bahwa DVD menggunakan MPEG-2 dan menghasilkan sekitar 4,7 GB untuk 2 jam film, sehingga Anda mendapatkan sekitar 5-8 MBit / s. MPEG-2 benar-benar tidak terlalu efisien kompresi dan bekerja lebih baik pada bitrate yang lebih tinggi.
Gunakan pengaturan kualitas tertentu. Ubah
-b:v …
ke-qscale:v 2
. Angka di sini berkisar dari 1 hingga 31 dan lebih tinggi berarti kualitas lebih rendah. Tidak ada gunanya melampaui 4 atau 5. Jika Anda tidak peduli dengan bitrate, mulailah dengan 2 dan lihat apakah itu bekerja untuk Anda.Bercak dengan jumlah B-frame, metode estimasi gerakan atau ukuran GOP mungkin sedikit mengubah kualitas tetapi tidak akan menghasilkan perubahan besar.
Audio senyap
Gunakan
-f lavfi -i aevalsrc=0
untuk menghasilkan aliran audio diam. Sebagai contoh:Anda mungkin perlu menambahkan
-target pal-dvd
perintah di atas untuk memaksa ukuran buffer tertentu.Saya memilih MP3 sebagai codec. File MPEG tidak dapat mengandung audio selain MPEG Layer I dan II audio serta aliran PCM, jadi menggunakan file Ogg Vorbis yang diam tidak akan berfungsi kecuali jika Anda mengonversi aliran audio juga (yang bukan yang Anda lakukan saat menggunakan
-c:a copy
) .Gunakan codec video yang berbeda
Saya terkejut bahwa TV yang memutar file video akan membaca MPEG-2 tetapi tidak hal lain. Setidaknya video MPEG-4 Bagian II harus didukung (itulah yang Anda kenal sebagai "DivX" - enkoder MPEG-4 Bagian II). Jadi Anda bisa mencoba:
TV Anda mungkin sebenarnya juga mendukung H.264, tetapi hanya profil tertentu. Coba gunakan
baseline
profil, misalnya:Dalam contoh di atas saya telah menggunakan opsi CRF untuk mengatur kualitas alih-alih
qscale
. Lihat panduan pengkodean H.264 untuk lebih lanjut.sumber
ffmpeg -i "in.wmv" -f lavfi -i aevalsrc=0 -shortest -c:v libxvid -qscale:v 2 -c:a libmp3lame "out.mp4"
) - ini mengkodekan sekitar 100 frame dan kemudian mulai membanjiri layar dengan kesalahan seperti[mpeg @ 02f69ba0] buffer underflow i=0 bufi=235538 size=239761
dan[mpeg @ 02f69ba0] packet too large, ignoring buffer limits to mux it
.-b:v
. Menambahkannya ke jawaban saya. Mengenai pengaturan encoder: Anda tidak dapat membuat setiap frame sebagai B-frame. Selain itu, Anda memerlukan estimasi gerakan - semakin banyak metode, semakin baik kompresi. Tetapi jika ini adalah video yang dinamis, hal pertama yang Anda inginkan adalah meningkatkan bitrate secara signifikan. Pengaturan pengkodean benar - benar tidak memiliki banyak dampak. Adapun kesalahan Anda, apakah Anda yakin ini adalah kesalahan pada perintah yang benar? Sebuah[mpeg]
kesalahan hanya dapat terjadi jika file output Anda.mpg
, bukan ketika itu.mp4
.ffmpeg -i "in.wmv" -f lavfi -i aevalsrc=0 -shortest -c:v mpeg2video -qscale:v 2 -c:a libmp3lame "out.mpg"
tentu saja.-target pal-dvd
memecahkan masalah,-bufsize
jangan bekerja (saya sudah mencoba-b:v 7M -bufsize 7M -maxrate 7M
).Saya akan segera mengatakan jika ukuran file tidak terlalu penting maka coba saja dengan meningkatkan bit-rate.
Untuk audio bisu Anda mungkin hanya ingin menggunakan ffmpeg, saya tidak cukup tahu tentang Audacity untuk memberikan komentar. Saya telah menggunakan ini sebelumnya.
Ini tidak akan bekerja untuk Anda karena Anda menggunakan wadah mpg sehingga Anda mungkin ingin mencoba. (Wadah mp3)
Tampaknya berhasil bagi saya.
sumber