압축 비디오에서 프레임 유형 읽기


1

디코딩 부분의 계산을 저장하기 위해 압축 비디오를 분석하고 싶습니다.

압축 된 비디오를 읽고 각 프레임이 I / B / P 프레임인지 확인하고 프레임 유형에 따라 특정 작업 (프로세스)을 수행하고 싶습니다.

이것을 사용하여 어떻게 할 수 ffmpeg있습니까? 압축 된 비디오를 읽는 방법을 문서에서 보지 못했습니다.

당신의 도움을 주셔서 감사합니다.


따라서 실제로 프레임을 처리하고 싶지 않고 유형 만 정확합니까? 이를 위해서는 낮은 수준의 비트 스트림 액세스가 필요하지만 ffmpeg는이를 처리하지 않습니다.
Daniel B

프레임을 처리하고 싶습니다! @ bertieb, 내 질문을 편집하고 질문의 의미를 변경했습니다. 프레임의 유형, I, B, P를 고려하여 각 프레임을 처리하고 싶습니다.
albert1905

답변:


2

하여 프레임 유형을 결정 ffmpeg하거나ffprobe

비디오 파일을 통해 작업하면서 프레임 유형을 확인하려고합니다. 나는 과거에 이것을 할 이유가 있었다. SO에 대한 Gyan Doshi의 대답은 다음과 같습니다.

ffmpeg -i input.mp4 -vf select='eq(n,334)',showinfo -f null -

위의 내용은 비디오의 335 번째 프레임에 대한 출력을 생성합니다

n: 0 pts: 171008 pts_time:11.1333 pos:  1090471 fmt:yuv420p sar:1/1 s:1280x720 
i:P iskey:0 type:B checksum:A72D197D plane_checksum:[9008E835 680AC49A 6CD66C90] 
mean:[136 122 134] stdev:[65.4 7.0 9.5]

선택 필터를 건너 뛰고 모든 프레임에 대해 출력을 얻은 다음 incBrain 처럼 grep 할 수 있습니다 . 코딩되지 않은 디스플레이 사진 번호를 원합니다.

(추가 링크에 추가 링크가 없음)

원하는 방식에 따라 select위와 같이 필터를 사용 하거나 모든 프레임에 대한 정보를 가져와 (을 사용하여 ffprobe video.mp4 -show_frames) 출력을 처리 할 수 ​​있습니다.


내 대답에 언급되었지만 여기에 붙여 넣지 않은 것처럼 grep 경로로 이동하면 코딩되지 않은 display_picture_number를 사용하십시오. 후자는 인코딩 순서를 추적하고 프레임이 표시되는 순서를 나타내지 않습니다.
Gyan

@Gyan 고마워요. 링크를 추가했을 때 마지막 행이 잘릴 수 있습니다
bertieb

감사! 당신은 나를 너무 많이 도와주었습니다. 몇 가지 질문 (작은 것)이 있습니다. 1. 비디오의 모든 프레임을 전달하려면 간단한 for 루프를 수행하면됩니다. select = 'eq (n, i), 맞습니까? 2. "의미있는"방식으로 프레임을 그리는 방법이 있습니까? HSV를 사용하여 I 프레임을 그린 기사에서 그 아이디어를 얻었습니까? 3. select 연산자를 반복하면 : display_picture_number가 필요하지 않습니까? h264 / mp4에 주문 문제가 있음을 기억하기 때문입니다.
albert1905

프레임을 읽고 싶은 또 하나의 것은 매트릭스를 저장하고 그녀에게 계산을하는 것을 의미합니까?
albert1905

@ albert1905 후속 질문이있는 경우 새로운 질문에서 가장 잘 해결됩니다. 당신이 요구하는 것들 중 일부는 SU에 비해 ​​너무 광범위 할 수도 있습니다. 그것은 달성하고자하는 것에 달려 있습니다.
bertieb
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.