theora/vorbis 비디오 압축

theora/vorbis 비디오 압축

theora/vorbis ogg 비디오 파일이 있습니다. 그러나 제가 알아낸 점은 gzip/xz를 사용하면 파일 크기를 20%/75%까지 줄일 수 있다는 것입니다. 그러므로 내부 형식이 실제로 내용을 잘 압축하지 못하는 것이 아닐까 의심됩니다. 외부 압축 형식을 사용하지 않고 비디오/오디오를 더 무손실로 압축할 수 있는 방법이 있습니까? ffmepg를 사용하는 솔루션이 선호됩니다.

출력 mediainfo:

Format                                   : Ogg
File size                                : 90.9 MiB
Duration                                 : 27 min 52 s
Overall bit rate mode                    : Variable
Overall bit rate                         : 456 kb/s
Writing application                      : Lavf57.56.101

Video
ID                                       : 1911251410 (0x71EB61D2)
Format                                   : Theora
Duration                                 : 27 min 52 s
Bit rate                                 : 298 kb/s
Width                                    : 1 920 pixels
Height                                   : 1 080 pixels
Display aspect ratio                     : 16:9
Frame rate                               : 30.000 FPS
Compression mode                         : Lossy
Bits/(Pixel*Frame)                       : 0.005
Stream size                              : 59.4 MiB (65%)
Writing library                          : Lavf57.56.101

Audio
ID                                       : 2001534440 (0x774CFDE8)
Format                                   : Vorbis
Format settings, Floor                   : 1
Duration                                 : 27 min 52 s
Bit rate mode                            : Variable
Bit rate                                 : 131 kb/s
Channel(s)                               : 2 channels
Sampling rate                            : 48.0 kHz
Compression mode                         : Lossy
Stream size                              : 26.1 MiB (29%)
Writing library                          : Lavf57.56.101

답변1

짧은 대답은 다음과 같습니다.아니요.

파일을 아카이브(예: zip, 7z, rar, gzip 등)로 압축하면 알고리즘은 주어진 정보를 더 짧은 방식으로 저장할 방법을 찾습니다. 이는 예를 들어 다음을 통해 수행됩니다.허프만 코딩, 여기서 알고리즘은 값의 빈도를 확인한 다음 가장 자주 사용되는 값을 가장 짧은 숫자, 두 번째로 많이 사용되는 값을 두 번째로 작은 숫자로 저장합니다... (이건 너무 단순화됐어- 더 나은 설명을 보려면 링크된 위키피디아 기사를 읽어보세요. 또한 물론 허프만 코딩은 매우 간단한 압축의 한 예일 뿐입니다. 이는 또한 아카이브를 압축하면 파일 크기가 더 줄어드는 이유도 설명합니다.

따라서 파일 크기가 75% 감소한 것은 압축 도구가 비디오 및 오디오 인코더보다 정보를 저장하는 더 효율적인 방법을 찾았기 때문입니다. 그러나 일반적으로 정보 저장 방법은 표준에 지정되어 있으므로 인코더에 지시할 방법이 없습니다. 때로는 더 나은 표준 구현으로 인해 최신 버전의 인코딩 프로그램이 도움이 될 수 있지만 일반적으로 이는 새로운 코덱에만 적용됩니다.

그러나 귀하의 비디오 플레이어는 여러 압축을 동시에 처리할 수 없습니다. 나는 이것이 대부분 아카이브 파일의 압축을 풀고 파일 자체를 읽으려면 꽤 많은 자원(RAM과 CPU 모두)이 필요하기 때문이라고 생각합니다. 또한, 필요한 것처럼 먼저 전체 압축을 풀어야 합니다. 왜냐하면 어떤 스트림이 저장되어 있는지 등이 없는 파일에서 추정하기가 매우 어렵기 때문입니다.

따라서 theora/vorbis로 작업해야 하는 경우 이에 대해 할 수 있는 일이 많지 않습니다. 그렇지 않고 파일 크기가 우선순위라면 다음을 살펴보는 것이 좋습니다.VP8/VP9/x264/x265. VP9 방식으로 가고 싶다면 FFmpeg의 Encode/VP9-Guide(바로 위에 링크됨)를 따르는 것을 권장합니다.

ffmpeg -i <input> -c:v libvpx-vp9 -crf 15 -b:v 0 -c:a copy <output>

<input>및 을 <output>해당 파일 이름(및 파일 확장자)으로 바꾸세요 . *.mkv와 *.webm은 모두 작동하지만(저는 이 두 가지만 시도했습니다), *.webm에는 다음이 필요한 것 같습니다.보비스*.mkv에 요구 사항이 없는 것 같은 오디오 코덱(예: )으로 사용됩니다 -c:a libvorbis -q:a 6. 일정한 비율 요소를 지정합니다("일정한 시각적 품질"이라고 상상해 보세요). 여기서 값이 낮을수록 품질이 좋아집니다.-c:a copy-crf

물론 위의 모든 내용은 파일이 효율적으로 인코딩되었으며(예: 6Gb/s의 비트 전송률을 지정하지 않음) 제대로 작동하는 프로그램을 사용하여 인코딩되었다고 가정합니다. 나는 손실이 많은 압축 오디오 또는 비디오 파일을 많이 압축할 수 없었습니다(그러나 Theora나 vorbis는 거의 사용하지 않습니다).

관련 정보