[RUBY-ON-RAILS] 어떻게 비디오에서 방향 정보를 추출하는?
RUBY-ON-RAILS어떻게 비디오에서 방향 정보를 추출하는?
웹 문서의 톤을 통해 서핑 후에는 아이폰이 항상되는 480x360 화면 비율로 영상을 촬영하고 비디오 트랙에 변형 행렬을 적용 것으로 보인다. (되는 480x360 변경할 수 있지만, 특정 장치는 항상 동일)
여기 http://www.seqoy.com/correct-orientation-for-iphone-recorded-movies-with-ffmpeg/ 아이폰 OS 프로젝트 내에는 FFmpeg 소스 수정 및 매트릭스를 액세스하는 방법은
여기서 아이폰 OS-4에 변환 행렬을 찾는 청소기의 방법은 비디오 파일이 세로 방향 또는 풍경을 촬영 한 경우 어떻게 (아이폰 SDK)를 감지합니다.
어떻게 비디오의 방향은 아래 옵션 중 하나를 추출 할 수 있습니다 - - 아이폰 OS 3.2 - FFmpeg은 (명령어 광고 서버 측을 통해) - 루비
어떤 도움을 이해할 수있을 것이다.
해결법
-
==============================
1.대부분의 카메라는 EXIF - 메타 이내에 회전 / 방향을 저장하기 때문에, 난 exifttool 적극적으로 유지된다 루비 래퍼 일품이라고 mini_exiftool를 사용하여 제시한다.
대부분의 카메라는 EXIF - 메타 이내에 회전 / 방향을 저장하기 때문에, 난 exifttool 적극적으로 유지된다 루비 래퍼 일품이라고 mini_exiftool를 사용하여 제시한다.
exiftool 설치 :
apt-get을 exiftool || exiftool || 설치 양조 포트는 exiftool 설치
또는 관리자를 사용할 수 이제까지 패키지 무엇을 사용
mini_exiftool를 설치합니다 :
보석 mini_exiftool 설치
시도 해봐:
irb> require 'mini_exiftool' movie = MiniExiftool.new('test_movie.mov') movie.orientation #=> 90
건배
-
==============================
2.내가 지금까지 발견 한 바로는,는 FFmpeg은 아이폰의 방향을 감지 할 수있는 능력을 가지고 있지 않습니다. 그러나, 오픈 소스 라이브러리, Mediainfo를 할 수. 명령 줄 예 :
내가 지금까지 발견 한 바로는,는 FFmpeg은 아이폰의 방향을 감지 할 수있는 능력을 가지고 있지 않습니다. 그러나, 오픈 소스 라이브러리, Mediainfo를 할 수. 명령 줄 예 :
$ mediainfo test.mp4 | grep Rotation Rotation : 90°
아이폰 동일한 비디오의 추가 출력 예 :
Video ID : 1 Format : AVC Format/Info : Advanced Video Codec Format profile : Baseline@L3.0 Format settings, CABAC : No Format settings, ReFrames : 1 frame Codec ID : avc1 Codec ID/Info : Advanced Video Coding Duration : 7s 941ms Bit rate mode : Variable Bit rate : 724 Kbps Width : 480 pixels Height : 360 pixels Display aspect ratio : 4:3 Rotation : 90° Frame rate mode : Variable Frame rate : 29.970 fps Minimum frame rate : 28.571 fps Maximum frame rate : 31.579 fps Color space : YUV Chroma subsampling : 4:2:0 Bit depth : 8 bits Scan type : Progressive Bits/(Pixel*Frame) : 0.140 Stream size : 702 KiB (91%) Title : Core Media Video Encoded date : UTC 2011-06-22 15:58:25 Tagged date : UTC 2011-06-22 15:58:34 Color primaries : BT.601-6 525, BT.1358 525, BT.1700 NTSC, SMPTE 170M Transfer characteristics : BT.709-5, BT.1361 Matrix coefficients : BT.601-6 525, BT.1358 525, BT.1700 NTSC, SMPTE 170M
-
==============================
3.당신은 ffprobe를 사용할 수 있습니다. 다른 답변에서와 같이 어떤 그렙에 대한 필요 또는 기타 추가 프로세스, 또는 정규식 작업 출력을 구문 분석 없습니다.
당신은 ffprobe를 사용할 수 있습니다. 다른 답변에서와 같이 어떤 그렙에 대한 필요 또는 기타 추가 프로세스, 또는 정규식 작업 출력을 구문 분석 없습니다.
명령:
ffprobe -loglevel error -select_streams v:0 -show_entries stream_tags=rotate -of default=nw=1:nk=1 input.mp4
출력 예 :
90
명령:
ffprobe -loglevel error -select_streams v:0 -show_entries side_data=rotation -of default=nw=1:nk=1 input.mp4
출력 예 :
-90
명령:
ffprobe -loglevel error -select_streams v:0 -show_entries side_data=displaymatrix -of default=nw=1:nk=1 input.mp4
출력 예 :
00000000: 0 65536 0 00000001: -65536 0 0 00000002: 15728640 0 1073741824
ffprobe의 출력은 여러 가지 방법으로 포맷 할 수 있습니다. 예를 들어, JSON :
ffprobe -loglevel error -show_entries stream_tags=rotate -of json input.mp4 { "streams": [ { "tags": { "rotate": "90" }, "side_data_list": [ { } ] } ]
-
==============================
4.는 FFmpeg은이 .mov 파일에 대한 회전 값과 메타 데이터를보고합니다 :
는 FFmpeg은이 .mov 파일에 대한 회전 값과 메타 데이터를보고합니다 :
ffmpeg -i myrotatedMOV.mov
....
Duration: 00:00:14.31, start: 0.000000, bitrate: 778 kb/s Stream #0:0(und): Video: h264 (Baseline) (avc1 / 0x31637661), yuv420p, 480x360, 702 kb/s, 29.98 fps, 30 tbr, 600 tbn, 1200 tbc Metadata: rotate : 180 creation_time : 2013-01-09 12:47:36 handler_name : Core Media Data Handler Stream #0:1(und): Audio: aac (mp4a / 0x6134706D), 44100 Hz, mono, s16, 62 kb/s Metadata: creation_time : 2013-01-09 12:47:36 handler_name : Core Media Data Handler
내 응용 프로그램에서 나는 파이썬에서 즉, 정규식으로 잡아 당깁니다 :
import subprocess, re cmd = 'ffmpeg -i %s' % pathtofile p = subprocess.Popen( cmd.split(" "), stderr = subprocess.PIPE, close_fds=True ) stdout, stderr = p.communicate() reo_rotation = re.compile('rotate\s+:\s(?P<rotation>.*)') match_rotation = reo_rotation.search(stderr) rotation = match_rotation.groups()[0]
저는는 FFmpeg 버전 1.0을 사용, 비디오, 아이폰 5에서 기록에만 몇 .movs의 넓은 범위이 시도하지 않았습니다. 그러나 지금까지 너무 좋아.
-
==============================
5.유사 HdN8의 대답 @,하지만 파이썬 정규식없이이 :
유사 HdN8의 대답 @,하지만 파이썬 정규식없이이 :
$ ffprobe -show_streams any.MOV 2>/dev/null | grep rotate TAG:rotate=180
또는 JSON :
$ ffprobe -of json -show_streams IMG_8738.MOV 2>/dev/null | grep rotate "rotate": "180",
아니면 JSON (또는 다른 출력 형식)을 분석 할 수 있습니다.
-
==============================
6.나는 AVAssetExportSession, AVMutableComposition 및 입력 AVAssetTrack의 preferredTransform를 사용하여 iOS에서 추출했다. I는 대상의 크기를 채우도록 변환하여 변환 바람직 널링.
나는 AVAssetExportSession, AVMutableComposition 및 입력 AVAssetTrack의 preferredTransform를 사용하여 iOS에서 추출했다. I는 대상의 크기를 채우도록 변환하여 변환 바람직 널링.
파일로 보낸 후, 나는 내 레일 서버에 ASIHTTPRequest를 사용하여 업로드 및 클립을 사용하여 아마존 S3에 데이터를 전송합니다.
from https://stackoverflow.com/questions/5287603/how-to-extract-orientation-information-from-videos by cc-by-sa and MIT license
'RUBY-ON-RAILS' 카테고리의 다른 글
[RUBY-ON-RAILS] 루비 1.9.3 사용하는 경우에는 OpenSSL 오류 "인증 실패를 확인" (0) | 2020.02.25 |
---|---|
[RUBY-ON-RAILS] 잘못 JSON (1.9.2 루비 레일 3) 부호화하는 탈출 (0) | 2020.02.25 |
[RUBY-ON-RAILS] "보석 레일을 설치는"DNS 오류로 실패 (0) | 2020.02.25 |
[RUBY-ON-RAILS] 어떻게 레일 편집 필드에 표시된 값을 포맷 할 수 있습니다? (0) | 2020.02.25 |
[RUBY-ON-RAILS] 0.0.0.0 당신이 구입에 무슨 일이 레일 서버를 결합 하는가? (0) | 2020.02.25 |