NVIDIA Encoder/Decoder
https://developer.nvidia.com/video-encode-and-decode-gpu-support-matrix-new
ffmpeg TIPS
https://gist.github.com/leeseomin/1f13cd8a11fc4e772208bedbe67453b8
https://hasu0707.duckdns.org/blog/?p=3494
ffmpeg 옵션 설명
https://wiki.yowu.dev/ko/tips/ffmpeg-honey-command-hands-book
ffmpeg 옵션별 품질 비교
https://scvspace.kr/1509
샤나인코더
https://shana.pe.kr/shanaencoder_tip/80556
# 사용가능한 HW가속기
ffmpeg -hwaccels
cuda
: NVIDIA의 CUDA를 사용한 가속qsv
: Intel의 Quick Sync Video를 사용한 가속dxva2
: DirectX Video Acceleration 2를 사용한 가속 (MediaFoundation에 적합)d3d11va
: DirectX 11 Video Acceleration을 사용한 가속opencl
: OpenCL을 사용한 가속vulkan
: Vulkan을 사용한 가속ffmpeg -encoders
ffmpeg -decoders
ffmpeg -h encoder=h264_nvenc
일반 옵션: -profile
, -level
, -preset
, -tune
, -b:v
, -crf
등 모든 코덱에 사용이 가능한 옵션
고유 옵션: 인코더별로 다른 옵션
일반옵션이 고유옵션보다 우선순위가 높다.
HEVC(유료): https://www.microsoft.com/store/productId/9NMZLZ57R3T7?ocid=pdpshare
AV1(무료): https://www.microsoft.com/store/productId/9MVZQVXJBQ9V?ocid=pdpshare
Icaros 설치 후 THUMBNAILING 활성화 하면 AV1 썸네일 보임.
https://www.videohelp.com/software/Icaros
mediainfo를 다운받고 아래 명령어로 확인가능.
mediainfo <INPUT> | grep -E -i "(^[^:]*$)|bit rate"
General
Overall bit rate mode : Variable
Overall bit rate : 10.1 Mb/s
Video
Bit rate mode : Variable
Bit rate : 10.0 Mb/s
Audio
Bit rate mode : Constant
Bit rate : 64.0 kb/s
ffmpeg -i input.mkv -c copy output.mp4
ffmpeg -hwaccel cuda -i input.mp4 -c:v h264_nvenc -preset p4 -crf 23 -c:a copy output.mp4
우선 ffmpeg을 실행할 디렉토리를 기준으로 이어붙일 파일들의 목록 txt 파일이 필요하다. 아래와 같이 만들어주면 된다.
(파일 목록은 file
이 줄마다 prefix로 붙어야 한다)
(디렉토리 구분자로 반드시 /
slash를 사용해야 한다.)
ls "DIRNAME/*F.mp4" | sed "s/\\/\//g" | sed "s/^/file /" > lstf.txt
이제 위에서 생성한 txt파일로 비디오를 붙일 수 있다.
# Video concat
ffmpeg -f concat -i lstf.txt -c copy output.mp4
아래는 오디오를 따로 concat하고 합치는 방법인데 오디오를 제외하면 concat이 빨라진다.
# Video concat without audio
ffmpeg -f concat -i lstf.txt -c copy -an output_video.mp4
# Audio only concat
ffmpeg -f concat -i lstf.txt -c copy -vn output_audio.mp3
# 만약 audio concat이 불가능하다면 아래와 같이 수행
ffmpeg -f concat -i lstf.txt -c:a mp3 -vn output_audio.mp3
# Merge video and audio
ffmpeg -i output_video.mp4 -i output_audio.mp3 -c:v copy -c:a copy output.mp4
ffmpeg -y -i output_f.mp4 -i output_r.mp4 -c copy -map 0 -map 1 output.mkv
ffmpeg -i "orifinal.mp4" -i "output.mp4" -lavfi "libvmaf=n_threads=16" -f null -
ffmpeg -i forward.mp4 -i backward.mp4 -filter_complex "[0:v][1:v]vstack" -c:v ffv1 -c:a copy output_ffv1.mkv
# 22.2GB
ffmpeg -hide_banner -y -hwaccel cuda -i forward.mp4 -i backward.mp4 -filter_complex "[0:v][1:v]vstack" -cq 0 -c:v hevc_nvenc -c:a copy output_cuda_nvenc_cq0.mp4
ffmpeg -hide_banner -y -hwaccel cuda -i forward.mp4 -i backward.mp4 -filter_complex "[0:v][1:v]vstack" -cq 0 -c:v h264_nvenc -c:a copy output_cuda_h264_cq0.mp4
ffmpeg -hide_banner -y -hwaccel qsv -qsv_device 1 -i forward.mp4 -i backward.mp4 -filter_complex "[0:v][1:v]vstack" -global_quality 0 -c:v vp9_qsv -c:a copy output_qsv_vp0_gq0.mp4
ffmpeg -i forward.mp4 -i backward.mp4 -filter_complex "[0:v][1:v]vstack" -crf 0 -c:v libx264 -c:a copy output_x264_crf0.mp4
ffmpeg -i forward.mp4 -i backward.mp4 -filter_complex "[0:v][1:v]vstack" -crf 0 -c:v libx265 -c:a copy output_x265_crf0.mp4
ffmpeg -i forward.mp4 -i backward.mp4 -filter_complex "[0:v][1:v]vstack" -crf 0 -c:v libvpx-vp9 -c:a copy output_libvpx-vp9_crf0.mp4
비디오의 모든 스트림 정보 확인
ffprobe -hide_banner -v error -show_streams -of default=noprint_wrappers=1 video.mp4
비디오의 특정 스트림 정보 확인
ffprobe -v error -show_entries stream=codec_name,level -of default=noprint_wrappers=1:nokey=1 video_1080p.mp4