동영상 보관, 배포 세팅 (ffmpeg 설정)

하늘 No.96 [컴퓨터] 6085
동영상 보관, 배포 세팅 (ffmpeg 설정)

https://www.ffmpeg.org/

보관용 출력
-----------
일반 영상 편집기 (프리미어, 베가스) 에서 고품질로 Export
H265 (HEVC) 1920x1080 9Mbps
AAC 320k 48k


배포용 출력
-----------
H264, AAC 48k
1920x1080  2073600px _1080p => Video : 5Mbps Audio : 320k
1280x720 921600px _720p => Video : 2.2Mbps  -> 2.5M Audio : 256k
854x480 409920px _480p => Video : 0.98Mbps -> 1.2M Audio : 192k
- 저화소일수록 계산보다 조금 높게 잡아 줌

Bitrate 기반 설정
1080p -b:v 5M -b:a 320k
720p -b:v 2.5M -b:a 256k
480p -b:v 1.2M -b:a 192k;

Quality 기반 설정
1080p -q:v 23 -b:a 320k
720p -q:v 23 -b:a 256k
480p -q:v 23 -b:a 192k

-c:a copy : Audio Codec 변경없이 카피
-c:v copy : Video Codec 변경없이 카피

intel qsv 로 인코딩함
-c:v h264_qsv -q:v 23 -s hd1080 -c:a copy
-c:v h264_qsv -q:v 23 -s hd1080 -c:a aac -b:a 320k


cutoff
-c:a copy 오디오는 그대로 카피 -b:a, -cutoff 등 영향 없슴
-c:a aac -b:a 320k cutoff 없이 유지
-c:a aac -b:a 320k -cutoff 18k 18k 에서 cutoff
사용하지 않거나 안전 차원에서 20k 에서 cutoff

-q:a, -b:a 지정하지 않으면 기본값 128k
-ar 44.1k 음악용
-ar 48k 일반적 영상 사운드 용으로
-ac 2 2ch


결론
=====
입력 소스의 해상도를 모를때 (H264(동일 해상도), AAC 192k)
-c:v h264_qsv -q:v 23 -c:a copy
-c:v h264_qsv -q:v 23 -c:a aac -b:a 192k

1080p
-c:v h264_qsv -s hd1080 -b:v 5M -maxrate 7M -c:a copy
-c:v h264_qsv -s hd1080 -b:v 5M -maxrate 7M -c:a aac -b:a 320k
-c:v h264_qsv -s hd1080 -q:v 23 -maxrate 7M -c:a copy
-c:v h264_qsv -s hd1080 -q:v 23 -maxrate 7M -c:a aac -b:a 320k

720p
-c:v h264_qsv -s hd720 -b:v 2.5M -maxrate 3.5M -c:a aac -b:a 256k
-c:v h264_qsv -s hd720 -q:v 23 -maxrate 3.5M -c:a aac -b:a 256k

480p
-c:v h264_qsv -s hd480 -b:v 1.2M -maxrate 2M -c:a aac -b:a 192k
-c:v h264_qsv -s hd480 -q:v 23 -maxrate 2M -c:a aac -b:a 192k


안전차원에서 추가해도 됨 (오디오 관련)
-ar 48k -ac 2 -cutoff 20k
-pix_fmt yuv420p


사용하지 않음
-------------
Audio 설정은 너무 낮게 잡혀서 audio bps 를 고정으로 하기로
-q:a 0 96k
-q:a 1 128k
-q:a 2 180k

-preset medium, slow, veryslow 등은 동일 품질에서 압축율을 증가시키는 것
걸리는 시간에 비해서 용량 감소 효과 미비로 사용하지 않음 (medium: 5.5x, slow: 4.8x, veryslow: slow: 3.5x)

-global_quality 23

-an, -vn : audio video disable

참고 문헌
==========
ffmpeg -h full > ffmpeg_help.txt
ffmpeg -h encoder=hevc_qsv > ffmpeg_help_hevc_qsv.txt
ffmpeg -h encoder=h264_qsv > ffmpeg_help_h264_qsv.txt

hevc_qsv
h264_qsv
mpeg2_qsv
vc1_qsv

https://ffmpeg.org/ffmpeg.html

ffmpeg을 이용한 HW 비디오 인코딩 테스트 결과
https://teus.me/626?category=402855

