Katakanlah saya memulai pekerjaan FFmpeg yang membutuhkan waktu berjam-jam:
$ ffmpeg -i large.mp4 out.mp4
Apakah ada cara saya dapat melihat pratinjau bagian selesai dari out.mp4 sementara sisanya belum dikodekan?
Mencoba ini mengeluh "moov atom not found". Jika saya berspekulasi mengapa, itu karena pemutaran memerlukan informasi header yang diperbarui dan benar untuk hadir di awal file, dan FFmpeg tidak repot-repot melakukan ini saat menyandikan file; ia menunggu sampai benar-benar selesai.
Jawaban:
Sederhananya, tidak. File MP4 tidak dapat dilihat kecuali mereka selesai melakukan penyandian. Saat Anda mengidentifikasi dengan benar, untuk memulai pemutaran, pemain harus mengurai
moov
atom, yang berisi info penting tentang apa yang akan diputar. Untuk keterangannya, Anda dapat melihat spesifikasi Format File QuickTime , yang menjadi dasar untuk MPEG-4 Bagian 14, atau singkatnya, format MP4.Atom ini hanya dapat ditulis setelah trek media dikodekan sepenuhnya. Bukan berarti ffmpeg "tidak repot-repot" untuk menulisnya — Anda hanya harus menunggu sampai semua data ada untuk memiliki semua informasi yang diperlukan.
Atom kemudian ditulis di ujung wadah. Untuk pemutaran lebih cepat, Anda dapat memindahkan atom ini ke awal file (misalnya, menggunakan
qt-faststart
atau dengan opsi ffmpeg-movflags +faststart
). Ini, tentu saja, juga hanya dapat dilakukan setelah penyandian selesai.Karena itu, MP4 yang terfragmentasi dapat dipratinjau hingga titik tertentu, seperti yang disarankan Gyan , dengan menambahkan opsi berikut:
Yang juga bisa Anda lakukan adalah beralih ke metode pengkodean tersegmentasi, misalnya menggunakan
segment
muxer . Ini membuat klip sebagian hingga panjang yang telah ditentukan, yang berarti bahwa Anda dapat mulai melihat pratinjau segmen yang ada. Selanjutnya Anda dapat bergabung dengan segmen kembali ke satu file dengan penyalinan aliran.sumber