我使用达芬奇剪辑,这个软件的免费版无法打开我的obs默认输出的mkv的视频编码,我查阅archwiki发现了如下命令
ffmpeg -i input.mp4 -c:v dnxhd -profile:v dnxhr_hq -pix_fmt yuv422p -c:a pcm_s16le -f mov output.mov
这样就可以正常打开这个文件了,但是有个问题:
原文件:91M,目标文件:20G,文件大了至少200倍!
求问有什么比较好的解决方法
.
附:
OBS:
码率:2500Kbps(视频),160(音频)
编码器:软件(x264)
编码器预设:veryfast
音频编码器:aac
录像质量:高质量
中等文件大小
格式:matroska(.mkv)
[mbm@ArchLinux:~]$ sudo rm -rf /*
离线
你这是达芬奇的问题呀。解决方案取决于达芬奇支持什么样的编码。
离线
mp4呢,这个格式剪辑软件应该都支持吧,ffmpeg转码mp4,或者obs输出改mp4试试
看了下我的obs,默认的mkv应该是h.264+aac编码的吧,那应该可以`ffmpeg -i input.mkv -vcodec copy -acodec copy output.mp4`
最近编辑记录 keence (2024-07-14 20:01:59)
离线
mp4呢,这个格式剪辑软件应该都支持吧,ffmpeg转码mp4,或者obs输出改mp4试试
看了下我的obs,默认的mkv应该是h.264+aac编码的吧,那应该可以`ffmpeg -i input.mkv -vcodec copy -acodec copy output.mp4`
跟这个后缀没关系,试过输出mp4也不行,obs里没找到达芬奇能识别的编码,我回头试试你的这个
[mbm@ArchLinux:~]$ sudo rm -rf /*
离线
看看输出的mp4格式。
ffmpeg -i xxxx.mp4
找个ai问了下,达芬奇是支持mp4和mkv的,还自带转码功能,我也不知道为啥了
根据wiki,obs里视频用av1编码,音频用mp3或者PCM编码试试
最近编辑记录 keence (2024-07-14 22:51:37)
离线
看看输出的mp4格式。
ffmpeg -i xxxx.mp4
找个ai问了下,达芬奇是支持mp4和mkv的,还自带转码功能,我也不知道为啥了根据wiki,obs里视频用av1编码,音频用mp3或者PCM编码试试
其实不是用不了,是没转码之前的文件压根就不显示,媒体夹里只有转过的文件
[mbm@ArchLinux:~]$ sudo rm -rf /*
离线
看看输出的mp4格式。
ffmpeg -i xxxx.mp4
找个ai问了下,达芬奇是支持mp4和mkv的,还自带转码功能,我也不知道为啥了根据wiki,obs里视频用av1编码,音频用mp3或者PCM编码试试
emm……没有这几个选项,是有什么包没装吗?
[mbm@ArchLinux:~]$ sudo rm -rf /*
离线
obs的录像编码器好像只有硬件av1,大多数显卡恐怕都不支持av1编码,我知道支持的只有RTX 40系以上显卡和intel的新架构显卡。我这里是有显示硬件(qsv,av1)编码的,你可能是硬件不支持。你可能还是需要用ffmpeg转码。
你用
ffmpeg --codecs | grep 'av1'
在输出中找类似
DEV.L. av1 Alliance for Open Media AV1 (decoders: libdav1d libaom-av1 av1 av1_cuvid av1_qsv) (encoders: libaom-av1 librav1e libsvtav1 av1_nvenc av1_qsv av1_amf av1_vaapi)
这样的片段,然后从encoders里面选一个替换命令中的dnxhd,删除-profile:v dnxhr_hq ,就能实现av1编码了。
比如,我比较喜欢的转码命令:
ffmpeg -i input.mp4 -c:v libsvtav1 -pix_fmt yuv422p -c:a pcm_s16le output.mp4
实际上-pix_fmt yuv422p这个选项也不一定需要。
不过转av1这种有损压缩格式会影响视频质量,需尽量减少转码次数。
最近编辑记录 anlorsp (2024-07-15 23:05:06)
离线
av1 的话,我喜欢的参数是 -rc_mode CQP -qp 32 -preset 6 -svtav1-params tune=0。(qp 值按需调整)
离线
keence 说:mp4呢,这个格式剪辑软件应该都支持吧,ffmpeg转码mp4,或者obs输出改mp4试试
看了下我的obs,默认的mkv应该是h.264+aac编码的吧,那应该可以`ffmpeg -i input.mkv -vcodec copy -acodec copy output.mp4`
跟这个后缀没关系,试过输出mp4也不行,obs里没找到达芬奇能识别的编码,我回头试试你的这个
你输出mp4时的命令是什么样的,打上来看一下。如果还是用dnxhd编码器,输出的文件尺寸应该没什么变化。
你的mkv编码格式是x264的,这个x264在DaVinci Resolve支持清单里好像没有,即达芬奇不支持这个格式输入;在obs设置里看一下还有啥其它编码格式能选。
你的文件后缀是.mkv,这个有必要确认一下。mkv格式不适合后期编辑,反而比较适合屏幕录制,因为mkv支持录制暂停后继续录制。在obs的设置里,可以把mkv改成mp4,mp4非常适合后期编辑,但可能不支持录制暂停后继续录制。二者权衡一下,折衷方案可以考虑"分片mp4",据说即方便后期编辑,又支持录制暂停,但我没试过。
mp4是封装格式,不是视频编码格式,仅指定mp4输出而不修改视频编码的话,文件只是换了个后缀名而已,里子没变化,所以文件大小通常也不会有变化。
你命令中的dnxhd应该是导致目标文件尺寸过大的主要原因,这是dnxhd编码格式的特点: obs录制的mkv, 视频x264编码,码率是2500Kbps, 即2.5M; 而dnxhd编码的码率很可能到100M以上。 dnxhd是可以被达芬奇免费版 支持的,如果必须 用达芬奇,就查一下免费版达芬奇除了支持dnxhd编码输入,还支持其它什么编码输入,找有没有压缩率大的。或者,可以考虑用开源的工具,比如blender、kdenlive、shotcut什么的,这些工具应该都支持x264输入。
不过,很多视频剪辑通常建议使用dnxhd编码输入,因为视频质量损失最小。剪辑过程用代理处理,输出时编码用h264/h265之类的压缩。
(mp4文件表示封装成mp4,mp4文件内部的视频编码格式才能决定文件的大小,mp4封装本身不能决定文件大小,mkv也一样。原文件只有91MB,应该是因为使用了x264编码的原因。)
有一个尝试可以看看:
在你原来那条命令的yuv422p后面加上 "-b:v 100M" 这个参数,100这个值可以修改,比如减小到60,它会影响输出视频的文件体积,但也会明显导致视频质量下降,质量太差就调高到150或更高:
ffmpeg -i input.mp4 -c:v dnxhd -profile:v dnxhr_hq -pix_fmt yuv422p -b:v 100M -c:a pcm_s16le -f mov output.mov
再或者改一下-profile:v后面的参数:
ffmpeg -i input.mp4 -c:v dnxhd -profile:v dnxhr_lb -pix_fmt yuv422p -c:a pcm_s16le -f mov output.mov
最近编辑记录 驿窗 (2024-07-18 12:17:00)
开源/Linux大众化,从驿窗开始~
离线
BreadCat209 说:keence 说:mp4呢,这个格式剪辑软件应该都支持吧,ffmpeg转码mp4,或者obs输出改mp4试试
看了下我的obs,默认的mkv应该是h.264+aac编码的吧,那应该可以`ffmpeg -i input.mkv -vcodec copy -acodec copy output.mp4`
跟这个后缀没关系,试过输出mp4也不行,obs里没找到达芬奇能识别的编码,我回头试试你的这个
你输出mp4时的命令是什么样的,打上来看一下。如果还是用dnxhd编码器,输出的文件尺寸应该没什么变化。
你的mkv编码格式是x264的,这个x264在DaVinci Resolve支持清单里好像没有,即达芬奇不支持这个格式输入;在obs设置里看一下还有啥其它编码格式能选。
你的文件后缀是.mkv,这个有必要确认一下。mkv格式不适合后期编辑,反而比较适合屏幕录制,因为mkv支持录制暂停后继续录制。在obs的设置里,可以把mkv改成mp4,mp4非常适合后期编辑,但可能不支持录制暂停后继续录制。二者权衡一下,折衷方案可以考虑"分片mp4",据说即方便后期编辑,又支持录制暂停,但我没试过。
mp4是封装格式,不是视频编码格式,仅指定mp4输出而不修改视频编码的话,文件只是换了个后缀名而已,里子没变化,所以文件大小通常也不会有变化。
你命令中的dnxhd应该是导致目标文件尺寸过大的主要原因,这是dnxhd编码格式的特点: obs录制的mkv, 视频x264编码,码率是2500Kbps, 即2.5M; 而dnxhd编码的码率很可能到100M以上。 dnxhd是可以被达芬奇免费版 支持的,如果必须 用达芬奇,就查一下免费版达芬奇除了支持dnxhd编码输入,还支持其它什么编码输入,找有没有压缩率大的。或者,可以考虑用开源的工具,比如blender、kdenlive、shotcut什么的,这些工具应该都支持x264输入。
不过,很多视频剪辑通常建议使用dnxhd编码输入,因为视频质量损失最小。剪辑过程用代理处理,输出时编码用h264/h265之类的压缩。
(mp4文件表示封装成mp4,mp4文件内部的视频编码格式才能决定文件的大小,mp4封装本身不能决定文件大小,mkv也一样。原文件只有91MB,应该是因为使用了x264编码的原因。)
有一个尝试可以看看:
在你原来那条命令的yuv422p后面加上 "-b:v 100M" 这个参数,100这个值可以修改,比如减小到60,它会影响输出视频的文件体积,但也会明显导致视频质量下降,质量太差就调高到150或更高:ffmpeg -i input.mp4 -c:v dnxhd -profile:v dnxhr_hq -pix_fmt yuv422p -b:v 100M -c:a pcm_s16le -f mov output.mov
再或者改一下-profile:v后面的参数:
ffmpeg -i input.mp4 -c:v dnxhd -profile:v dnxhr_lb -pix_fmt yuv422p -c:a pcm_s16le -f mov output.mov
比原来小了,但是从96M到5.8G还是大了些(两种方法都是这个大小)
❯ ll
Permissions Size User Date Modified Name
.rw-r--r-- 96M mbm 14 7月 19:21 '2024-07-14 19-16-04.mkv'
.rw-r--r-- 5.8G mbm 18 7月 17:35 output.mov
.rw-r--r-- 5.8G mbm 18 7月 17:55 output1.mov
[mbm@ArchLinux:~]$ sudo rm -rf /*
离线
obs的录像编码器好像只有硬件av1,大多数显卡恐怕都不支持av1编码,我知道支持的只有RTX 40系以上显卡和intel的新架构显卡。我这里是有显示硬件(qsv,av1)编码的,你可能是硬件不支持。你可能还是需要用ffmpeg转码。
你用ffmpeg --codecs | grep 'av1'
在输出中找类似
DEV.L. av1 Alliance for Open Media AV1 (decoders: libdav1d libaom-av1 av1 av1_cuvid av1_qsv) (encoders: libaom-av1 librav1e libsvtav1 av1_nvenc av1_qsv av1_amf av1_vaapi)
这样的片段,然后从encoders里面选一个替换命令中的dnxhd,删除-profile:v dnxhr_hq ,就能实现av1编码了。
比如,我比较喜欢的转码命令:ffmpeg -i input.mp4 -c:v libsvtav1 -pix_fmt yuv422p -c:a pcm_s16le output.mp4
实际上-pix_fmt yuv422p这个选项也不一定需要。
不过转av1这种有损压缩格式会影响视频质量,需尽量减少转码次数。
它提示没有这个选项……
❯ ffmpeg --codecs | grep 'av1'
ffmpeg version n7.0.1 Copyright (c) 2000-2024 the FFmpeg developers
built with gcc 14.1.1 (GCC) 20240522
configuration: --prefix=/usr --disable-debug --disable-static --disable-stripping --enable-amf --enable-avisynth --enable-cuda-llvm --enable-lto --enable-fontconfig --enable-frei0r --enable-gmp --enable-gpl --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libdav1d --enable-libdrm --enable-libdvdnav --enable-libdvdread --enable-libfreetype --enable-libfribidi --enable-libgsm --enable-libharfbuzz --enable-libiec61883 --enable-libjack --enable-libjxl --enable-libmodplug --enable-libmp3lame --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libplacebo --enable-libpulse --enable-librav1e --enable-librsvg --enable-librubberband --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libtheora --enable-libv4l2 --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvpl --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxcb --enable-libxml2 --enable-libxvid --enable-libzimg --enable-mbedtls --enable-nvdec --enable-nvenc --enable-opencl --enable-opengl --enable-shared --enable-vapoursynth --enable-version3 --enable-vulkan
libavutil 59. 8.100 / 59. 8.100
libavcodec 61. 3.100 / 61. 3.100
libavformat 61. 1.100 / 61. 1.100
libavdevice 61. 1.100 / 61. 1.100
libavfilter 10. 1.100 / 10. 1.100
libswscale 8. 1.100 / 8. 1.100
libswresample 5. 1.100 / 5. 1.100
libpostproc 58. 1.100 / 58. 1.100
Unrecognized option '-codecs'.
Error splitting the argument list: Option not found
不过你那个可以用,96M转码后156M
[mbm@ArchLinux:~]$ sudo rm -rf /*
离线
多了一个 -。
离线