Menggunakan FFmpeg untuk menemukan atom moov

20

Saya memiliki perpustakaan video, yang semuanya harus disesuaikan untuk streaming web dengan menempatkan moovatom di depan sisa video. Ini memungkinkan pemutaran dimulai sebelum klien benar-benar mengunduh video.

Apakah ada cara yang dapat diandalkan untuk memeriksa apakah video tertentu telah disesuaikan dengan mencari berapa byte dalam moovatom terjadi? Ini hanya untuk keperluan debugging.

Jamie Taylor
sumber
4
Hanya untuk referensi bagi orang lain yang tertarik menempatkan atom moov di awal untuk memfasilitasi pemutaran lihat -movflags faststartopsi atau qt-faststartalat di ffmpeg.
llogan

Jawaban:

22

FFmpeg tidak akan menunjukkan informasi ini kepada Anda, sungguh.

Anda bisa menggunakan AtomicParsley untuk mengurai file, misalnya:

AtomicParsley input.mp4 -T 

Ini akan menunjukkan lokasi atom di pohon. Jika moovatom berada di awal file, itu harus datang tepat setelah ftypatom, sehingga Anda dapat mencoba mem-parsing output, misalnya dalam Bash, hanya mencetak baris kedua dan memeriksa apakah mengandung moov:

AtomicParsley input.mp4 -T | sed -n 2p | grep -q "moov" && echo "yup" || echo "nope"
slhck
sumber
Haha, yah… senang bisa membantu :)
slhck
Catatan, ini tidak akan berfungsi pada file DASH YouTube.
Steven Penny
1
@StevenPenny Benar, segmen DASH tidak mengandung seluruh pohon Atom, karena mereka hanya segmen, tidak menyelesaikan file ISO Base Media.
slhck
12

Dengan menggunakan iniqtfaststart (tidak sama dengan ffmpeg qt-faststart), qtfaststart -l input .mp4 akan menampilkan urutan atom tingkat atas.

$ qtfaststart -l bad.mp4
ftyp (32 bytes)
free (8 bytes)
mdat (559619 bytes)
moov (52916 bytes)
$ qtfaststart -l good.mp4
ftyp (32 bytes)
moov (52916 bytes)
mdat (559619 bytes)
$
mark4o
sumber
3
Jika Anda telah pipmenginstal, Anda dapat menginstal qtfaststartdenganpip install qtfaststart
qff
Anda juga dapat menginstal dengan Homebrew:brew install qtfaststart
Brandon Durham
-1

Anda dapat melakukan ini dengan FFprobe:

ffprobe -v trace infile.mp4

Atau dengan Bento4 :

$ mp4info infile.m4a
Mengajukan:
  merek utama: isom
  versi minor: 200
  merek yang kompatibel: isom
  merek yang kompatibel: iso2
  merek yang kompatibel: mp41
  mulai cepat: tidak

$ mp4info outfile.m4a
Mengajukan:
  merek utama: isom
  versi minor: 200
  merek yang kompatibel: isom
  merek yang kompatibel: iso2
  merek yang kompatibel: mp41
  mulai cepat: ya
Steven Penny
sumber