AV1 으로 인코딩 해보기 (카페 공식 : 에이핑크) -- 보류

category 컴퓨터.전자기기 2019. 4. 17. 23:36

안녕하세요? 샤나인코더 사이트의 글을 보고 AV1 으로 인코딩을 해보려고 합니다.


https://shana.pe.kr/shanaencoder_tip/56967


AV1 코덱은 압축률이 매우 상당하다고 하는데요. 이걸 저희가 보는 영상으로 인코딩 해야 참맛이지 않겠습니까? ㅎㅎ 처음에는 야동으로 할까 하다가 참았습니다.


갑니다.






1. 필요한 바이너리 받기 및 배치


1. ffmpeg

https://ffmpeg.zeranoe.com/builds/


2. rav1e

https://github.com/xiph/rav1e/releases


상기 두 파일을 원하는 위치에 넣어줍니다. 아래와 같이 말이죠 ㅎㅎ



그리고 넣어준 경로에 PATH 를 추가합니다. (환경변수)






2. 에이핑크 4K VP9 영상


655메가 파일입니다.






3. 전체적인 인코딩 과정


정확하게 인코딩에 대해서 잘 모르기 때문에 과정을 아래와 같이 압축해 보았습니다.


1. FFMPEG 로 y4m 생성

2. rav1e 로 ivf 생성

3. FFMPEG 로 mp4 생성 (오디오 짬뽕)





4. FFMPEG 로 y4m 파일 생성 과정


대략적으로 0.2 배속 (초당 9.4프레임)으로 인코딩 됩니다 ㄷㄷ.. ㅠㅠ


PS C:\users\user\Downloads> ffmpeg -i .\apink4k.mkv -y output.y4m

ffmpeg version N-93589-ge2f766e13f Copyright (c) 2000-2019 the FFmpeg developers

  built with gcc 8.3.1 (GCC) 20190414

  configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libmfx --enable-amf --enable-ffnvcodec --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt

  libavutil      56. 26.100 / 56. 26.100

  libavcodec     58. 51.100 / 58. 51.100

  libavformat    58. 27.102 / 58. 27.102

  libavdevice    58.  7.100 / 58.  7.100

  libavfilter     7. 48.100 /  7. 48.100

  libswscale      5.  4.100 /  5.  4.100

  libswresample   3.  4.100 /  3.  4.100

  libpostproc    55.  4.100 / 55.  4.100

Input #0, matroska,webm, from '.\apink4k.mkv':

  Metadata:

    ENCODER         : Lavf56.1.0

  Duration: 00:03:33.17, start: 0.000000, bitrate: 25775 kb/s

    Stream #0:0(eng): Video: vp9 (Profile 0), yuv420p(tv, bt709/unknown/unknown), 3840x2160, SAR 1:1 DAR 16:9, 59.94 fps, 59.94 tbr, 1k tbn, 1k tbc (default)

    Stream #0:1(und): Audio: aac (LC), 44100 Hz, stereo, fltp (default)

    Metadata:

      CREATION_TIME   : 2015-04-05 09:01:29

      LANGUAGE        : und

Stream mapping:

  Stream #0:0 -> #0:0 (vp9 (native) -> wrapped_avframe (native))

Press [q] to stop, [?] for help

Output #0, yuv4mpegpipe, to 'output.y4m':

  Metadata:

    encoder         : Lavf58.27.102

    Stream #0:0(eng): Video: wrapped_avframe, yuv420p, 3840x2160 [SAR 1:1 DAR 16:9], q=2-31, 200 kb/s, 59.94 fps, 59.94 tbn, 59.94 tbc (default)

    Metadata:

      LANGUAGE        : eng

      encoder         : Lavc58.51.100 wrapped_avframe

frame=  164 fps= 27 q=-0.0 size= 1992448kB time=00:00:02.73 bitrate=5965546.2kbits/s speed=0.456x


죽어 나가지는 않네요.. 




중간에 용량 부족으로.. ㅠㅠ 대략 170기가 여유 공간이 있어야 하네요 ㅎㅎ 


처음부터 다시 합니다 ㅋㅋ


av_interleaved_write_frame(): No space left on device:40.87 bitrate=5965986.7kbits/s speed=0.149x

Error writing trailer of output.y4m: No space left on device

frame= 2451 fps=8.9 q=-0.0 Lsize=29776128kB time=00:00:40.89 bitrate=5965296.4kbits/s speed=0.149x

video:1283kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 2320819.500000%

Conversion failed!

PS C:\users\user\Downloads> ffmpeg -i .\apink4k.mkv -y d:\output.y4m

ffmpeg version N-93589-ge2f766e13f Copyright (c) 2000-2019 the FFmpeg developers

  built with gcc 8.3.1 (GCC) 20190414

  configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libmfx --enable-amf --enable-ffnvcodec --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt

  libavutil      56. 26.100 / 56. 26.100

  libavcodec     58. 51.100 / 58. 51.100

  libavformat    58. 27.102 / 58. 27.102

  libavdevice    58.  7.100 / 58.  7.100

  libavfilter     7. 48.100 /  7. 48.100

  libswscale      5.  4.100 /  5.  4.100

  libswresample   3.  4.100 /  3.  4.100

  libpostproc    55.  4.100 / 55.  4.100

