Sử dụng FFmpeg để xác định vị trí nguyên tử moov


20

Tôi có một thư viện video, tất cả chúng nên được điều chỉnh để phát trực tuyến bằng cách đặt moovnguyên tử lên trước phần còn lại của video. Điều này cho phép phát lại để bắt đầu trước khi khách hàng đã tải xuống hoàn toàn video.

Có cách nào đáng tin cậy để kiểm tra xem một video nhất định đã được điều chỉnh hay không bằng cách xác định vị trí có bao nhiêu byte trong moovnguyên tử? Điều này chỉ dành cho mục đích gỡ lỗi.


4
Chỉ để tham khảo cho những người khác quan tâm đến việc đặt nguyên tử moov vào đầu để tạo điều kiện phát lại, hãy xem -movflags faststarttùy chọn hoặc qt-faststartcông cụ ffmpeg.
llogan

Câu trả lời:


22

FFmpeg sẽ không cho bạn thấy thông tin này, thực sự.

Bạn có thể sử dụng AtomicParsley để phân tích tệp, ví dụ:

AtomicParsley input.mp4 -T 

Điều này sẽ cho bạn thấy vị trí của các nguyên tử trong một cái cây. Nếu moovnguyên tử ở đầu tập tin, nó sẽ phải đến ngay sau ftypnguyên tử, vì vậy bạn có thể thử phân tích cú pháp đầu ra, ví dụ như trong Bash, chỉ in dòng thứ hai và kiểm tra xem nó có chứa moov:

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

Haha, cũng rất vui khi được giúp đỡ :)
slhck

Lưu ý, điều này sẽ không hoạt động trên các tệp YouTube DASH.
Steven Penny

1
@StevenPenny Đúng, các phân đoạn DASH không chứa toàn bộ cây Nguyên tử, vì chúng chỉ là các phân đoạn, không hoàn thành các tệp ISO Base Media.
slhck

12

Sử dụng cái nàyqtfaststart (không giống như của ffmpeg qt-faststart), qtfaststart -l đầu vào .mp4 sẽ hiển thị thứ tự của các nguyên tử cấp cao nhất.

$ 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
Nếu bạn đã pipcài đặt, bạn có thể cài đặt qtfaststartvớipip install qtfaststart
qff

Bạn cũng có thể cài đặt với Homebrew:brew install qtfaststart
Brandon Durham

-1

Bạn có thể làm điều này với FFprobe:

ffprobe -v trace infile.mp4

Hoặc với Bento4 :

$ mp4info infile.m4a
Tập tin:
  thương hiệu lớn: isom
  phiên bản nhỏ: 200
  thương hiệu tương thích: isom
  nhãn hiệu tương thích: iso2
  nhãn hiệu tương thích: mp41
  bắt đầu nhanh: không

$ mp4info outfile.m4a
Tập tin:
  thương hiệu lớn: isom
  phiên bản nhỏ: 200
  thương hiệu tương thích: isom
  nhãn hiệu tương thích: iso2
  nhãn hiệu tương thích: mp41
  bắt đầu nhanh: có
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.