【发布时间】: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