Ketika saya mencoba membuka film, saya baru saja membuat dengan perintah:
ffmpeg -pattern_type glob -i '*.JPG' -s 640x480 movie.mp4
Saya mendapatkan kesalahan dari QuickTime:
The document “movie.mp4” could not be opened.
The file may be damaged or may not be a movie file that is compatible with QuickTime Player.
Saya menggunakan perintah yang sama pada serangkaian gambar yang dihasilkan dari selang waktu iSight, tetapi dalam kasus ini gambar di atas berasal dari kamera digital. Resolusi ini jauh lebih tinggi, tetapi saya mengubah ke 640x480 dan saya tidak melihat apa pun di output yang menunjukkan masalah:
Input #0, image2, from '*.JPG':
Duration: 00:00:04.76, start: 0.000000, bitrate: N/A
Stream #0:0: Video: mjpeg, yuvj422p(pc), 4928x3264, 25 tbr, 25 tbn, 25 tbc
vs. film yang bekerja:
Input #0, image2, from '*.JPG':
Duration: 00:01:23.72, start: 0.000000, bitrate: N/A
Stream #0:0: Video: mjpeg, yuvj420p(pc), 640x480 [SAR 1:1 DAR 4:3], 25 fps, 25 tbr, 25 tbn, 25 tbc
Dan untuk hasilnya:
Output #0, mp4, to 'movie.mp4':
Metadata:
encoder : Lavf55.19.104
Stream #0:0: Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuvj422p, 640x480, q=-1--1, 12800 tbn, 25 tbc
Stream mapping:
Stream #0:0 -> #0:0 (mjpeg -> libx264)
vs. untuk yang bekerja:
Output #0, mp4, to 'movie.mp4':
Metadata:
encoder : Lavf55.19.104
Stream #0:0: Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuvj420p, 640x480 [SAR 1:1 DAR 4:3], q=-1--1, 12800 tbn, 25 tbc
Stream mapping:
Stream #0:0 -> #0:0 (mjpeg -> libx264)
Selain dari film yang bekerja lebih lama dan resolusi sumber yang lebih rendah, satu-satunya perbedaan yang dapat saya lihat adalah bahwa ada tambahan "[SAR 1: 1 DAR 4: 3]" yang disebutkan dalam aliran video, tetapi saya tidak tahu apa ini adalah, atau bagaimana mencoba memaksanya dalam film yang tidak berfungsi.
Pembaruan: Saya baru saja mengunduh VLC dan memutar film dengan baik. Jadi saya tahu ffmpeg tidak bersalah di sini.
ffprobe video.mp4
dapat digunakan untuk memeriksa format piksel mana yang digunakan.Jawaban:
Berdasarkan jawaban StackOverflow ini saya akan menambahkan
-pix_fmt yuv420p
perintah Anda seperti ini; salah satu komentar menyebutkan menambahkan-vcodec libx264
jadi itu termasuk di sini:Atau Anda bisa menggunakan format filter . Contoh ini akan menggunakan filter skala sebagai ganti
-s
, dan format filter bukan-pix_fmt
:Juga diuraikan dalam FFmpeg Wiki resmi di bawah judul "Pengkodean untuk pemain bodoh"; penekanan milikku:
sumber
-pix_fmt yuv420p
dipecahkan untuk saya!