비디오 파일의 지속 시간을 밀리 초 단위로, 즉 결정적 방식으로 정수로 어떻게 찾을 수 있습니까? ffprobe를 사용하여 재생 시간을 가져 왔지만 모든 파일 형식의 재생 시간이 지정되지 않았습니다.mediainfo를 사용하여 초 또는 다른 형식으로 비디오 파일의 길이를 찾는 방법은 무엇입니까?
4
A
답변
14
사용하여 다음 명령을
I) 비디오 스트림의 시간으로 활용하려면 다음 작업 미디어 파일의 지속 시간을 얻으려면
II
$ mediainfo --Inform="Video;%Duration%" [inputfile]
일) :
$ mediainfo --Inform="General;%Duration%" [inputfile]
III를) 오디오 스트림의 재생 시간 만 가져 오려면 :
$ mediainfo --Inform="Audio;%Duration%" [inputfile]
는
IV) 하나 개 이상의 매개 변수의 값으로 활용하려면 다음 작업을 수행 할 수 mediainfo --Inform="Video;%Duration%" [inputfile]
를 사용하는 IOTA에 의해 제공하지만 이상한 결과를 반환으로
1280,720,3000000,30.0
3
:
$ mediainfo --Inform="Video;%Width%,%Height%,%BitRate%,%FrameRate%" [inputfile]
출력은 다음과 같이 될 것이다. 예를 들어
, 기간 31S 565ms와 비디오 주어진 명령의 출력은 다음과 같습니다
31565
그것은 나에게 적합하지이었고, 나는 다음과 같은 솔루션을 내놓았다 :
mediainfo --Inform="Video;%Duration/String3%" inputExample.webm
반환 값은 다음과 같습니다
00:00:31.565
결국 , 당신은 단지, 초로 변환, PHP의 말을하자, 반환 값을 포맷 할 수 있습니다 예를 들면 : 우리는 또한 어떤 기간을 얻을 수는 FFmpeg를 사용할 수 있습니다
$parsed = date_parse('00:00:31.565');
echo $parsed['hour'] * 3600 + $parsed['minute'] * 60 + $parsed['second'];
1
비디오 또는 오디오 파일.
이는 FFmpeg은이 linkimport subprocess
import re
process = subprocess.Popen(['ffmpeg', '-i', path_of_media_file], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
stdout, stderr = process.communicate()
matches = re.search(r"Duration:\s{1}(?P<hours>\d+?):(?P<minutes>\d+?):(?P<seconds>\d+\.\d+?),", stdout, re.DOTALL).groupdict()
print matches['hours']
print matches['minutes']
print matches['seconds']
니스, 그것이 내가 발견 ffprobe과 동일 따라 설치하려면 Mediainfo를보다 더 작은 형식을 지원합니다. mediainfo는 이러한 목적을 위해 특별히 제작되었지만 전체 ffmpeg 프레임 워크는 트랜스 코딩 및 무거운 설치를 위해 제작되었습니다. –