Input #0, matroska,webm, from '.\apink4k.mkv':

  Metadata:

    ENCODER         : Lavf56.1.0

  Duration: 00:03:33.17, start: 0.000000, bitrate: 25775 kb/s

    Stream #0:0(eng): Video: vp9 (Profile 0), yuv420p(tv, bt709/unknown/unknown), 3840x2160, SAR 1:1 DAR 16:9, 59.94 fps, 59.94 tbr, 1k tbn, 1k tbc (default)

    Stream #0:1(und): Audio: aac (LC), 44100 Hz, stereo, fltp (default)

    Metadata:

      CREATION_TIME   : 2015-04-05 09:01:29

      LANGUAGE        : und

Stream mapping:

  Stream #0:0 -> #0:0 (vp9 (native) -> wrapped_avframe (native))

Press [q] to stop, [?] for help

Output #0, yuv4mpegpipe, to 'd:\output.y4m':

  Metadata:

    encoder         : Lavf58.27.102

    Stream #0:0(eng): Video: wrapped_avframe, yuv420p, 3840x2160 [SAR 1:1 DAR 16:9], q=2-31, 200 kb/s, 59.94 fps, 59.94 tbn, 59.94 tbc (default)

    Metadata:

      LANGUAGE        : eng

      encoder         : Lavc58.51.100 wrapped_avframe

frame= 4684 fps=7.4 q=-0.0 size=56910592kB time=00:01:18.14 bitrate=5966001.2kbits/s speed=0.124x


결과 148기가 파일이 생성되었습니다.





5. rav1e 로 ivf 파일 생성


PS C:\users\user\Downloads> rav1e D:\output.y4m --output "D:\apink4k_rav1e.q170.s3.ivf" --quantizer 170 --speed 3

3840x2160 @ 60000/1001 fps


으잉? 상기 명령으로 1KB 파일만 생성되어 방향을 다시 틀어서 libaom 으로 시도합니다.





6. FFMPEG libaom-av1


PS C:\users\user\Downloads> ffmpeg -ss 00:00:25 -i .\apink4k.mkv -t 5 -c:v libaom-av1 -cpu-used 2 -minrate 500k -b:v 2000k -maxrate 2500k -strict experimental -c:a copy out.mp4

ffmpeg version N-93589-ge2f766e13f Copyright (c) 2000-2019 the FFmpeg developers

  built with gcc 8.3.1 (GCC) 20190414

  configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libmfx --enable-amf --enable-ffnvcodec --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt

  libavutil      56. 26.100 / 56. 26.100

  libavcodec     58. 51.100 / 58. 51.100

  libavformat    58. 27.102 / 58. 27.102

  libavdevice    58.  7.100 / 58.  7.100

  libavfilter     7. 48.100 /  7. 48.100

  libswscale      5.  4.100 /  5.  4.100

  libswresample   3.  4.100 /  3.  4.100

  libpostproc    55.  4.100 / 55.  4.100

Input #0, matroska,webm, from '.\apink4k.mkv':

  Metadata:

    ENCODER         : Lavf56.1.0

  Duration: 00:03:33.17, start: 0.000000, bitrate: 25775 kb/s

    Stream #0:0(eng): Video: vp9 (Profile 0), yuv420p(tv, bt709/unknown/unknown), 3840x2160, SAR 1:1 DAR 16:9, 59.94 fps, 59.94 tbr, 1k tbn, 1k tbc (default)

    Stream #0:1(und): Audio: aac (LC), 44100 Hz, stereo, fltp (default)

    Metadata:

      CREATION_TIME   : 2015-04-05 09:01:29

      LANGUAGE        : und

File 'out.mp4' already exists. Overwrite ? [y/N] y

Stream mapping:

  Stream #0:0 -> #0:0 (vp9 (native) -> av1 (libaom-av1))

  Stream #0:1 -> #0:1 (copy)

Press [q] to stop, [?] for help

[libaom-av1 @ 000001676e005940] 1.0.0-1605-g64a2ffb72

Output #0, mp4, to 'out.mp4':

  Metadata:

    encoder         : Lavf58.27.102

    Stream #0:0(eng): Video: av1 (libaom-av1) (av01 / 0x31307661), yuv420p, 3840x2160 [SAR 1:1 DAR 16:9], q=-1--1, 2000 kb/s, 59.94 fps, 60k tbn, 59.94 tbc (default)

    Metadata:

      LANGUAGE        : eng

      encoder         : Lavc58.51.100 libaom-av1

    Side data:

      cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1

    Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp (default)

    Metadata:

      CREATION_TIME   : 2015-04-05 09:01:29

      LANGUAGE        : und

frame=  300 fps=0.0 q=0.0 Lsize=    1337kB time=00:00:04.99 bitrate=2190.6kbits/s speed=0.000384x

video:1232kB audio:96kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.620153%


테스트로 5초 인코딩 하는데 시간이 어마어마 하게 걸립니다. 대략 6시간 걸린것 같습니다...


파일은 아래에 추가해 두었고 무언가 이상합니다. ㅠㅠ 


out.mp4


다음 기회에 다시 시도해 봐야겠습니다.


댓글을 달아 주세요