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.


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"

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)
$

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.