FFMPEG,播放器在编码后播放抖动的视频

时间:2020-09-06 09:26:32

标签: video ffmpeg video-encoding

一段时间以来,我一直在Windows 10上使用FFMPEG。为了帮助我完成工作,我得到了几个DOS批处理文件,这些文件具有参数并执行从头开始剪切,模糊区域,静音音频等任务。

我通常会拍摄大型视频,使用Avidemux提取我喜欢的部分,使用FFMPEG在某些部分上剪切/应用过滤器,使用FFMPEG加入它们,然后再次编码以消除我上的任何错误(或混浊等)目标播放器,即在Android TV(TCL品牌)上运行的Kodi 18.xx。

我对一部已经执行了几年的视频进行了类似的处理,但是该视频似乎无法控制。我使用Avidemux 2.7.2剪辑了视频。该视频已在关键帧处剪切。如果我取一个未编码的文件,它可以在我的Android TV上完美运行。如果我使用FFMPEG对其进行编码,则在我的Android TV上播放时,它会变得很混乱。

视频始终可以在PC上运行的VLC播放器上正常播放。

一些可能有用的信息。如果需要,我可以附加详细的框架信息。

ffmpeg version 4.3 Copyright (c) 2000-2020 the FFmpeg developers
      built with gcc 9.3.1 (GCC) 20200621
      configuration: --disable-static --enable-shared --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libsrt --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libgsm --disable-w32threads --enable-libmfx --enable-ffnvcodec --enable-cuda-llvm --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt --enable-amf
      libavutil      56. 51.100 / 56. 51.100
      libavcodec     58. 91.100 / 58. 91.100
      libavformat    58. 45.100 / 58. 45.100
      libavdevice    58. 10.100 / 58. 10.100
      libavfilter     7. 85.100 /  7. 85.100
      libswscale      5.  7.100 /  5.  7.100
      libswresample   3.  7.100 /  3.  7.100
      libpostproc    55.  7.100 / 55.  7.100

显示源文件的信息。编解码器是hevc,我认为FFMPEG没有默认支持吗?

ffmpeg -i _p007_cut_start.mp4 -hide_banner
    Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '_p007_cut_start.mp4':
      Metadata:
        major_brand     : isom
        minor_version   : 512
        compatible_brands: isomiso2mp41
        encoder         : Lavf58.20.100
      Duration: 00:00:08.51, start: 0.006000, bitrate: 5501 kb/s
        Stream #0:0(und): Video: hevc (Main 10) (hev1 / 0x31766568), yuv420p10le(tv, bt709), 1920x816 [SAR 1:1 DAR 40:17], 5091 kb/s, 23.98 fps, 23.98 tbr, 24390 tbn, 23.98 tbc (default)
        Metadata:
          handler_name    : VideoHandler
        Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, 5.1, fltp, 401 kb/s (default)
        Metadata:
          handler_name    : SoundHandler

显示已编码文件的信息:

ffmpeg -i p007_done2.mp4 -hide_banner
    Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'p007_done2.mp4':
      Metadata:
        major_brand     : isom
        minor_version   : 512
        compatible_brands: isomiso2avc1mp41
        encoder         : Lavf58.45.100
      Duration: 00:00:08.53, start: 0.000000, bitrate: 3092 kb/s
        Stream #0:0(und): Video: h264 (High 10) (avc1 / 0x31637661), yuv420p10le, 1920x816 [SAR 1:1 DAR 40:17], 2743 kb/s, 23.98 fps, 23.98 tbr, 24390 tbn, 47.95 tbc (default)
        Metadata:
          handler_name    : VideoHandler
        Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, 5.1, fltp, 345 kb/s (default)
        Metadata:
          handler_name    : SoundHandler

如果有人能指出我出了问题,我将不胜感激。

用于执行编码的命令如下(仅在libx264和lib265之间交换了库):

ffmpeg -i in.mp4 -map 0:v -c:v libx264 -video_track_timescale 24390 -crf 23 -map 0:a -c:a aac -copyts -vsync 0 -async 0 -movflags +faststart out.mp4

P.S。我的知识更多是基于反复试验,除了使我明白这一点之外,我对视频格式(和概念)的了解不多。

关于, AK

1 个答案:

答案 0 :(得分:0)

我用libx264编码的视频,我用libx265重新编码,问题已经消失了。

但是我仍然很想知道为什么使用libx264编码会导致视频变得生涩。

关于, AK