FFmpeg를 사용하여 무브 원자 위치 찾기


20

나는 비디오 라이브러리를 가지고 있는데 , 비디오의 나머지 부분보다 원자 를 우선시하여 웹 스트리밍에 맞게 조정 해야합니다moov . 이를 통해 클라이언트가 비디오를 완전히 다운로드하기 전에 재생을 시작할 수 있습니다.

moov아톰에서 발생 하는 바이트 수를 찾아 특정 비디오가 조정되었는지 확인하는 신뢰할 수있는 방법 이 있습니까? 이것은 디버깅 목적으로 만 사용됩니다.


4
재생을 용이하게하기 위해 처음에 moov atom을 배치하는 데 관심이있는 다른 사람들을 위해 참조하려면의 -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 기본 미디어 파일이 아니라 세그먼트 일뿐입니다.
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설치 설치할 수 있습니다 qtfaststartpip 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 출력 파일 .m4a
파일:
  주요 브랜드 : isom
  부 버전 : 200
  호환 브랜드 : isom
  호환 브랜드 : iso2
  호환 브랜드 : mp41
  빠른 시작 : 예
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.