Chunk demuxer error append failed как исправить
GitLab
- Help
- Support
- Community forum
- Keyboard shortcuts ?
- Submit feedback
Toggle navigation Menu
Lyndon Brown authored Oct 06, 2020 and Steve Lhomme committed Oct 07, 2020
commit e1a90aa9 removed an entry from po/vlc.pot which consequently causes builds to update all of the po files accordingly (in many cases moving existing translations to commented out copies further down in the files), which then sit as changed files in the unstaged list. this purges the left over artefactsto stop this being a problem. Signed-off-by:
Steve Lhomme
VideoLAN code repository instance
Saved searches
Use saved searches to filter your results more quickly
Cancel Create saved search
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Streaming live h264 video using mp4frag #4
karlbrowns opened this issue Dec 3, 2019 · 1 comment
Streaming live h264 video using mp4frag #4
karlbrowns opened this issue Dec 3, 2019 · 1 comment
Comments
karlbrowns commented Dec 3, 2019
Hi Kevin,
I want to stream a live h264 stream to a web browser video panel. I’m already using node for the web server, and ffmpeg to turn the h264 stream to fragmented mp4, and then I found your mp4frag module. The issue I have at the moment without mp4frag is that I feed the ffmpeg data into node via a UDP port, and whenever this gets some data it writes it out on the wss socket to the browser. However, as it comes in in small chunks, the browser tries to add the buffer received to the mediasource sourceBuffer and this fails with a CHUNK DEMUXER ERROR APPEND FAILED error.
I’m running this on an embedded system, so don’t have vast amounts of storage available, and don’t want the latency of HLS. Is it possible to get mp4frag to send the stream to MSE one frame at a time? How would I configure it to do this?
Many thanks,
Simon
The text was updated successfully, but these errors were encountered:
How to fix CHUNK_DEMUXER_ERROR_APPEND_FAILED error when append chunk?
I want to create a video player that can play multiple resolution, so I have to load chunks of different codecs. I tried to append chunk of the same codec and it work. So I tried to use changeType() but when I append the new codec chunk in the video element I found this error «CHUNK_DEMUXER_ERROR_APPEND_FAILED: Append: stream parsing failed.».
const myMediaSource = new MediaSource(); var videoSourceBuffer; var quality=480,qlast=480; var currentSegment = 0; var loading = false; function videos() < myMediaSource.addEventListener('sourceopen', sourceOpen, < once: true>); > function sourceOpen() < setInterval(feedVideo, 500); >function feedVideo() < if (!loading) < try < if (myMediaSource.sourceBuffers.length == 0) < videoSourceBuffer = myMediaSource.addSourceBuffer('video/mp4; codecs="avc1.64001E,mp4a.40.2"'); appendSegment("cinit.mp4", 0); first = true; >else < if (qlast != quality) < videoSourceBuffer = myMediaSource.sourceBuffers[0]; if (quality == 1080) < type = 'video/mp4; codecs="avc1.640028,mp4a.40.2"'; >else if (quality == 720) < type = 'video/mp4; codecs="avc1.64001F,mp4a.40.2"'; >else if (quality == 480) < type = 'video/mp4; codecs="avc1.64001E,mp4a.40.2"'; >else if (quality == 360) < type = 'video/mp4; codecs="avc1.64001E,mp4a.40.2"'; >videoSourceBuffer.changeType(type); videoSourceBuffer.mode = "segments"; qlast = quality; > > if (!first) < appendSegment("c" + currentSegment + ".m4s", currentSegment); >else < first = false; >> catch (error) < console.log('Error! ' + error); >> > function appendSegment(file, resourcesIndex) < loading = true; fetch("http://mysite/video/" + quality + "p/" + file).then(function (response) < return response.arrayBuffer(); >).then(function (videoData) < videoSourceBuffer.appendBuffer(videoData); videoSourceBuffer.addEventListener('updateend', function () < loading = false; >, < once: true >); >); >
Как правильно хостить и проигрывать видео в 2020?
Добрый вечер!
Мы недавно реализовали проект фестиваля, на сайте которого можно было посмотреть полнометражные фильмы.
В целом все прошло хорошо, но сейчас очень остро стоит вопрос относительно технологий которые для этого использовались, потому что очень явно ощущается, что что-то пошло не так, а на горизонте уже маячат похожие проекты.
Начитавшись того, как «правильно» должна выглядеть подобная реализация, решили заюзать эпловский HLS.
Конвертнули все видео-дорожки для разного качества при помощи ffmpeg. Разбили все файлы на видео-аудио дорожки при помощи mediafilesegmenter, mediasubtitlesegmenter — создали плейлисты при помощи variantplaylistcreator.
Получили класный master.m3u8 файл плейлиста, где все эти конфиги были красиво описаны.
И вроде бы на клиенте получаем полностью работоспособную систему, которая отлично работает. но не тут то было.
Когда на проект запустили пользователей — массово посыпались жалобы, у кого-то не грузит видео, кто-то ловит ошибки декода (chunk_demuxer_error_append_failed append stream parsing failed) у кого-то видео зависает на каких-то этапах и на отказ перестает грузиться. Это при том, что в первый день онлайн был не более 200 одновременных просмотров, а нагрузка по трафику из доступных 3гб\сек не превышала и 1\3.
Другими словами, пошла какая-то лажа.
Так как делать нужно было что-то срочно, решили от m3u8 файлов отказаться и перейти на отдачу цельных файлов сразу. В конфигах просто прописали ссылки на mp4 файлы, в которых сразу находилось всего одна аудио и видео дорожка. И чудо — все ошибки сразу пропали.
То есть получается, что отдача одним файлом и браузерный декод, вышли намного эффективнее чем то, что мы делали через HLS. ¯\_( ツ)_/¯
Мы посмотрели кучу стриминговых сервисов, большая часть из них отдавала все свои стримы в формате m3u8, и никаких проблем при этом люди не испытывали. Соответственно назрела куча вопросов о том, как таки стоит делать и в чем могла быть ошибка и как это исправить на будущее.
1) Как правильно хостить файлы на сервере? Нужна ли разбивка при помощи HLS\DASH? Где-то видел что эти технологии нужно использовать в паре, так как каждая из них имеет свою браузерную поддержку.
2) Должны ли быть на сервере какие-то специфичные настройки, для эффективной отдачи статического медиа-контента?
3) Медиа-плеер. Возможно, причина ошибок связана с плеером, который использовали на клиенте? Мы использовали https://flowplayer.com/.
Наслышан о таких плеерах, как Movie.js Shaka Player, jwplayer — возможно есть смысл попробовать какой-то из них? Плеер не обязательно бесплатный, просто хочется использовать технологию, которая сможет дать максимальное покрытие. Например, в этом проекте, люди заходили с телевизора, а на tizen flowplayer не работал, от слова совсем.
4) Шифрование\защита файлов. Как по мне отдача чистых mp4 файлов, небезопасна от слова совсем. Понятное дело, что собрать готовый файл с плейлиста, можно одной командой из ffmpeg, но в той реализации которая вышла, достаточно просто открыть дев. тулзы и получить прямую ссылку на файл который можно сохранить себе на пк.
Помогите на будущее делать хорошо 🙂
- Вопрос задан более трёх лет назад
- 2136 просмотров