Hi
sorry for the relative off-topic intrusion but I'm desperately looking for info and potentially help with this problem I have for months when trying to produce WHIP from FFMPEG on Windows with NVenc or x264.
As you all know WHIP support in FFmpeg is very recent and especially for Windows builds.
I got in touch with Gyan and BtbN by the end of 2025 to ask about whip support and I was told it was complicated because of issues with OpenSSL / TLS.
Someone on Github told me about Zhongfly on Github who has a windows build with whip support and I could find a binary that worked for WHIP by the end of 2025 :
https://github.com/zhongfly/mpv-winbuild
I used it for a while to start experimenting and write a few WHIP producer scripts for NVenc and x264.
Tested with BroadcastBox, but also my own servers, Mist, MediaMTX and Go2RTC which I have on my LAN.
Then after an update it stopped working and it took me a while to figure it out that it wasn't my fault... But Xmas break came and at that time I decided to focus on working on Linux Debian 13 with BtbN ffmpeg builds for arm64 on my raspberry pis and I managed to produce the scripts I needed on libx264 obviously.
Then Gyan announced he finally released a windows build with WHIP support (2026/01/29) so I went back to Windows, expecting I would be able to convert on windows everything I could do on Linux... But no... and I have been scratching my head since, hence I'm here today...
To sum up for WHIP on windows
- I can use OBS (either with NVenc, QSV or x264 encoders) to push WHIP to all WebRTC ingest points I know ( BroadcastBox, Meshcast.io v2, and my own servers MediaMTX, Go2RTC and even Mist Server)
- when it comes to FFMPEG, all I managed to do lately was push WHIP with your example testsrc script to the same endpoints (except Mist - their WHIP implementation is not great yet, they're still working on it)
Here's the script that I got to work with both Gyan and Zhongfly builds (BtbN builds always result in DTLS errors when trying WHIP)
ffmpeg -hide_banner -re ^
-f lavfi -i testsrc=size=1920x1080 ^
-f lavfi -i sine=frequency=1000 ^
-vcodec libx264 -profile:v high -r 25 -g 50 -bf 0 -pix_fmt yuv420p ^
-acodec libopus -ar 48000 -ac 2 -ab 128k ^
-f whip -authorization "myToken" "https://b.siobud.com/api/whip"
Compared to your example, I only added -bf 0 in order to use higher profiles than just baseline. This works. But it's not enough !
However as soon as I try to use a file as input or a dshow device (as I do on Linux with V4L2) nothing works. After a few frames encoded I always get :
[WHIP muxer @ 0000020e661de5c0] Failed to write packet=1310B, ret=-11d=0.802x elapsed=0:00:03.60
[WHIP muxer @ 0000020e661de5c0] UDP send blocked, please increase the buffer via -ts_buffer_size
[vost#0:0/libx264 @ 0000020e66760c80] Error submitting a packet to the muxer: Resource temporarily unavailable
Last message repeated 1 times
[out#0/whip @ 0000020e661e5400] Error muxing a packet
[out#0/whip @ 0000020e661e5400] Task finished with error code: -11 (Resource temporarily unavailable)
[out#0/whip @ 0000020e661e5400] Terminating thread with return code -11 (Resource temporarily unavailable)
Obviously I tried to set
-pkt_size to smaller or higher values (default being 1200 for WHIP I believe)
-ts_buffer_size to smaller or higher values or using -1 for auto
No effect. After 10 or 20 frames, the error occurs and encoding stops. No matter what I do.
I have also tried optimized settings for NVenc and a lot of potential arguments, nothing seems to work and I always end up with the same error message.
On Linux, as long as I use -bf 0, I can use pretty much anything I want and it works with test sources, files, live capture, screen capture... Anything... As well as arguments... Complex or basic, it works...
On Windows, except with OBS, I can only push a test source with a 1kHz tone signal which is pretty useless and extremely frustrating !
So again, sorry for sharing my issues here but I'm desperate, fed up and resourceless. I'd like to understand if I'm dumber than dumb and doing something wrong or if there is really a problem for WHIP encoding with FFMPEG on Windows in which case I'd also like to know where to report so it gets fixed...
Any tips, help, anything much appreciated... If more people could reproduce and confirm the same issues, it would be great too...
TIA
Hi
sorry for the relative off-topic intrusion but I'm desperately looking for info and potentially help with this problem I have for months when trying to produce WHIP from FFMPEG on Windows with NVenc or x264.
As you all know WHIP support in FFmpeg is very recent and especially for Windows builds.
I got in touch with Gyan and BtbN by the end of 2025 to ask about whip support and I was told it was complicated because of issues with OpenSSL / TLS.
Someone on Github told me about Zhongfly on Github who has a windows build with whip support and I could find a binary that worked for WHIP by the end of 2025 :
https://github.com/zhongfly/mpv-winbuild
I used it for a while to start experimenting and write a few WHIP producer scripts for NVenc and x264.
Tested with BroadcastBox, but also my own servers, Mist, MediaMTX and Go2RTC which I have on my LAN.
Then after an update it stopped working and it took me a while to figure it out that it wasn't my fault... But Xmas break came and at that time I decided to focus on working on Linux Debian 13 with BtbN ffmpeg builds for arm64 on my raspberry pis and I managed to produce the scripts I needed on libx264 obviously.
Then Gyan announced he finally released a windows build with WHIP support (2026/01/29) so I went back to Windows, expecting I would be able to convert on windows everything I could do on Linux... But no... and I have been scratching my head since, hence I'm here today...
To sum up for WHIP on windows
Here's the script that I got to work with both Gyan and Zhongfly builds (BtbN builds always result in DTLS errors when trying WHIP)
Compared to your example, I only added -bf 0 in order to use higher profiles than just baseline. This works. But it's not enough !
However as soon as I try to use a file as input or a dshow device (as I do on Linux with V4L2) nothing works. After a few frames encoded I always get :
Obviously I tried to set
-pkt_size to smaller or higher values (default being 1200 for WHIP I believe)
-ts_buffer_size to smaller or higher values or using -1 for auto
No effect. After 10 or 20 frames, the error occurs and encoding stops. No matter what I do.
I have also tried optimized settings for NVenc and a lot of potential arguments, nothing seems to work and I always end up with the same error message.
On Linux, as long as I use -bf 0, I can use pretty much anything I want and it works with test sources, files, live capture, screen capture... Anything... As well as arguments... Complex or basic, it works...
On Windows, except with OBS, I can only push a test source with a 1kHz tone signal which is pretty useless and extremely frustrating !
So again, sorry for sharing my issues here but I'm desperate, fed up and resourceless. I'd like to understand if I'm dumber than dumb and doing something wrong or if there is really a problem for WHIP encoding with FFMPEG on Windows in which case I'd also like to know where to report so it gets fixed...
Any tips, help, anything much appreciated... If more people could reproduce and confirm the same issues, it would be great too...
TIA