다시 인코딩하지 않고 mp4 비디오 회전
-
21-12-2019 - |
문제
Debian Wheezy 시스템에서 Nexus 4로 촬영한 동영상을 회전하는 방법을 찾고 있습니다.동영상이 세로 모드로 촬영되었는데 가로 모드로 회전하고 싶습니다.바람직하게는 회전은 명령줄로 구동됩니다.
좋은 해결책을 암시하는 몇 가지 이전 질문을 찾았지만 제대로 작동하지 않는 것 같습니다.
우선 이런 질문이 있었습니다.FFmpeg를 사용하여 비디오 회전
하지만 이는 ffmpeg가 오래되었으며 avconv를 사용해야 함을 나타냅니다.나는 앞으로 나아갈 길을 자세히 설명하는 이 질문을 발견했습니다.https://askubuntu.com/questions/269429/how-can-i-rotate-video-by-180-degrees-with-avconv
이로 인해 다음 명령을 사용하게 되었습니다.
avconv -i original.mp4 -vf "transpose=1" -codec:v libx264 -preset slow -crf 25 -codec:a copy flipped.mp4
그러나 이는 매우 느리고(마지막 테스트에서는 3분 미만의 영상을 위해 6시간 이상 소요됨) 재생 가능한 영화가 생성되지 않습니다.또한 Mb 속도 > 수준 제한을 나타내는 로깅 출력 오류가 발생합니다.
다시 인코딩하는 데 문제가 있습니까?회전을 적용하기 전에 먼저 휴대폰의 비디오를 보다 "실행 가능한" 다른 인코딩으로 다시 인코딩해야 합니까?아니면 또 다른 중요한 점을 놓치고 있는 걸까요?
해결책
플래그를 고려한 미디어 플레이어가 회전하는 파일을 고려해야하는 메타 데이터를 변경하려면 다음과 같은 것을 시도하십시오.
ffmpeg -i input.mp4 -c copy -metadata:s:v:0 rotate=90 output.mp4
.
로 발견 된 StackOverflow 의 다른 위치
다른 팁
Rotation= 0이 문제가 해결되었습니다.나는 초상화 모드로 비디오를 녹화하기 시작했고, 실수를 실현하고 즉시 휴대 전화를 켜기를 계속하기 위해 프리를 켜십시오.내 iPhone은 비디오 전체를 초상화로 표시했습니다.
ffmpeg -i input.mp4 -c copy -metadata:s:v:0 rotate=0 output.mp4
.
고정.
FFmpeg
및 유사한 프로그램 메타 데이터 변경 -map_metadata
옵션을 사용하십시오. exiftool
는 회전 매트릭스 및 회전 플래그를 읽을 수 있으며 버전 10.89도 아래에 설명 된대로도 기록합니다.
실제 무손실 (메타 데이터 포함) 회전을 얻으려면 솔루션을 찾을 수 없었기 때문에 16 진수 편집기 (예 : hxd )를 분석하고 회전 된 비디오 파일을 분석했습니다.
MP4의 진정한 무손실 회전 :
- 육각 편집기로 MP4를 열고
vide
를 검색하여 비디오 트랙 의 메타 데이터를 찾습니다.
- 위의 행 (내 파일의 경우 내 파일의 경우, 때로는 12)
trak...\tkhd
를보아야합니다.
- 사이에있는
-
@
Sign (16 진수 40) - 회전 매트릭스가 저장되기 전에 두 행의
-
회전 없음 :
00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 40
-
180 ° :
FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 40
-
90 ° CW :
00 00 00 00 00 01 00 00 00 00 00 00 FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 40
-
90 ° CCW :
00 00 00 00 FF FF 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 40
필요할 때 파일을 변경하면 회전 플래그 (대부분의 현재 플레이어가 수행)를 지원하는 플레이어에서 회전해야합니다.
비디오에 스테레오 오디오가 들어있는 경우, 이것은 분명히 전환되지 않으므로 소리가 비디오 회전 (180 °)과 일치하도록 원하는 경우 왼쪽 및 오른쪽 채널을 전환해야합니다.
귀하의 질문에서 다루신 내용은 다음과 같습니다.
- 다시 인코딩하지 않고 회전할 수 있는 가능성은 거의 없습니다.해당 규칙(MJPEG 코덱)에 대한 예외 사항은 이미 지적되었지만 이를 사용하고 있을 가능성은 거의 없으므로 이 질문의 범위를 벗어납니다.이 기능이 있는 이유는 JPEG를 메타데이터를 통해 변환할 수 있기 때문이라고 언급하겠습니다.따라서 메타데이터 회전이 있는 컨테이너를 찾을 수 있다면 회전할 수 있지만 지금까지 존재하지 않거나 충분히 널리 퍼져 있는 컨테이너는 없습니다.
- 3분 분량의 비디오를 회전하고 다시 인코딩하는 데 몇 시간이 걸렸다면 문제는 막대한 해결.그리고 내 말은 거대한!의 출력을 제공해 주시겠습니까?
avprobe original.mp4
그래야 확인할 수 있습니다. - Libav 대 FFmpeg 논쟁은 매우 비생산적입니다(여기에 이미 게시된 허위 내용을 보면 알 수 있습니다).기본적으로 일어난 일은 일부 개발자가 한 방향으로 가고 다른 개발자가 프로젝트를 분할한 것입니다. FFmpeg 프로젝트가 이름을 유지할 수 있다는 사실은 우연일 뿐이며 한 프로젝트를 원본이라고 부르고 다른 프로젝트를 포크라고 부르는 것은 의미가 없습니다.프로젝트 간의 차이점은 주로 개발 스타일과 철학에 있습니다.FFmpeg를 더 많은 오픈 소스로, Libav를 더 많은 자유 소프트웨어로 특성화한다면 그렇게 착각하지는 않을 것입니다.합리적인 사람들은 결국 개발자들이 정신을 차리고 프로젝트를 병합하지 않고 더 큰 범위에서 협력하기를 바랍니다.Ubuntu가 원래 나왔을 때 모든 Debian GNU/Linux 채팅에는 "Ubuntu는 Debian이 아닙니다!!!!!!!"라는 문구를 따라 큰 메시지가 있었지만 이제는 상황이 진정되었고 양측 모두 하나에 상당히 만족하고 있습니다. 또 다른.
이 대답은 단순히 Lordneckbeard가 제공하는 의견의 요약 일뿐입니다.
인코딩없이 회전
다시 인코딩없이 회전하는 것은 다음과 같지 않으면 다음이 가능하지 않습니다.
- 입력은 mjpeg 입니다.
- 재생시 회전
올바른 FFMPEG를 사용하여 인코딩으로 회전
이 질문에 필요한 단계를 정확하게 이해하기 위해서는이 질문을 읽거나 적어도 무서워해야합니다.
ffmpeg, libav 및 avconv 간의 차이점과 유사점은 무엇입니까?
요약 : AVCONV는 FFMPEG의 포크이며, Debian Mainteraer는 AVCONV를 선택하여 소스에서 올바른 FFMPEG를 컴파일해야합니다.
다음 단계는 소스에서 올바른 FFMPEG를 컴파일합니다.
마지막 단계는 다른 게시물에있는 명령을 사용하고 있습니다.
비디오를 뒤집는 방법 ffmpeg로 180 ° (수직 / 거꾸로) 또는 FFMPEG로 비디오 회전
요약 : ffmpeg -vfilters "Rotate= 90"-i input.mp4 output.mp4