修正 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.