webm dash encoding ...正确的ffmpeg参数是什么?

时间:2015-03-12 07:37:26

标签: ffmpeg webm dash.js

我很难将视频编码为符合短划线的格式。我要从.mp4到.webm

首先,我正在运行OS X和ffmpeg 2.5.4。

这是我在测试中使用的编码命令(我从here得到了这些命令):

ffmpeg -i IMG_0113.mp4 -c:v libvpx-vp9 -s 160x90 -b:v 25k -g 1 -tile-columns 4 -frame-parallel 1 -an -f webm -dash 1 video_160x90_25k.webm

ffmpeg -i IMG_0113.mp4 -c:v libvpx-vp9 -s 160x90 -b:v 50k -g 1 -tile-columns 4 -frame-parallel 1 -an -f webm -dash 1 video_160x90_50k.webm

ffmpeg -i IMG_0113.mp4 -vn -acodec libvorbis -ab 128k  -dash 1 audio_128k.webm

ffmpeg -f webm_dash_manifest -i video_160x90_25k.webm -f webm_dash_manifest -i video_160x90_50k.webm -f webm_dash_manifest -i audio_128k.webm -c copy -map 0 -map 1 -map 2 -f webm_dash_manifest -adaptation_sets "id=0,streams=0,1 id=1,streams=2" manifest.mpd

其次,问题不在于我的服务器,因为我从here下载了样本,并且当我从本地服务器提供服务时,它们在dash.js播放器上100%工作。

请有人在那里指出我正确的方向吗?或者提供用于使输出格式正确的ffmpeg命令的示例。

谢谢, 迪安。

2 个答案:

答案 0 :(得分:14)

好的,在这里,设法解决这个问题。希望这会为别人带来一些麻烦。

首先,这是解决方案。

第1步:(从视频中删除音频,并创建单个音频文件)

ffmpeg -i IMG_0113.mp4 -c:v libvpx -s 160x90 -threads 4 -b:v 25k -tile-columns 4 -frame-parallel 1 -an -keyint_min 30 -g 30 -f webm video_160x90_25k.webm

ffmpeg -i IMG_0113.mp4 -c:v libvpx -s 160x90 -threads 4 -b:v 50k -tile-columns 4 -frame-parallel 1 -an -keyint_min 30 -g 30 -f webm video_160x90_50k.webm

ffmpeg -i IMG_0113.mp4 -vn -acodec libvorbis -ab 128k audio_128k.webm

第2步:(使用libwebm项目available here中的 sample_muxer 创建视频提示点)

sample_muxer -i video_160x90_25k.webm -o video_160x90_25k_cued.webm

sample_muxer -i video_160x90_50k.webm -o video_160x90_50k_cued.webm

第3步:(使用ffmpeg创建音频提示点)

ffmpeg -i audio_128k.webm -vn -acodec libvorbis -ab 128k -dash 1 audio_128k_cued.webm

第4步:(使用ffmpeg创建webm破折号清单文件 .mpd

ffmpeg -f webm_dash_manifest -i video_160x90_25k_cued.webm -f webm_dash_manifest -i video_160x90_50k_cued.webm -f webm_dash_manifest -i audio_128k_cued.webm -c copy -map 0 -map 1 -map 2 -f webm_dash_manifest -adaptation_sets "id=0,streams=0,1 id=1,streams=2" manifest.mpd

其次,这里有解释。

ffmpeg(我的版本atleast),没有正确地创建视频文件中的提示点(添加-dash 1时)参数。我通过探测视频文件并了解webm文件格式(read this,如果您想了解更多信息)来确定这一点。

然后我偶然发现了来自reading this page的sample_muxer,并决定看看它是否会更好地处理ffmpeg没有做对的视频提示点。哎呀,哎呀!

我注意到ffmpeg(使用-dash 1 param)提取的音频文件中的提示点正在正确创建!

webm dash清单的ffmpeg生成也很好用!

为了播放视频,我发现shaka-player工作得最好,但我无法使用它,因为我需要从cefpython容器中播放视频,并且shaka-player不能使用最新的cef(铬嵌入式框架) cefpython发布。

然后我根据this helpful site from google

编写了自己的播放器

无论如何,希望这有助于某人

答案 1 :(得分:0)

我有类似的问题。当我用ffmpeg v3.4.2将mpeg2转换为vp9时,在VLC播放器中无法找到输出视频(寻求时间很长)。当我尝试ffmpeg v4.0.2时,可以在VLC播放器中搜索该视频。看来,它已在ffmpeg v4.0.2中修复