FFMPEG 4 Транскодирование MKV в MP4 имеет странную проблему с DASHJS

323
Mike

Я не совсем уверен, что знаю, в чем проблема или с чего начать устранение неполадок. На моем CentOS 7 я 4.0.1-static https://johnvansickle.com/ffmpeg/установил, и я пытаюсь перекодировать MKV файлы в MP4, чтобы я мог использовать Bento4 для фрагментации и Dash / HLS файлы для воспроизведения. По какой-то причине, когда я транскодирую файл MKV, он не будет воспроизводиться через Dash JS, но у меня нет проблем с перекодировкой файлов MP4. Что странно, когда я конвертирую работающий MP4 в MKV, это работает.

Я не был уверен, что проблема в FFMPEG, поэтому, чтобы выделить его, у меня есть еще одна коробка, на которой установлена ​​Ubuntu с FFMPEG 3.4, и я могу без проблем перекодировать MKV. Поэтому я использовал ту же команду FFMPEG, чтобы перекодировать MKV в MP4 и использовать Bento4, и она работала просто отлично. Таким образом, кажется, что есть проблема с перекодировкой MKV в MP4 с версией 4 ... но не уверен. Я пробовал несколько разных 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 COMMAND

ffmpeg  -i $/temp/master.mkv  -progress $/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  $/temp/ffmpeg_320_240_235.mp4 &> $/logs/ffmpeg.log 

Команда фрагмента Bento4

$/mp4fragment  $/temp/ffmpeg_320_240_235.mp4  $/temp/fragment.mp4 &> $/logs/fragment.log 

Bento4 Dashing

$/mp4dash  --verbose  --debug  -o $ -f  --mpd-name=episode.mpd  --profiles=on-demand  --rename-media  --media-prefix=media  --exec-dir=$  --hls  --hls-master-playlist-name=episode.m3u8  $/temp/fragment.mp4 &> $/segment.log 
0
Downvotes, пожалуйста, объясните, чтобы я мог улучшить вопрос. Mike 5 лет назад 1
Тест с последней версией git. Если это не удается, подайте отчет об ошибке на trac.ffmpeg.org Gyan 5 лет назад 0
@Gyan - я попробую, а затем сообщу об ошибке, если возникнут какие-либо проблемы. Mike 5 лет назад 0
На самом деле вы не предоставляете много информации о том, что конкретно вы делаете, когда говорите «транскодирование», какие конкретные команды вы используете, где вы тестируете и т. Д. slhck 5 лет назад 1
@slhck Я не поэтому не отправил команду ... Я извиняюсь ... Я сделаю это сейчас. Что касается транскодирования, я все еще новичок в видео, так что терпите меня, но разве транскодирование не является просто «преобразованием» видео контейнеров (Demuxing и Muxing) (MKV в MP4)? Я уверен, что моя команда определит, что такое «транскодирование». Что касается тестирования, помимо того, что я упомянул в своем посте, есть ли какие-либо предлагаемые тесты, которые я могу выполнить? Как я уже говорил, я новичок в FFMPEG, поэтому я могу не знать или подумать о каком-либо надлежащем тестировании для выполнения. Mike 5 лет назад 0
Не беспокойтесь, просто показать полную команду и вывод ffmpeg включены, просто чтобы исключить некоторые случаи «неправильных предположений» или недоразумений. Транскодирование, к сожалению, довольно расплывчато. Transmuxing будет более точным, когда все, что вы делаете, это смена контейнера. И под Dash JS вы имеете в виду ссылочную реализацию `dash.js`? Если вы можете показать команды Bento4, это также поможет вам воспроизвести вашу проблему. Возможно, они не нужны, и это ошибка ffmpeg в последней версии, но кто знает! slhck 5 лет назад 1
Трансмуксинг имеет больше смысла ... все эти термины, лол. Да, мой конечный результат будет воспроизведен через `dash.js` или HLS, если будет обнаружено устройство ios. Мой компьютер для разработки использует FFMPEG версии 3.4, и у меня нет проблем с процессом, я выделил FFMPEG, чтобы преобразовать MKV на моей рабочей машине и использовать Bento4 для завершения процесса, и это сработало. Вот почему я думаю, что это FFMPEG, а не Bento4, но мои навыки устранения неполадок не самые лучшие. Я также выложу команды Bento4. Mike 5 лет назад 0

0 ответов на вопрос

Похожие вопросы