FFMPEG 4 将 MKV 转码为 MP4 时出现 DASHJS 问题

FFMPEG 4 将 MKV 转码为 MP4 时出现 DASHJS 问题

我不太确定问题是什么,也不太确定从哪里开始排除故障。在我的 CentOS 7 机器上,我安装了它4.0.1-static https://johnvansickle.com/ffmpeg/,并尝试将 MKV 文件转码为 MP4,这样我就可以使用 Bento4 来分割文件并使用 Dash/HLS 播放。出于某种原因,当我转码 MKV 文件时,它不会通过 Dash JS 播放,但转码 MP4 文件时没有问题。奇怪的是,当我将可以正常工作的 MP4 转换为 MKV 时,它可以正常工作。

我不确定 FFMPEG 是否是问题所在,因此,为了单独说明,我有另一个安装了 FFMPEG 3.4 的 Ubuntu 盒子,我可以毫无问题地转码 MKV。因此,我使用相同的 FFMPEG 命令将 MKV 转码为 MP4,并使用 Bento4,它工作得很好。因此,似乎将 MKV 转码为 MP4 版本存在问题……但不确定。我尝试了几种不同的 MKV,每个人都遇到了这个问题。

这是我的 FFMPEG 信息:

ffmpeg version 4.0.1-static https://johnvansickle.com/ffmpeg/
Copyright (c) 2000-2018 the FFmpeg developers
built with gcc 6.3.0 (Debian 6.3.0-18+deb9u1) 20170516

configuration: 
--enable-gpl 
--enable-version3
--enable-static 
--disable-debug 
--disable-ffplay 
--disable-indev=sndio 
--disable-outdev=sndio 
--cc=gcc-6 
--enable-fontconfig 
--enable-frei0r 
--enable-gnutls 
--enable-gray 
--enable-libaom 
--enable-libfribidi 
--enable-libass 
--enable-libvmaf 
--enable-libfreetype 
--enable-libmp3lame 
--enable-libopencore-amrnb 
--enable-libopencore-amrwb 
--enable-libopenjpeg 
--enable-librubberband 
--enable-libsoxr 
--enable-libspeex 
--enable-libvorbis 
--enable-libopus 
--enable-libtheora 
--enable-libvidstab 
--enable-libvo-amrwbenc 
--enable-libvpx 
--enable-libwebp 
--enable-libx264 
--enable-libx265 
--enable-libxml2 
--enable-libxvid 
--enable-libzimg

libavutil      56. 14.100 / 56. 14.100
libavcodec     58. 18.100 / 58. 18.100
libavformat    58. 12.100 / 58. 12.100
libavdevice    58.  3.100 / 58.  3.100
libavfilter     7. 16.100 /  7. 16.100
libswscale      5.  1.100 /  5.  1.100
libswresample   3.  1.100 /  3.  1.100
libpostproc    55.  1.100 / 55.  1.100

Hyper fast Audio and Video encoder

usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...

我尝试过的一些方法是访问 FFMPEG Wiki 并通过安装指南安装不同的版本,但结果相同。当我直接加载输出文件而不是通过 Dash Player 加载时,一切都正常,但这不是我想要的结果。

如果有帮助的话,这是我在浏览器中遇到的错误:

ERROR DOMException: Failed to read the 'buffered' property from 'SourceBuffer': This SourceBuffer has been removed from the parent media source.

您对这是什么原因造成的有任何想法吗?如果我没有提供正确的信息,请告诉我,我会提供更多信息。

编辑

我删除了 FFMPEG 4 并安装了最新的 RPM ffmpeg version 2.6.8,一切正常。我想使用最新最好的版本,但我想我得等一等。

FFMPEG 命令

ffmpeg 
-i ${DIRECTORY}/temp/master.mkv 
-progress ${DIRECTORY}/logs/transcode.log 
-s 320x240 
-c:v libx264 
-b:v 235k 
-minrate 235k 
-maxrate 235k 
-bufsize 470k 
-g 120 
-keyint_min 120 
-sc_threshold 0 
-profile:v high 
-flags +cgop 
-movflags faststart 
-preset veryfast 
-pix_fmt yuv420p 
${DIRECTORY}/temp/ffmpeg_320_240_235.mp4 &> ${DIRECTORY}/logs/ffmpeg.log

Bento4 片段命令

${BENTO4}/mp4fragment 
${DIRECTORY}/temp/ffmpeg_320_240_235.mp4 
${DIRECTORY}/temp/fragment.mp4 &> ${DIRECTORY}/logs/fragment.log

Bento4 帅气

${BENTO4}/mp4dash 
--verbose 
--debug 
-o ${DIRECTORY} -f 
--mpd-name=episode.mpd 
--profiles=on-demand 
--rename-media 
--media-prefix=media 
--exec-dir=${BENTO4} 
--hls 
--hls-master-playlist-name=episode.m3u8 
${DIRECTORY}/temp/fragment.mp4 &> ${DIRECTORY}/segment.log

相关内容