修正 GeForce Experience 錄製的影片上傳 Youtube 後顏色變暗的問題
2021/03/01 更新:
將 GeForce Experience 更新至 v3.21 之後,已解決影片在 Youtube 上看起來較暗的問題,請參考:
之前的內容:
nVidia 的 GeForce Experience 有內建遊戲錄影的功能,只要按 Alt + F9 就會直接開始錄影,再按一次 Alt + F9 即可停止錄影並儲存影片。
GeForce Experience 錄製的影片在 Windows 下播放很正常,但是把影片上傳到 Youtube 之後畫面會變暗,導致一些細節看不清楚!
我有在這篇文章找到了原因,以及解決方法:
文章裡有一些名詞我看不懂,不過大致上了解是因為 GeForce Experience 沒有把正確的影片編碼資訊寫入到影片檔的 Metadata 區段!
解決的方法就是使用 ffmpeg 來修正影片檔的編碼資訊,指令如下:
ffmpeg -i "source_file.mp4" -bsf:v h264_metadata=video_full_range_flag=1 -color_primaries bt709 -color_trc bt709 -colorspace bt709 -c:v copy -c:a copy "destination_file.mp4"
批次檔改寫
我將上述文章中的指令改寫為批次檔,內容如下:
@ECHO OFF
:: ffmpeg.exe 的程式路徑
SET EXE="D:\Portable\ffmpeg\ffmpeg.exe"
IF /I not "%~x1" == ".mp4" GOTO ERROR
%EXE% -i "%1" -bsf:v h264_metadata=video_full_range_flag=1 -color_primaries bt709 -color_trc bt709 -colorspace bt709 -c:v copy -c:a copy "%~n1.ffmpeg.mp4"
GOTO EXIT
:ERROR
ECHO Error: Invalid file extension!
:EXIT
PAUSE
請自行下載 ffmpeg.exe (我下載的是 ffmpeg-N-104381-gab79263419-win64-gpl.zip),並修改批次檔裡的 EXE 參數至你電腦中的 ffmpeg 的程式路徑。
批次檔可以隨便命名,但副檔名必須是「.bat」,例如: fix_metadata.bat 或 fix_mp4.bat。
如何執行?
有三種方式:
1. 命令列模式
進到命令列模式,直接執行:
fix_metadata.bat Filename.mp4
2. 檔案拖曳
於檔案總管中,將影片檔用滑鼠左鍵拖曳給 fix_metadata.bat 去執行 (影片檔與批次檔可不在同一個資料夾):
3. 傳送到
將 fix_metadata.bat 檔案放到 Windows 的「SendTo」資料夾 (於檔案總管的網址列輸入 shell:sendto 可直接進到「SendTo」資料夾),在影片檔點滑鼠右鍵,選傳送到 fix_metadata.bat:
用以上任何一種方式執行成功,ffmpeg 會在影片的同一個資料夾產生一個 Filename.ffmpeg.mp4 檔案 (附加 .ffmpeg.mp4 副檔名),這就是修正過編碼資訊的影片檔,要上傳到 Youtube 請改為上傳這個檔案。
修正前後比較
修正亮度前的影片
修正亮度後的影片
應該看得出差異吧? 播放影片後是有差異的,是吧?
執行過程
附上我的 ffmpeg 執行過程:
ffmpeg version N-104381-gab79263419-20211018 Copyright (c) 2000-2021 the FFmpeg developers built with gcc 10-win32 (GCC) 20210408 configuration: --prefix=/ffbuild/prefix --pkg-config-flags=--static --pkg-config=pkg-config --cross-prefix=x86_64-w64-mingw32- --arch=x86_64 --target-os=mingw32 --enable-gpl --enable-version3 --disable-debug --disable-w32threads --enable-pthreads --enable-iconv --enable-libxml2 --enable-zlib --enable-libfreetype --enable-libfribidi --enable-gmp --enable-lzma --enable-fontconfig --enable-libvorbis --enable-opencl --enable-libvmaf --enable-vulkan --disable-libxcb --disable-xlib --enable-amf --enable-libaom --enable-avisynth --enable-libdav1d --enable-libdavs2 --disable-libfdk-aac --enable-ffnvcodec --enable-cuda-llvm --enable-frei0r --enable-libglslang --enable-libgme --enable-libass --enable-libbluray --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvpx --enable-libwebp --enable-lv2 --enable-libmfx --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librav1e --enable-librubberband --enable-schannel --enable-sdl2 --enable-libsoxr --enable-libsrt --enable-libsvtav1 --enable-libtwolame --enable-libuavs3d --disable-libdrm --disable-vaapi --enable-libvidstab --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxvid --enable-libzimg --enable-libzvbi --extra-cflags=-DLIBTWOLAME_STATIC --extra-cxxflags= --extra-ldflags=-pthread --extra-ldexeflags= --extra-libs=-lgomp --extra-version=20211018 libavutil 57. 7.100 / 57. 7.100 libavcodec 59. 12.100 / 59. 12.100 libavformat 59. 6.100 / 59. 6.100 libavdevice 59. 0.101 / 59. 0.101 libavfilter 8. 14.100 / 8. 14.100 libswscale 6. 1.100 / 6. 1.100 libswresample 4. 0.100 / 4. 0.100 libpostproc 56. 0.100 / 56. 0.100 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'E:\Videos\test.mp4': Metadata: major_brand : mp42 minor_version : 0 compatible_brands: isommp42 creation_time : 2021-10-18T11:44:23.000000Z date : 2021 Duration: 00:00:43.05, start: 0.000000, bitrate: 16686 kb/s Stream #0:0[0x1](und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, smpte170m/smpte170m/bt470m, progressive), 1920x1080 [SAR 1:1 DAR 16:9], 16483 kb/s, 60 fps, 60 tbr, 90k tbn (default) Metadata: creation_time : 2021-10-18T11:44:23.000000Z handler_name : VideoHandle vendor_id : [0][0][0][0] Stream #0:1[0x2](und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 194 kb/s (default) Metadata: creation_time : 2021-10-18T11:44:23.000000Z handler_name : SoundHandle vendor_id : [0][0][0][0] Output #0, mp4, to 'test.ffmpeg.mp4': Metadata: major_brand : mp42 minor_version : 0 compatible_brands: isommp42 date : 2021 encoder : Lavf59.6.100 Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709, progressive), 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 16483 kb/s, 60 fps, 60 tbr, 90k tbn (default) Metadata: creation_time : 2021-10-18T11:44:23.000000Z handler_name : VideoHandle vendor_id : [0][0][0][0] Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 194 kb/s (default) Metadata: creation_time : 2021-10-18T11:44:23.000000Z handler_name : SoundHandle vendor_id : [0][0][0][0] Stream mapping: Stream #0:0 -> #0:0 (copy) Stream #0:1 -> #0:1 (copy) Press [q] to stop, [?] for help frame= 2583 fps=0.0 q=-1.0 Lsize= 86536kB time=00:00:43.03 bitrate=16473.7kbits/s speed= 150x video:85443kB audio:1020kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.084271%
No comments yet.