ffmpeg我用对了吗?
自从我在家庭Web服务器上使用ffmpeg转换剪辑以来,已经过去了很长时间,现在mp4(h264和aac)是当前的总体标准(适用于所有游戏机、智能手机、智能电视、个人电脑),所以我决定将我的旧剪辑从各种数码相机转换为这种新容器/编解码器。
- 更小的空间和相同的质量。
- 兼容性
- 支持标签(mac的subler)
经过一些研究,我选择了ffmpeg,因为有各种原因:
- 命令行(我使用默认设置创建了简单的Web界面,使用php的exec执行)
- 质量/大小比例
我读到许多昂贵的视频转换软件无法正确处理低比特率视频。我也测试了其中一些,并且个人无法找到合适的导出设置或者对结果不满意......其中一些具有固定的默认导出设置,大多数在相同文件大小下会降低视频质量。 ffmpeg允许我设置-crf(通常为18-24)和-preset(veryslow、fast..),这使我可以在保持相同可见质量的前提下大幅减小文件大小。
他说我在使用非常慢的预设(也有安慰剂,但最终的视频文件大小仅减少了1%)。
这是我使用的命令:
ffmpeg
-y //overwrite the file if it exists
-i INPUTFILE // replace with the input file
-metadata title=THETITLE // set a nice title, visible on modern devices
-metadata date=THEDATE // set a nice title, visible on modern devices
-c:v libx264 // use the h264 codec
-crf 21 // try different numbers between 18-26
-preset veryslow // placebo,slow,fast,ultrafast==big file
-tune film // tune it a little
-pix_fmt yuv420p // preferred on most modern devices
-profile:v main // preferred on most modern devices
-level 3.1 // preferred on most modern devices
-refs 4 // preferred on most modern devices
-c:a libfdk_aac // use aac
-metadata:s:a language=eng // set a language, visible on modern devices
-b:a 128k // audio bitrate 128k is like mp3 192k
-ar 48000 // 44100 ... whatever
-ac 2 // audiochannels
-movflags +faststart //move the metadata in the front of the video so it loads faster
OUTPUTFILE
一些带有m2ts的摄像机剪辑已经具备了avc/h264兼容编解码器,因此我只需复制流。有些带有ac3/dolby sorround音频。我转换音频但保留ac3作为第二个音轨映射到ffmpeg流中。这使我能够在浏览器和移动设备上观看mp4,但我也能保持环绕声以在某些电视、高级媒体播放器或设备(如Apple TV)上播放。
虽然我对速度(使用四核)很满意,但最近我又读到了有关cuda opencl的内容,还有一个简单的事实,即我没有使用比ffmpeg更多的转换工具,因为用了很长时间了。
使用我所使用的设置,ffmpeg是一个好的转换器,可以保持与源相同的视频质量,同时减少平均30-40%的占用空间吗?
GPU转换真的那么糟糕(测试gtx970的cuda)?通过同时使用GPU和CPU来提高转换速度会很好,但据我理解它们不能一起工作?而且仅使用GPU会严重损失质量... CPU更精确,GPU计算速度更快但不够精确,根据我所读的资料,昂贵的软件仅用于预览目的使用cuda... 对吗?
ffmpeg或其他软件是否兼容CPU + GPU编码?
我真的不记得在哪里看到的了,但我读过ffmpeg不是一个好的视频转换器。
我非常满意尺寸/质量,我平均节省了30%的空间,并且没有明显的质量损失。通过一些额外的参数,我可以调整一些旧的模拟视频,这些视频的去隔行扫描质量非常差。
也许我可以用另一个软件获得更多的尺寸/质量吗?
注意:我喜欢ffmpeg。它是免费的,并且具有命令行,因此我可以使用php html和js创建自己的界面,并在各种设备上使用它而无需在每个设备上安装它。我直接将idevice剪辑上传到ffmpeg服务器。
编辑:
@talonmies ... cuda标签已删除:
http://www.nvidia.com/object/cuda_home_new.html
CUDA®是由NVIDIA发明的并行计算平台和编程模型。它通过利用图形处理单元(GPU)的强大计算能力,实现了计算性能的显著提升。迄今为止,已经销售了数百万支持CUDA的GPU,软件开发人员、科学家和研究人员正在广泛使用CUDA进行GPU计算。以下是一些例子:-更多信息请参见http://www.nvidia.com/object/cuda_home_new.html#sthash.dEYaqae7.dpuf 难道CUDA不是一个理论上应该支持的编程模型,以便处理像GTX 970这样的NVIDIA卡上的GPU编码吗?就像Badaboom软件http://www.geforce.com/games-applications/pc-applications/badaboom-media-converter一样。