ffprobe를 사용하여 mp4 / h.264 파일에 대한 특정 정보를 얻는 방법


13

저는 수만 개의 비디오 파일에 관한 몇 가지 기본 정보를 검색하는 저 PHP 개발자입니다. 나는이 추출는 FFmpeg를 사용하여 약간의 행운을 했어 video bitrate, video width, video height, duration, 그리고 aspect ratio그들로부터하지만, 약 5 %의 오차 비율이 여전히 내가 처리하는 방법을 모르는 파일의 엄청난 수의 저를 떠난다. 비디오는 재생되지만 ffmpeg가 반환하는 방대한 양의 데이터는 반환 된 XML을 구문 분석하여 발생하는 모든 조건에서 필요한 것을 찾는 방법에 대해 당황했습니다. (파일은 지난 15 년 정도의 컬렉션이며, 일부는 새로 인코딩 된 파일이고, 다른 파일은 몇 년 전에 변환 된 파일입니다.)

어쨌든, 나는 ffprobe지속 시간을 얻는 데 다음과 같은 용도를 발견했으며 ffmpeg & ffprobe 사용의 복잡성을 이해하는 사람이 내가 필요로하는 다른 값을보다 간단하게 찾는 데 도움이되기를 바랍니다. 미친 코드 나는 ffmpeg의 전체 결과를 통해 등반하기 위해 자신을 찾고 있습니다.

ffprobe -i "video.mp4" -show_entries format=duration -v quiet -of csv="p=0"

미리 감사드립니다.

설명:

아래 cmd를 사용하여 필요한 것을 "볼"수 있지만 비디오 비트 전송률 검색, 오디오 비트 전송률 억제 / 무시 또는 2 중 어느 것을 결정하는 등 필요한 것을 추출하는 방법을 이해하지 못합니다. 사용할 다른 지속 시간 (오디오 / 비디오 지속 시간?)

C:\>ffprobe -v error -show_entries stream=width,height,bit_rate,duration -of default=noprint_wrappers=1 input.mp4

duration=1712.000000
bit_rate=64000
width=320
height=240
duration=1711.946113
bit_rate=359827
duration=1712.000000
bit_rate=N/A
duration=1712.000000
bit_rate=N/A

답변:


18

첫 번째 비디오 스트림의 정보 만 원한다면 다음을 사용하십시오 -select_streams v:0.

ffprobe -v error -select_streams v:0 -show_entries stream=width,height,duration,bit_rate -of default=noprint_wrappers=1 input.mp4

출력 예 :

width=640
height=480
duration=10.000000
bit_rate=942704
  • 모든 항목을 사용 목록을 보려면 -show_streams및 / 또는 -show_format대신을 -show_entries.
  • 다양한 출력 형식 스타일에 대해서는 FFprobe 문서 : 작성기 를 참조하십시오 .
  • 자세한 예는 FFmpeg Wiki : FFprobe 를 참조하십시오 .

도움을 주셔서 대단히 감사합니다 .... 다른 답변을 먼저 받아 들였기 때문에 다른 답변을 받아 들여야했고 트릭을 수행했습니다.
GDP

@GDP 다음 사항을 고려하십시오 :이 경우 가장 먼저 통보됩니다. 최신 답변입니다.
p2or September

@poor 나는 rep 지점을 매우 심각하게 생각하지만이 답변은 다른 화면을 수락 할 때까지 수락 할 수있는 화면에 없었습니다. 모두에게 죄송합니다 ... 실제로 기분을 상하게하지 않았습니다.
GDP

9

에서 https://trac.ffmpeg.org/wiki/FFprobeTips

첫 번째 비디오 스트림의 비트 레이트를 얻으려면 다음을 사용할 수 있습니다.

ffprobe -v error -select_streams v:0 -show_entries stream=bit_rate -of default=noprint_wrappers=1:nokey=1 input.mp4

어디 -select_steams v:0에서 첫 번째 비디오 스트림을 선택 :nokey=1하고 키없이 값을 제공합니다. grep으로 파이핑하여 정보를 추출 할 수도 있지만 시스템에서 해당 정보를 사용할 수 있는지 확실하지 않습니다.

ffprobe -v error -show_entries stream=width,height,bit_rate,duration -of default=noprint_wrappers=1 input.mp4 | grep -oP "(?<=bit_rate\=)[0-9]+"

도움이 되었기를 바랍니다!


"그래프에 파이프"... 내가 10 대 시절에 해왔 던 일처럼 들리네 .. 도와 줘서 고마워!
GDP

@GDP에게 감사하지만 LordNeckbeard 's는 아마도 처음 출판 된 그대로 받아 들여야 할 답변입니다.
moorej
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.