ffmpeg 몇 가지 옵션
http://blog.daum.net/nbdjj1998/83
https://saramsarang.tistory.com/214

동영상 해상도에 따른 적정 비트레이트 (bit per second)
  576, 30fps : 1500Kbps = 1.5Mbps
  720, 24fps : 2000Kbps = 2  Mbps
  720, 30fps : 2500Kbps = 2.5Mbps
  720, 60fps : 3500Kbps = 3.5Mbps
 1080, 24fps : 3500Kbps = 3.5Mbps
 1080, 30fps : 4000Kbps = 4  Mbps
 1080, 60fps : 5500Kbps = 5.5Mbps

*H264, 세로 해상도, 와이드(16:9) 비율, 1pass 기준
 -2pass라면 오히려 500K 정도 낮춰도 됨

*저장 용으로 재인코딩 하는 경우 (ffmpeg 옵션 -maxrate 값으로 사용)
*시네마(21:9, 2.35:1) 비율일 경우 500K~1000K 추가
*화질 우선 주의, 실시간 녹화, 실시간 송출일 경우 500K~1500K 추가

*실시간 녹화, 실시간 송출인데 CPU, 그래픽이 저사양이면 1500K~2500K 추가
 -떨어지는 연산 능력을 초당 데이터 양으로 커버

*화질 관련 부분은 비트레이트(bps)나 프레임(fps) 보다 해상도 영향이 더 큼
 -해상도(pixel per inch)는 영상의 선명도와 관련 있음
 -프레임(frame per second)은 영상 움직임의 부드러움과 관련 있음
 -비트레이트(bit per second)는 초당 데이터의 양, 높을수록 깍두기 증상이 줄어듬, 코덱에 따라 다름

*비트레이트를 낮춰야 할 경우에 프레임도 같이 낮추는 것이 화질 열화를 줄여줌
 -해상도를 낮추면 오히려 화질 열화가 심함
 -비트레이트만 낮추고 다른 부분을 그대로 두면 깍두기 증상이 심해질 수 있음
 -사람의 눈은 30fps와 60fps의 차이는 구분해도, 30fps와 20fps의 차이는 잘 구분하지 못 함

*여담으로 ffmpeg 옵션 -maxrate와 -vf "scale=-2:1080:flags=lanczos" 두개를 사용함 (란초스 업스케일링)

*오디오 노멀라이즈는 ffmpeg 옵션 -af "acompressor=threshold=0.1:ratio=12" 를 사용함 (컴프레서 오디오 필터)

*H265 같이 압축율이 높은 경우는 비트레이트를 낮추고, MPEG2 같이 압축율이 낮은 경우는 비레이트를 높여야 함.
 -MPEG2 : H264 : H265  =  5000Kbps : 3000Kbps : 1000Kbps

https://linux.die.net/man/1/ffmpeg
-s
Set frame size. The format is wxh (ffserver default = 160x128, ffmpeg default = same as source).
The following abbreviations are recognized:
hd480 852x480
hd720 1280x720
hd1080 1920x1080

sqcif 128x96
qcif 176x144
cif 352x288
4cif 704x576
16cif 1408x1152
qqvga 160x120
qvga 320x240
vga 640x480
svga 800x600
xga 1024x768
uxga 1600x1200
qxga 2048x1536
sxga 1280x1024
qsxga 2560x2048
hsxga 5120x4096
wvga 852x480
wxga 1366x768
wsxga 1600x1024
wuxga 1920x1200
woxga 2560x1600
wqsxga 3200x2048
wquxga 3840x2400
whsxga 6400x4096
whuxga 7680x4800
cga 320x200
ega 640x350

DOS Command (.cmd)
https://www.dostips.com/DtTipsStringManipulation.php#Snippets.TrimQuotes
https://www.snoopybox.co.kr/1366


dir *.mp4 > ffmpeg_conv-all.cmd
하고 한 후에 ffmpeg_conv-all.cmd 파일을 편집
call ffmpeg-conv.cmd "EurE2015_01_Intro-d.mp4" 1080

https://SkyMoon.info/a/HeismeNote/96  

만일 오늘이 마지막 포옹이라면 어찌 그대를 안을까? [하늘-마지막 순간에]

주차 방법

[기타] 하늘
4,152  2020.02.26