ใช้ FFmpeg เพื่อค้นหา moov atom


20

ฉันมีห้องสมุดวิดีโอซึ่งทั้งหมดนี้ควรได้รับการปรับสำหรับการสตรีมด้วยเว็บโดยวางmoovอะตอมไว้ด้านหน้าของส่วนที่เหลือของวิดีโอ วิธีนี้ทำให้สามารถเริ่มเล่นได้ก่อนที่ไคลเอ็นต์จะดาวน์โหลดวิดีโอทั้งหมด

มีวิธีที่เชื่อถือได้ในการตรวจสอบว่ามีการปรับวิดีโอบางอย่างโดยการค้นหาจำนวนไบต์ในmoovอะตอมหรือไม่? ใช้สำหรับการดีบักเท่านั้น


4
เพียงสำหรับการอ้างอิงสำหรับคนอื่น ๆ ที่มีความสนใจในการวางอะตอม MOOV ในการเริ่มต้นที่จะอำนวยความสะดวกในการเล่นดู-movflags faststartตัวเลือกหรือเครื่องมือในqt-faststart ffmpeg
llogan

คำตอบ:


22

FFmpeg จะไม่แสดงข้อมูลนี้ให้คุณเห็นจริงๆ

คุณสามารถใช้AtomicParsleyเพื่อแยกวิเคราะห์ไฟล์เช่น:

AtomicParsley input.mp4 -T 

นี่จะแสดงตำแหน่งของอะตอมในต้นไม้ หากmoovอะตอมอยู่ที่จุดเริ่มต้นของไฟล์มันจะต้องมาหลังftypอะตอมดังนั้นคุณสามารถลองแยกวิเคราะห์ผลลัพธ์เช่นใน Bash เพียงพิมพ์บรรทัดที่สองและตรวจสอบว่ามีหรือไม่moov:

AtomicParsley input.mp4 -T | sed -n 2p | grep -q "moov" && echo "yup" || echo "nope"

ฮ่าฮ่า
อืม

หมายเหตุสิ่งนี้จะไม่ทำงานกับไฟล์ YouTube DASH
Steven Penny

1
@StevenPenny ถูกต้องเซ็กเมนต์ DASH ไม่มีแผนผัง Atom ทั้งหมดเนื่องจากเป็นเฉพาะเซ็กเมนต์ไม่ใช่ไฟล์ ISO Base Media ที่สมบูรณ์
slhck

12

เมื่อใช้สิ่งนี้qtfaststart (ไม่เหมือนกับ ffmpeg qt-faststart) qtfaststart -l อินพุต . mp4 จะแสดงลำดับของอะตอมระดับบนสุด

$ 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
ถ้าคุณได้pipติดตั้งคุณสามารถติดตั้งqtfaststartกับpip install qtfaststart
QFF

นอกจากนี้คุณยังสามารถติดตั้งกับ Homebrew:brew install qtfaststart
Brandon Durham

-1

คุณสามารถทำได้ด้วย FFprobe:

ffprobe -v trace infile.mp4

หรือกับBento4 :

$ mp4info infile.m4a
ไฟล์:
  แบรนด์หลัก: isom
  รุ่นรอง: 200
  ยี่ห้อที่เข้ากันได้: isom
  ยี่ห้อที่เข้ากันได้: iso2
  ยี่ห้อที่เข้ากันได้: mp41
  เริ่มต้นอย่างรวดเร็ว: ไม่

$ mp4info outfile.m4a
ไฟล์:
  แบรนด์หลัก: isom
  รุ่นรอง: 200
  ยี่ห้อที่เข้ากันได้: isom
  ยี่ห้อที่เข้ากันได้: iso2
  ยี่ห้อที่เข้ากันได้: mp41
  เริ่มต้นอย่างรวดเร็ว: ใช่
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.