Skip to content
New issue

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

broken pipe from ffmpeg when transcoding #129

Open
jcaesar opened this issue Sep 9, 2023 · 3 comments
Open

broken pipe from ffmpeg when transcoding #129

jcaesar opened this issue Sep 9, 2023 · 3 comments

Comments

@jcaesar
Copy link

jcaesar commented Sep 9, 2023

I'm running with -forceTranscodeTo web and the log is just full of

Sep 09 21:22:11 pride dms[66328]: 2023-09-09T21:22:11+0900 NIL [github.com/anacrolix/dms/dlna/dms.(*Server).serveDLNATranscode:459]: logging transcode to "/home/julius/.dms/log/web/foobar.mkv"
Sep 09 21:22:11 pride dms[66328]: 2023-09-09T21:22:11+0900 NIL [github.com/anacrolix/dms/transcode.transcodePipe:22]: transcode command: [ffmpeg -ss 0:00:00 -i /blub/foobar.mkv -pix_fmt yuv420p -c:v libx264 -crf 25 -c:a mp3 -ab 128k -ar 44100 -preset ultrafast -movflags +faststart+frag_keyframe+empty_moov -f mp4 pipe:]
Sep 09 21:22:11 pride dms[66328]: 2023-09-09T21:22:11+0900 NIL [github.com/anacrolix/dms/transcode.transcodePipe.func1:36]: command [ffmpeg -ss 0:00:00 -i /blub/foobar.mkv -pix_fmt yuv420p -c:v libx264 -crf 25 -c:a mp3 -ab 128k -ar 44100 -preset ultrafast -movflags +faststart+frag_keyframe+empty_moov -f mp4 pipe:] failed: exit status 224

The ffmpeg tail shows

frame=    0 fps=0.0 q=0.0 size=       2kB time=00:00:00.62 bitrate=  26.6kbits/s speed=16.5x    ^Mframe=   83 fps=0.0 q=17.0 size=       2kB time=00:00:05.14 bitrate=   3.3kbits/s speed= 9.5x    ^Mframe=  184 fps=176 q=20.0 size=       2kB time=00:00:09.48 bitrate=   1.8kbits/s speed=9.07x    ^Mav_interleaved_write_frame(): Broken pipe
[out#0/mp4 @ 0x5581efd1ed80] Error muxing a packet
[out#0/mp4 @ 0x5581efd1ed80] Error writing trailer: Broken pipe
frame=  251 fps=171 q=-1.0 Lsize=       2kB time=00:00:12.43 bitrate=   1.3kbits/s speed=8.49x
video:2310kB audio:190kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
[libx264 @ 0x5581efe40540] frame I:2     Avg QP:18.50  size: 56818
[libx264 @ 0x5581efe40540] frame P:276   Avg QP:19.63  size:  8692
[libx264 @ 0x5581efe40540] mb I  I16..4: 100.0%  0.0%  0.0%
[libx264 @ 0x5581efe40540] mb P  I16..4: 13.7%  0.0%  0.0%  P16..4: 24.9%  0.0%  0.0%  0.0%  0.0%    skip:61.4%
[libx264 @ 0x5581efe40540] coded y,uvDC,uvAC intra: 4.3% 8.2% 1.3% inter: 3.1% 24.4% 0.4%
[libx264 @ 0x5581efe40540] i16 v,h,dc,p: 93%  4%  2%  1%
[libx264 @ 0x5581efe40540] i8c dc,h,v,p: 83%  8%  9%  1%
[libx264 @ 0x5581efe40540] kb/s:1735.42
Conversion failed!
5f203178540] i8c dc,h,v,p: 83%  8%  9%  1%
[libx264 @ 0x55f203178540] kb/s:1735.42
Conversion failed!

This would indicate to me that dms isn't reading the data - how would I debug this?

[Edit:]
This seems to only happen when trying to play files from my Panasonic TV. Hmm.

@anacrolix
Copy link
Owner

This error should occur when the device you're streaming abruptly rejects the stream. Most likely the format that ffmpeg is sending is not what the TV is expecting, or is not supported by the TV. Perhaps web is the wrong transcode target for your TV.

@jcaesar
Copy link
Author

jcaesar commented Sep 12, 2023

That was my first hypothesis, but I finally got some time to look around:

  1. The error is output once per second many times over, seemingly indefinitely, while the TV displays a spinner.
  2. This behavior only happens with webb and chromecast. With vp8, the TV immediately displays a "Unplayable file" message
  3. I confirmed that I can stream files with dms (without -forceTranscode) that can also be streamed from other servers (minidlna/rygel)
  4. I created a foo.dms.json containing {"Title":"Foo","Resources":[{"MimeType":"video/x-matroska","Command":"cat file-that-plays-without-transcoding.mkv"}]} and confirmed that it doesn't play (I get the same failed: signal: broken pipe but no spinner from the TV, just an immediate exit from the playback menu.
  5. Looking at -logHeaders, it seems there are two subsequent requests, the second containing Range: bytes=7075-.

Could the range request pose a problem? [Edit:] Looking at the response, there's no Content-Range, so I'll make that my prime suspect.

@anacrolix
Copy link
Owner

Hm yes, I don't remember the specifics (I started this project nearly 12 years ago), but I doubt range requests are supported for on-the-fly transcodes if that is what it is doing. Range requests should work fine for static files.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants