ffmpeg로 내 비디오 파일에 대한 정보를 얻으려고 할 때마다 좋은 것과 섞인 쓸모없는 정보가 많이 나옵니다.
나는 ffmpeg -i name_of_the_video.mpg
.
친근한 방법으로 얻을 수있는 가능성이 있습니까? 제 말은 JSON이 훌륭 할 것이라는 의미입니다 (그리고 추악한 XML도 괜찮습니다).
지금까지 응용 프로그램에서 정규식으로 데이터를 구문 분석하도록 만들었지 만 일부 특정 비디오 파일에 나타나는 불쾌한 모서리가 많이 있습니다. 나는 내가 만난 모든 것을 고쳤지만 더 많을 수도 있습니다.
나는 다음과 같은 것을 원했다.
{
"Stream 0": {
"type": "Video",
"codec": "h264",
"resolution": "720x480"
},
"Stream 1": {
"type": "Audio",
"bitrate": "128 kbps",
"channels": 2
}
}
답변
조금 늦었지만 여전히 누군가와 관련이있을 수 있습니다 ..
ffprobe
정말 좋은 방법입니다. 그러나 ffprobe
표시 할 정보 ( -show_format
, -show_packets
및 -show_streams
옵션 사용)를 지정해야합니다. 그렇지 않으면 주석 중 하나에서 언급 한 것처럼 빈 출력 만 제공됩니다.
예를 들어 ffprobe -v quiet -print_format json -show_format -show_streams somefile.asf
다음과 같은 결과를 얻을 수 있습니다.
{
"streams": [{
"index": 0,
"codec_name": "wmv3",
"codec_long_name": "Windows Media Video 9",
"codec_type": "video",
"codec_time_base": "1/1000",
"codec_tag_string": "WMV3",
"codec_tag": "0x33564d57",
"width": 320,
"height": 240,
"has_b_frames": 0,
"pix_fmt": "yuv420p",
"level": -99,
"r_frame_rate": "30000/1001",
"avg_frame_rate": "0/0",
"time_base": "1/1000",
"start_time": "0.000",
"duration": "300.066",
"tags": {
"language": "eng"
}
}],
"format": {
"filename": "somefile.asf",
"nb_streams": 1,
"format_name": "asf",
"format_long_name": "ASF format",
"start_time": "0.000",
"duration": "300.066",
"tags": {
"WMFSDKVersion": "10.00.00.3646",
"WMFSDKNeeded": "0.0.0.0000",
"IsVBR": "0"
}
}
}
답변
이제으로 -progress -
형식이 지정된 친숙한 정보를 인쇄하는 데 사용할 수 있습니다 key=value
.
ffmpeg -i video.mp4 .......-s 1920x1080 -progress - -y out.mp4
speed=5.75x
frame=697
fps=167.7
stream_0_0_q=39.0
bitrate=2337.0kbits/s
total_size=6979778
out_time_ms=23893333
out_time=00:00:23.893333
dup_frames=0
drop_frames=0
답변
시도해 볼 수 ffprobe
있습니다. JSON 출력을 얻기위한 올바른 명령은 다음과 같아야합니다.
ffprobe ... -print_format json
답변
또 다른 사용법 ffprobe
은 훌륭하게 구문 분석 할 수 있습니다.
ffprobe -v error -select_streams v:0 -show_entries stream=width,height,r_frame_rate,bit_rate,codec_name,duration -of csv=p=0:s=x video.mp4
결과 :
h264x600x480x25/1x385.680000x542326
-select_streams v:0
비디오 스트림 만 선택합니다. 해당 매개 변수를 제거하면 각 스트림에 대해 한 줄을 얻습니다.