【问题标题】:Converting vídeo from vp8 to x264 outputs different video with different length将视频从 vp8 转换为 x264 输出不同长度的不同视频
【发布时间】:2020-02-21 06:56:34
【问题描述】:

我有一个持续时间为 2m:39s 的 webm 文件(vp8 编解码器)

使用 ffmpeg -i video.webm 表示视频有 15fps

输入 #0,matroska,webm,来自 'video.webm':元数据: 编码器:Lavf54.17.3 持续时间:00:02:39.63,开始:0.000000,比特率:417 kb/s 流 #0:0:音频:vorbis、44100 Hz、立体声、fltp(默认) 流 #0:1:视频:vp8、yuv420p(渐进式)、320x240、SAR 1:1 DAR 4:3、15 fps、15 tbr、1k tbn、1k tbc(默认)

我尝试将设置转换为相同的帧速率并添加到 mp4 容器中

$ x264 --output intermediate.264 --fps 15 --preset slow --bitrate 400 --vbv-maxrate 800 --vbv-bufsize 1600 --min-keyint 48 --keyint 48 --scenecut 0 --no-scenecut --pass 1 --video-filter "resize:width=426,height=240" video.webm

$ MP4Box -add intermediate.264 -fps 15 out.mp4

但生成的文件 out.mp4 现在有 2m:57s 的持续时间

【问题讨论】:

  • 查看 vlc 播放器中 webm 文件和 mp4 文件的统计信息。 (解码块/显示帧)两种情况下的帧数应该相同。
  • 原始视频有2654个显示帧和5307个解码块,转换后的文件有2643个显示帧和5302个解码块
  • 我假设 vlc 在显示它们时可能会丢弃一些帧。
  • 可能,x264cli 不尊重时间戳。请改用 ffmpeg。
  • ffmpeg 有效,但我的最终目标是根据用户带宽生成一个用于自适应分辨率的破折号文件,当我使用 ffmpeg 转换时,我无法使用 dash.js 播放器寻找随机媒体时间,使用 x264 它有效,但我有媒体持续时间问题

标签: ffmpeg video-processing x264 vp8 mp4box


【解决方案1】:

当您从原始 .264 转储文件中生成 .mp4 文件时。

这里是持续时间的简单计算:

原始帧数:2654

帧速率:每秒 15 帧

mp4 文件的持续时间:2654 /15 = 176.93333 秒 /60 = 2 分 56.93 秒 = ~ 2 分 57 秒

Webm 文件的音频数据可能少于视频帧。 所以它的持续时间小于 mp4 文件。

【讨论】:

  • 我并排播放了两个视频,它就像原始文件有 16~17 fps,我不认为 vp8 编解码器加速或减慢视频帧以适应音频,但 ffmpeg 的输出错误 -我
猜你喜欢
  • 2012-07-12
  • 2022-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-26
  • 1970-01-01
  • 2016-05-18
相关资源
最近更新 更多