datarhei / restreamer

The Restreamer is a complete streaming server solution for self-hosting. It has a visually appealing user interface and no ongoing license costs. Upload your live stream to YouTube, Twitch, Facebook, Vimeo, or other streaming solutions like Wowza. Receive video data from OBS and publish it with the RTMP and SRT server.
https://docs.datarhei.com/restreamer/
Apache License 2.0
3.78k stars 438 forks source link

Unreal Engine Electra Player Audio Bug #439

Open dwaynarang opened 1 year ago

dwaynarang commented 1 year ago

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):

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.

jstabenow commented 1 year ago

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.

ioppermann commented 1 year ago

@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.

dwaynarang commented 1 year ago

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?

ioppermann commented 1 year ago

You can get the latest version with pull datarhei/restreamer:rpi-latest. Then you have to restart the currently running container.

dwaynarang commented 1 year ago

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. :(

jstabenow commented 1 year ago

Hey @dwaynarang Can you test it again with the latest release? And if it fails, please show:

dwaynarang commented 1 year ago

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": "output0", "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_ondelete": true }, { "pattern": "memfs:/ad5946cb-17b8-4612-a0d6-8841d1a5b23d{outputid}.m3u8", "max_files": 0, "max_file_age_seconds": 24, "purge_ondelete": 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:

— 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: @.***>

ioppermann commented 1 year ago

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?

dwaynarang commented 1 year ago

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!

ioppermann commented 1 year ago

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.

dwaynarang commented 1 year ago

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: @.***>