ffmpeg status& quality / cuda(CPU / GPU)

时间:2014-11-03 19:10:00

标签: video ffmpeg video-processing

ffmpeg我做得对吗?

自从我使用ffmpeg转换我的家庭网络服务器上的剪辑以来已经过了很多时间,现在mp4(h264& aac)是当前的整体标准(适用于所有控制台,智能手机,智能电视,个人电脑)我决定将我的旧剪辑从各种数码相机转换为这个新的容器/编解码器。

  1. 减少空间和同样的品质。
  2. 兼容性
  3. 支持标签(subler for mac)
  4. 经过一些研究后,由于种种原因,我选择了ffmpeg

    1. 命令行(我使用默认设置创建了我的简单Web界面,我用php的exec执行)
    2. 质量/尺寸金额
    3. 我读到许多昂贵的视频转换软件无法正确处理低比特率视频。我也测试了其中的一些,我个人无法找到正确的导出设置,或者我对结果没有留下深刻的印象......有些已经修复了默认的导出设置,大多数在相同的文件大小时具有较低的视频质量。 ffmpeg允许我设置-crf(通常为18-24)和-preset(veryslow,fast ..)女巫允许我大幅减少文件大小的文件大小 可见的质量。

      说我在veryslow使用预设。(还有安慰剂,但最终的视频文件只有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,但我能够保持环绕声在一些电视,高级媒体播放器或设备上播放像苹果电视。

      并不是说我对速度不满意(使用四核)但我最近再次阅读了关于cuda opencl的事情,而且还有一个简单的事实就是我很多时候都没有使用其他转换器而不是ffmpeg。

      ffmpeg(我使用的设置)是一个好的转换器,以保持与源相同的视频质量,减少占用的空间和平均30-40%?

      GPU转换真的那么糟糕(cuda ..测试一个gtx970)? 通过使用gpu和cpu来为转换添加更多速度会很不错..但是根据我的理解,它们无法一起工作???并且仅使用gpu是一种极大的质量损失... cpu si更精确,gpu计算速度更快,从我读到的内容来说太不精确了......所以昂贵的软件只使用cuda用于预览目的......对吗?

      ffmpeg或其他软件是否与CPU + GPU编码兼容? 我真的不记得在哪里,但我读到ffmpeg不是一个好的视频转换器。

      我对尺寸/质量非常满意,我在太空中平均获得了30%的成绩,没有明显的质量损失。通过一些额外的参数,我可以调整一些非常旧的模拟视频,这些视频以非常糟糕的方式去隔行扫描。

        

      也许我可以用另一种软件获得更大的尺寸/质量???

      注意:我喜欢ffmpeg.it是免费的,它有命令行,所以我可以使用php html&创建我自己的界面js并在各种机器上使用它,而无需在我使用的每个设备中安装它。我将idevice剪辑直接写入ffmpeg服务器。

      顺便说一句:解释一下downvotes ......

      编辑:

      @talonmies ...删除了cuda标签:

      http://www.nvidia.com/object/cuda_home_new.html

        

      CUDA®是一种并行计算平台和编程模型   由NVIDIA提供。它可以显着提高计算性能   利用图形处理单元(GPU)的强大功能。同   迄今已售出数百万支持CUDA的GPU,软件开发人员,   科学家和研究人员正在寻找GPU的广泛用途   用CUDA计算。以下是一些示例: - 详情请见:   http://www.nvidia.com/object/cuda_home_new.html#sthash.dEYaqae7.dpuf

      不是cuda理论ffmpeg库应该支持的编程模型来处理像gtx 970这样的nvidia卡上的GPU编码吗?喜欢badaboom软件http://www.geforce.com/games-applications/pc-applications/badaboom-media-converter

2 个答案:

答案 0 :(得分:2)

  

ffmpeg(我使用的设置)是一个好的转换器,以保持与源相同的视频质量,减少占用的空间和平均30-40%?

有许多因素需要考虑,但作为一个广泛的概括,您可能能够实现视觉上无损或近乎如此但最多的用户 - 但不能在技术上实现无损"输出也小于输入。从〜-crf 18开始,然后增加它,直到达到仍然提供可接受质量的最高值。将该值用于其余编码。

如果速度太慢,请使用更快-preset

有关详细信息,请参阅FFmpeg Wiki: H.264 Video Encoding Guide

  

ffmpeg或其他软件是否与CPU + GPU编码兼容?

  • FFmpeg支持nvenc。获取NVIDIA Video Coding SDK,然后使用ffmpeg汇编--enable-nonfree --enable-nvenc。提供类似质量时,它可能比x264慢,但如果你的CPU已被占用,它可能会很有用。

  • x264可以支持OpenCL(--opencl选项)用于前瞻,也许还有其他一些东西,但它可能不值得使用,甚至可能更慢。你只需要尝试并比较;假设你有兼容的硬件。

  • 声称使用"(GP)GPU"的编码器在某种程度上,通常比正常的x264更慢和/或更低质量。

  

我读到ffmpeg不是一个好的视频转换器

没有任何理由,这听起来像是一个未经证实的意见。

答案 1 :(得分:0)

Is ffmpeg (with the setting i use) a good converter to keep the same video quality than the source reducing the space occupied by and average of 30-40% ?

通常情况下,在这种情况下,您使用libx264进行视频转换,请尝试查看。也许尝试不同的-crf值。请记住,这种转换[除非crf值非常低]将是有损的。

Is GPU conversion bad?这可能不错,取决于你如何使用它。 FFmpeg并不真正支持[来自命令行]硬件GPU解码/编码,AFAIK。