restreamer
restreamer copied to clipboard
Unreal Engine Electra Player Audio Bug
Describe the bug Unreal Electra player can open a video only HLS playlist, but will crash if you open one with audio associated with it. I tried unreal engines version 4.27, 5.0.3, and 5.1 preview 2, all with the same results.
To Reproduce Steps to reproduce the behavior: Install unreal. new project. add electra player plugin. new media player, new streaming media source. add HLS url, and open with media player.
Expected behavior Unreal does not crash.
Screenshots can't right now.
Desktop (please complete the following information):
- OS: windows
- Browser [e.g. chrome, safari]
- Version 10
Additional context https://docs.unrealengine.com/4.27/en-US/WorkingWithMedia/IntegratingMedia/MediaFramework/ElectraPlayer/#httplivestreaming
^^^^this link will take you to the Variant Streams Restrictions, which should tell you all the neccesary features to conform to unreal's standards.
Let me know if you have any questions or have any trouble with reproducibility.
Error message from Discord:
When I try to enable audio of any sort ( passthrough AAC, AAC, MP3) it crashes unreal when I try to open the stream:
[00000574EC41B400][00000574EC31AD10] HLS playlist builder: EXT-X-STREAM-INF CODECS not specified. Assuming H.264 HIGH profile level 4.2 and LC-AAC audio
[2022.11.01-18.38.21:908][254]LogElectraPlayer: Error: [00000581317DEA00][0000058138FDC110] HLS fmp4 reader: Failed to download segment "http://**.**.**.**:8080/memfs/ad5946cb-17b8-4612-a0d6-8841d1a5b23d_0003_var0.mp4"
[2022.11.01-18.38.21:935][257]LogElectraPlayer: [00000581317DEA00][0000058138FDC110] Media segment download issue (HTTP returned status 404): retry:0, success:0, aborted:0, filler:0
[2022.11.01-18.38.21:935][257]LogWindows: Error: appError called: Assertion failed: MP4InitSegment->GetNumberOfTracks() == 1 [File:D:\build++UE5\Sync\Engine\Plugins\Media\ElectraPlayer\Source\ElectraPlayerRuntime\Private\Runtime\Player\HLS\StreamReaderHLSfmp4.cpp] [Line: 697]
@dwaynarang thx :-) We'll take a look.
@dwaynarang Have you tried it with the latest version of Restreamer? It looks like you're using an older version. Which version are you on?
The error message says, that it can't find the segment "/memfs/ad5946cb-17b8-4612-a0d6-8841d1a5b23d_0003_var0.mp4" (HTTP returned status 404
). It might be that the player is using the information from an outdated playlist.
Neither of us is a Unreal Engine developer, so we're not able to reproduce the error.
How do I get the latest version? My version is "datarhei-core v16.9.1 (linux/arm64) - dawn-rice-5488" which i got by running the code from "https://github.com/datarhei/restreamer" under the RaspPi section. Is that the most recent version? If not, how do I get it?
You can get the latest version with pull datarhei/restreamer:rpi-latest
. Then you have to restart the currently running container.
Not sure if you're on discord as well, but I have been able to update to the current version of restreamer with the same results. :(
Hey @dwaynarang Can you test it again with the latest release? And if it fails, please show:
- Process report (https://docs.datarhei.com/restreamer/knowledge-base/manual/process-report)
- Unreals error logs
restreamer-v2.4.2
Restreamer log: { "about": { "id": "3cfac5e2-a524-4768-b592-1942ae382d61", "name": "dawn-rice-5488", "created_at": "2022-11-27T20:59:55.000Z", "version": { "number": "16.11.0", "repository_commit": "8ba1c8c0ac327224428f8234a4f546e9364198f9", "repository_branch": "main", "build_date": "2022-11-09T14:26:44Z", "arch": "linux/arm64", "compiler": "go1.19.3" }, "auths": [ "localjwt" ], "app": "datarhei-core", "uptime_seconds": 877 }, "ffmpeg": { "version": "5.1.2", "compiler": "gcc 11.2.1 (Alpine 11.2.1_git20220219) 20220219", "configuration": "--extra-version=datarhei --prefix=/usr --extra-libs='-lpthread -lxml2 -lm -lz -lsupc++ -lstdc++ -lssl -lcrypto -lz -lc -ldl' --enable-nonfree --enable-gpl --enable-version3 --enable-postproc --enable-static --enable-openssl --enable-libxml2 --enable-libv4l2 --enable-v4l2_m2m --enable-alsa --enable-libfreetype --enable-libsrt --enable-libx264 --enable-libx265 --enable-libvpx --enable-libmp3lame --enable-libopus --enable-libvorbis --disable-ffplay --disable-debug --disable-doc --disable-shared", "libraries": [ { "name": "libavutil", "compiled": "57. 28.100", "linked": "57. 28.100" }, { "name": "libavcodec", "compiled": "59. 37.100", "linked": "59. 37.100" }, { "name": "libavformat", "compiled": "59. 27.100", "linked": "59. 27.100" }, { "name": "libavdevice", "compiled": "59. 7.100", "linked": "59. 7.100" }, { "name": "libavfilter", "compiled": "8. 44.100", "linked": "8. 44.100" }, { "name": "libswscale", "compiled": "6. 7.100", "linked": "6. 7.100" }, { "name": "libswresample", "compiled": "4. 7.100", "linked": "4. 7.100" }, { "name": "libpostproc", "compiled": "56. 6.100", "linked": "56. 6.100" } ] }, "config": { "created_at": "2022-11-27T20:59:55.183773552Z", "version": 3, "id": "3cfac5e2-a524-4768-b592-1942ae382d61", "name": "dawn-rice-5488", "address": ":8080", "update_check": true, "log": { "level": "info", "topics": [], "max_lines": 1000 }, "db": { "dir": "/core/config" }, "host": { "name": [ "[anonymized]" ], "auto": true }, "api": { "read_only": false, "access": { "http": { "allow": [], "block": [] }, "https": { "allow": [], "block": [] } }, "auth": { "enable": true, "disable_localhost": false, "username": "[anonymized]", "password": "[anonymized]", "jwt": { "secret": "[anonymized]" }, "auth0": { "enable": false, "tenants": [ "[anonymized]" ] } } }, "tls": { "address": ":8181", "enable": false, "auto": false, "email": @.**", "cert_file": "", "key_file": "" }, "storage": { "disk": { "dir": "/core/data", "max_size_mbytes": 0, "cache": { "enable": true, "max_size_mbytes": 0, "ttl_seconds": 300, "max_file_size_mbytes": 1, "types": { "allow": [], "block": [ ".m3u8", ".mpd" ] } } }, "memory": { "auth": { "enable": true, "username": "[anonymized]", "password": "[anonymized]" }, "max_size_mbytes": 0, "purge": false }, "cors": { "origins": [ "" ] }, "mimetypes_file": "./mime.types" }, "rtmp": { "enable": true, "enable_tls": false, "address": ":1935", "address_tls": ":1936", "app": "[anonymized]", "token": "[anonymized]" }, "srt": { "enable": false, "address": ":6000", "passphrase": "", "token": "", "log": { "enable": false, "topics": [] } }, "ffmpeg": { "binary": "ffmpeg", "max_processes": 0, "access": { "input": { "allow": [], "block": [] }, "output": { "allow": [], "block": [] } }, "log": { "max_lines": 50, "max_history": 3 } }, "playout": { "enable": false, "min_port": 0, "max_port": 0 }, "debug": { "profiling": false, "force_gc": 0 }, "metrics": { "enable": false, "enable_prometheus": false, "range_sec": 300, "interval_sec": 2 }, "sessions": { "enable": true, "ip_ignorelist": [ "[anonymized]", "[anonymized]" ], "session_timeout_sec": 30, "persist": false, "persist_interval_sec": 300, "max_bitrate_mbit": 0, "max_sessions": 0 }, "service": { "enable": false, "token": "[anonymized]", "url": "https://service.datarhei.com" }, "router": { "blocked_prefixes": [ "/api" ], "routes": {}, "ui_path": "/core/ui" } }, "process": { "id": "restreamer-ui:ingest:ad5946cb-17b8-4612-a0d6-8841d1a5b23d", "type": "ffmpeg", "reference": "ad5946cb-17b8-4612-a0d6-8841d1a5b23d", "created_at": 1669583464, "config": { "id": "restreamer-ui:ingest:ad5946cb-17b8-4612-a0d6-8841d1a5b23d", "type": "ffmpeg", "reference": "ad5946cb-17b8-4612-a0d6-8841d1a5b23d", "input": [ { "id": "input_0", "address": "rtmp://[anonymized]", "options": [ "-fflags", "+genpts", "-thread_queue_size", "512" ] } ], "output": [ { "id": "output_0", "address": "{memfs}/ad5946cb-17b8-4612-a0d6-8841d1a5b23d_{outputid}.m3u8", "options": [ "-dn", "-sn", "-map", "0:1", "-codec:v", "copy", "-map", "0:0", "-codec:a", "copy", "-metadata", "title=http://[anonymized]", "-metadata", "service_provider=datarhei-Restreamer", "-bsf:a", "aac_adtstoasc", "-f", "hls", "-start_number", "0", "-hls_time", "2", "-hls_list_size", "6", "-hls_flags",
"append_list+delete_segments+program_date_time+independent_segments+temp_file", "-hls_delete_threshold", "4", "-hls_segment_type", "fmp4", "-hls_fmp4_init_filename", "ad5946cb-17b8-4612-a0d6-8841d1a5b23d.mp4", "-hls_fmp4_init_resend", "1", "-hls_segment_filename",
"{memfs}/ad5946cb-17b8-4612-a0d6-8841d1a5b23d_{outputid}%04d.mp4", "-master_pl_name", "ad5946cb-17b8-4612-a0d6-8841d1a5b23d.m3u8", "-master_pl_publish_rate", "2", "-method", "PUT" ], "cleanup": [ { "pattern": "memfs:/ad5946cb-17b8-4612-a0d6-8841d1a5b23d**", "max_files": 0, "max_file_age_seconds": 0, "purge_on_delete": true }, { "pattern": "memfs:/ad5946cb-17b8-4612-a0d6-8841d1a5b23d{outputid}.m3u8", "max_files": 0, "max_file_age_seconds": 24, "purge_on_delete": true }, { "pattern": "memfs:/ad5946cb-17b8-4612-a0d6-8841d1a5b23d_{outputid}_**.mp4", "max_files": 12, "max_file_age_seconds": 24, "purge_on_delete": true }, { "pattern": "memfs:/ad5946cb-17b8-4612-a0d6-8841d1a5b23d.m3u8", "max_files": 0, "max_file_age_seconds": 24, "purge_on_delete": true }, { "pattern": "memfs:/ad5946cb-17b8-4612-a0d6-8841d1a5b23d.mp4", "max_files": 0, "max_file_age_seconds": 24, "purge_on_delete": true } ] } ], "options": [ "-err_detect", "ignore_err", "-y" ], "reconnect": true, "reconnect_delay_seconds": 15, "autostart": true, "stale_timeout_seconds": 30, "limits": { "cpu_usage": 0, "memory_mbytes": 0, "waitfor_seconds": 0 } }, "state": { "order": "start", "exec": "running", "runtime_seconds": 205, "reconnect_seconds": -1, "last_logline": "[hls @ 0x7f84ae2080] Opening 'http://[anonymized] for writing", "progress": { "inputs": [ { "id": "input_0", "address": "rtmp://[anonymized]", "index": 0, "stream": 0, "format": "flv", "type": "audio", "codec": "aac", "coder": "aac", "frame": 9161, "fps": 43.067, "packet": 9161, "pps": 43.067, "size_kb": 54, "bitrate_kbit": 1.867, "q": 0, "sampling_hz": 44100, "layout": "stereo", "channels": 2, "avstream": null }, { "id": "input_0", "address": "rtmp://[anonymized]", "index": 0, "stream": 1, "format": "flv", "type": "video", "codec": "h264", "coder": "h264", "frame": 6382, "fps": 30, "packet": 6382, "pps": 30, "size_kb": 64926, "bitrate_kbit": 2441.6, "pix_fmt": "yuv420p", "q": 0, "width": 1920, "height": 1080, "avstream": null } ], "outputs": [ { "id": "output_0", "address": "http://[anonymized]", "index": 0, "stream": 0, "format": "hls", "type": "video", "codec": "h264", "coder": "copy", "frame": 6382, "fps": 30, "packet": 6382, "pps": 30, "size_kb": 64926, "bitrate_kbit": 2441.6, "pix_fmt": "yuv420p", "q": -1, "width": 1920, "height": 1080, "avstream": null }, { "id": "output_0", "address": "http://[anonymized]", "index": 0, "stream": 1, "format": "hls", "type": "audio", "codec": "aac", "coder": "copy", "frame": 9161, "fps": 43.067, "packet": 9161, "pps": 43.067, "size_kb": 54, "bitrate_kbit": 1.867, "q": 0, "sampling_hz": 44100, "layout": "stereo", "channels": 2, "avstream": null } ], "frame": 6382, "packet": 6382, "fps": 30, "q": -1, "size_kb": 64981, "time": 212.73, "bitrate_kbit": 2443.733, "speed": 1.04, "drop": 0, "dup": 0 }, "memory_bytes": 21327872, "cpu_usage": 0.75, "command": [ "-err_detect", "ignore_err", "-y", "-fflags", "+genpts", "-thread_queue_size", "512", "-i", "rtmp://[anonymized]", "-dn", "-sn", "-map", "0:1", "-codec:v", "copy", "-map", "0:0", "-codec:a", "copy", "-metadata", "title=http://[anonymized]", "-metadata", "service_provider=datarhei-Restreamer", "-bsf:a", "aac_adtstoasc", "-f", "hls", "-start_number", "0", "-hls_time", "2", "-hls_list_size", "6", "-hls_flags",
"append_list+delete_segments+program_date_time+independent_segments+temp_file", "-hls_delete_threshold", "4", "-hls_segment_type", "fmp4", "-hls_fmp4_init_filename", "ad5946cb-17b8-4612-a0d6-8841d1a5b23d.mp4", "-hls_fmp4_init_resend", "1", "-hls_segment_filename", "http://[anonymized]", "-master_pl_name", "ad5946cb-17b8-4612-a0d6-8841d1a5b23d.m3u8", "-master_pl_publish_rate", "2", "-method", "PUT", "http://[anonymized]" ] }, "report": { "created_at": 1669583467, "prelude": [ "ffmpeg version 5.1.2-datarhei Copyright (c) 2000-2022 the FFmpeg developers", " built with gcc 11.2.1 (Alpine 11.2.1_git20220219) 20220219", " configuration: --extra-version=datarhei --prefix=/usr --extra-libs='-lpthread -lxml2 -lm -lz -lsupc++ -lstdc++ -lssl -lcrypto -lz -lc -ldl' --enable-nonfree --enable-gpl --enable-version3 --enable-postproc --enable-static --enable-openssl --enable-libxml2 --enable-libv4l2 --enable-v4l2_m2m --enable-alsa --enable-libfreetype --enable-libsrt --enable-libx264 --enable-libx265 --enable-libvpx --enable-libmp3lame --enable-libopus --enable-libvorbis --disable-ffplay --disable-debug --disable-doc --disable-shared", " libavutil 57. 28.100 / 57. 28.100", " libavcodec 59. 37.100 / 59. 37.100", " libavformat 59. 27.100 / 59. 27.100", " libavdevice 59. 7.100 / 59. 7.100", " libavfilter 8. 44.100 / 8. 44.100", " libswscale 6. 7.100 / 6. 7.100", " libswresample 4. 7.100 / 4. 7.100", " libpostproc 56. 6.100 / 56. 6.100", "Input #0, flv, from 'rtmp://[anonymized]", " Metadata:", " 3.1 : false", " 7.1 : false", " encoder : obs-output module (libobs version 28.1.0)", " fileSize : 0", " 4.1 : false", " 5.1 : false", " audiochannels : 2", " 2.1 : false", " 4.0 : false", " Duration: 00:00:00.00, start: 0.003000, bitrate: N/A", " Stream #0:0: Audio: aac (LC), 44100 Hz, stereo, fltp, 65 kb/s", " Stream #0:1: Video: h264 (High), yuv420p(tv, bt709, progressive), 1920x1080 [SAR 1:1 DAR 16:9], 2560 kb/s, 30 fps, 30 tbr, 1k tbn", "[hls @ 0x7f84ae2080] Opening 'http://[anonymized] for writing", "[http @ 0x7f84aacea0] HTTP error 404 Not Found", "Output #0, hls, to 'http://[anonymized]", " Metadata:", " 3.1 : false", " 7.1 : false", " service_provider: datarhei-Restreamer", " fileSize : 0", " 4.1 : false", " 5.1 : false", " audiochannels : 2", " 2.1 : false", " 4.0 : false", " title : http://[anonymized]", " encoder : Lavf59.27.100", " Stream #0:0: Video: h264 (High), yuv420p(tv, bt709, progressive), 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 2560 kb/s, 30 fps, 30 tbr, 15360 tbn", " Stream #0:1: Audio: aac (LC), 44100 Hz, stereo, fltp, 65 kb/s" ], "log": [ [ "1669583552", "[hls @ 0x7f84ae2080] Opening 'http://[anonymized] for writing" ], [ "1669583560", "[hls @ 0x7f84ae2080] Opening 'http://[anonymized] for writing" ], [ "1669583560", "[mp4 @ 0x7f849fd390] Opening 'http://[anonymized] for writing" ], [ "1669583560", "[hls @ 0x7f84ae2080] Opening 'http://[anonymized] for writing" ], [ "1669583560", "[hls @ 0x7f84ae2080] Opening 'http://[anonymized] for writing" ], [ "1669583568", "[hls @ 0x7f84ae2080] Opening 'http://[anonymized] for writing" ], [ "1669583568", "[mp4 @ 0x7f849fd390] Opening 'http://[anonymized] for writing" ], [ "1669583568", "[hls @ 0x7f84ae2080] Opening 'http://[anonymized] for writing" ], [ "1669583577", "[hls @ 0x7f84ae2080] Opening 'http://[anonymized] for writing" ], [ "1669583577", "[mp4 @ 0x7f849fd390] Opening 'http://[anonymized] for writing" ], [ "1669583577", "[hls @ 0x7f84ae2080] Opening 'http://[anonymized] for writing" ], [ "1669583577", "[hls @ 0x7f84ae2080] Opening 'http://[anonymized] for writing" ], [ "1669583585", "[hls @ 0x7f84ae2080] Opening 'http://[anonymized] for writing" ], [ "1669583585", "[mp4 @ 0x7f849fd390] Opening 'http://[anonymized] for writing" ], [ "1669583585", "[hls @ 0x7f84ae2080] Opening 'http://[anonymized] for writing" ], [ "1669583593", "[hls @ 0x7f84ae2080] Opening 'http://[anonymized] for writing" ], [ "1669583593", "[mp4 @ 0x7f849fd390] Opening 'http://[anonymized] for writing" ], [ "1669583593", "[hls @ 0x7f84ae2080] Opening 'http://[anonymized] for writing" ], [ "1669583593", "[hls @ 0x7f84ae2080] Opening 'http://[anonymized] for writing" ], [ "1669583602", "[hls @ 0x7f84ae2080] Opening 'http://[anonymized] for writing" ], [ "1669583602", "[mp4 @ 0x7f849fd390] Opening 'http://[anonymized] for writing" ], [ "1669583602", "[hls @ 0x7f84ae2080] Opening 'http://[anonymized] for writing" ], [ "1669583610", "[hls @ 0x7f84ae2080] Opening 'http://[anonymized] for writing" ], [ "1669583610", "[mp4 @ 0x7f849fd390] Opening 'http://[anonymized] for writing" ], [ "1669583610", "[hls @ 0x7f84ae2080] Opening 'http://[anonymized] for writing" ], [ "1669583610", "[hls @ 0x7f84ae2080] Opening 'http://[anonymized] for writing" ], [ "1669583618", "[hls @ 0x7f84ae2080] Opening 'http://[anonymized] for writing" ], [ "1669583618", "[mp4 @ 0x7f849fd390] Opening 'http://[anonymized] for writing" ], [ "1669583618", "[hls @ 0x7f84ae2080] Opening 'http://[anonymized] for writing" ], [ "1669583627", "[hls @ 0x7f84ae2080] Opening 'http://[anonymized] for writing" ], [ "1669583627", "[mp4 @ 0x7f849fd390] Opening 'http://[anonymized] for writing" ], [ "1669583627", "[hls @ 0x7f84ae2080] Opening 'http://[anonymized] for writing" ], [ "1669583627", "[hls @ 0x7f84ae2080] Opening 'http://[anonymized] for writing" ], [ "1669583635", "[hls @ 0x7f84ae2080] Opening 'http://[anonymized] for writing" ], [ "1669583635", "[mp4 @ 0x7f849fd390] Opening 'http://[anonymized] for writing" ], [ "1669583635", "[hls @ 0x7f84ae2080] Opening 'http://[anonymized] for writing" ], [ "1669583643", "[hls @ 0x7f84ae2080] Opening 'http://[anonymized] for writing" ], [ "1669583643", "[mp4 @ 0x7f849fd390] Opening 'http://[anonymized] for writing" ], [ "1669583643", "[hls @ 0x7f84ae2080] Opening 'http://[anonymized] for writing" ], [ "1669583643", "[hls @ 0x7f84ae2080] Opening 'http://[anonymized] for writing" ], [ "1669583652", "[hls @ 0x7f84ae2080] Opening 'http://[anonymized] for writing" ], [ "1669583652", "[mp4 @ 0x7f849fd390] Opening 'http://[anonymized] for writing" ], [ "1669583652", "[hls @ 0x7f84ae2080] Opening 'http://[anonymized] for writing" ], [ "1669583660", "[hls @ 0x7f84ae2080] Opening 'http://[anonymized] for writing" ], [ "1669583660", "[mp4 @ 0x7f849fd390] Opening 'http://[anonymized] for writing" ], [ "1669583660", "[hls @ 0x7f84ae2080] Opening 'http://[anonymized] for writing" ], [ "1669583660", "[hls @ 0x7f84ae2080] Opening 'http://[anonymized] for writing" ], [ "1669583668", "[hls @ 0x7f84ae2080] Opening 'http://[anonymized] for writing" ], [ "1669583668", "[mp4 @ 0x7f849fd390] Opening 'http://[anonymized] for writing" ], [ "1669583668", "[hls @ 0x7f84ae2080] Opening 'http://[anonymized] for writing" ] ], "history": [] } } }
Unreal Log
LoginId:043c605c476995f7a87f48ba612715ca EpicAccountId:1a904597e05e4d8ba90c20c35f846153
Assertion failed: MP4Parser->GetNumberOfTracks() == 1 [File:D:\build++UE5\Sync\Engine\Plugins\Media\ElectraPlayer\Source\ElectraPlayerRuntime\Private\Runtime\Player\HLS\StreamReaderHLSfmp4.cpp] [Line: 862]
UnrealEditor_ElectraPlayerRuntime UnrealEditor_ElectraPlayerRuntime UnrealEditor_ElectraPlayerRuntime UnrealEditor_ElectraPlayerRuntime UnrealEditor_Core UnrealEditor_Core kernel32 ntdll
On Fri, Nov 25, 2022 at 5:04 AM Jan Stabenow @.***> wrote:
Hey @dwaynarang https://github.com/dwaynarang Can you test it again with the latest release? And if it fails, please show:
- Process report ( https://docs.datarhei.com/restreamer/knowledge-base/manual/process-report )
- Unreals error logs
— Reply to this email directly, view it on GitHub https://github.com/datarhei/restreamer/issues/439#issuecomment-1327336322, or unsubscribe https://github.com/notifications/unsubscribe-auth/AJPBJCCDQMLCQVKGKZJET5LWKCMNPANCNFSM6AAAAAARXB55ME . You are receiving this because you were mentioned.Message ID: @.***>
Thanks for the logs.
Assertion failed: MP4Parser->GetNumberOfTracks() == 1
This error suggests that the player expects only 1 track per segment, i.e. either audio or video. The segments that Restreamer generates have audio and video muxed together.
Do you have a HLS stream URL that actually works with Electra Player so we can analyze it?
I don't have a working HLS stream, but I posted asking for help in the unreal engine forum, and someone responded with a few things to try. " Add this to your ffmpeg command to set up the separate audio stream & audio group that Electra expects: -var_stream_map "a:0,agroup:audio v:0,agroup:audio" " they also posted their full ffmpeg settings, which were as follows:
ffmpeg
-i "my_input"
-c:v libx264 -crf 21 -preset veryfast
-b:v 1200k -b:a 128k
-f hls -hls_list_size 12 -hls_init_time 1 -hls_time 0.5 -g 0.5
-vf format=yuv420p
-hls_flags independent_segments+delete_segments+program_date_time
-hls_segment_type fmp4
-hls_segment_filename data-%v-%02d.m4s
-var_stream_map "a:0,agroup:audio v:0,agroup:audio"
-master_pl_name master.m3u8 out-%v.m3u8
hope this can help. thank you for all the hard work so far!
Ah, this is very helpful. It confirms that the audio and video have to be in separate segements. Maybe we can add an option in order to produce such an output.
That would be amazing!
On Mon, Jan 16, 2023 at 2:53 AM Ingo Oppermann @.***> wrote:
Ah, this is very helpful. It confirms that the audio and video have to be in separate segements. Maybe we can add an option in order to produce such an output.
— Reply to this email directly, view it on GitHub https://github.com/datarhei/restreamer/issues/439#issuecomment-1383685383, or unsubscribe https://github.com/notifications/unsubscribe-auth/AJPBJCCGFHP6M5B3IT3CSW3WSUEBJANCNFSM6AAAAAARXB55ME . You are receiving this because you were mentioned.Message ID: @.***>