telegramdesktop / tdesktop

Telegram Desktop messaging app
https://desktop.telegram.org/
Other
26.16k stars 5.19k forks source link

mp4 files with large headers dont stream #24819

Open dalekot opened 2 years ago

dalekot commented 2 years ago

Steps to reproduce

Try to play back a mp4 file with a large header (>8mb it seems) and it won't stream.

For example https://t.me/moov_test has two files containing the same video. They are encoded the same except gop size was changed to get a moov atom of different size. One streams and one will buffer for a couple seconds and change to where you are forced to download it completely before you can play it back. This affects lots of long videos since the header grows along with the video, and theres no real workaround other than being forced to completely reencode with special settings to try and make the header small enough so telegram streams it.

AtomicParsley output for streamable file ``` Atom ftyp @ 0 of size: 32, ends @ 32 Atom moov @ 32 of size: 5128999, ends @ 5129031 Atom mvhd @ 40 of size: 108, ends @ 148 Atom trak @ 148 of size: 3259056, ends @ 3259204 Atom tkhd @ 156 of size: 92, ends @ 248 Atom edts @ 248 of size: 48, ends @ 296 Atom elst @ 256 of size: 40, ends @ 296 Atom mdia @ 296 of size: 3258908, ends @ 3259204 Atom mdhd @ 304 of size: 32, ends @ 336 Atom hdlr @ 336 of size: 45, ends @ 381 Atom minf @ 381 of size: 3258823, ends @ 3259204 Atom vmhd @ 389 of size: 20, ends @ 409 Atom dinf @ 409 of size: 36, ends @ 445 Atom dref @ 417 of size: 28, ends @ 445 Atom stbl @ 445 of size: 3258759, ends @ 3259204 Atom stsd @ 453 of size: 195, ends @ 648 Atom avc1 @ 469 of size: 179, ends @ 648 Atom avcC @ 555 of size: 57, ends @ 612 Atom pasp @ 612 of size: 16, ends @ 628 ~ Atom stts @ 648 of size: 24, ends @ 672 Atom ctts @ 672 of size: 2159584, ends @ 2160256 Atom stss @ 2160256 of size: 232, ends @ 2160488 Atom stsc @ 2160488 of size: 10024, ends @ 2170512 Atom stsz @ 2170512 of size: 1080020, ends @ 3250532 Atom stco @ 3250532 of size: 8672, ends @ 3259204 Atom trak @ 3259204 of size: 1869729, ends @ 5128933 Atom tkhd @ 3259212 of size: 92, ends @ 3259304 Atom edts @ 3259304 of size: 36, ends @ 3259340 Atom elst @ 3259312 of size: 28, ends @ 3259340 Atom mdia @ 3259340 of size: 1869593, ends @ 5128933 Atom mdhd @ 3259348 of size: 32, ends @ 3259380 Atom hdlr @ 3259380 of size: 45, ends @ 3259425 Atom minf @ 3259425 of size: 1869508, ends @ 5128933 Atom smhd @ 3259433 of size: 16, ends @ 3259449 Atom dinf @ 3259449 of size: 36, ends @ 3259485 Atom dref @ 3259457 of size: 28, ends @ 3259485 Atom stbl @ 3259485 of size: 1869448, ends @ 5128933 Atom stsd @ 3259493 of size: 114, ends @ 3259607 Atom mp4a @ 3259509 of size: 98, ends @ 3259607 Atom esds @ 3259545 of size: 42, ends @ 3259587 Atom btrt @ 3259587 of size: 20, ends @ 3259607 ~ Atom stts @ 3259607 of size: 64, ends @ 3259671 Atom stsc @ 3259671 of size: 40, ends @ 3259711 Atom stsz @ 3259711 of size: 1860496, ends @ 5120207 Atom stco @ 5120207 of size: 8672, ends @ 5128879 Atom sgpd @ 5128879 of size: 26, ends @ 5128905 ~ Atom sbgp @ 5128905 of size: 28, ends @ 5128933 Atom udta @ 5128933 of size: 98, ends @ 5129031 Atom meta @ 5128941 of size: 90, ends @ 5129031 Atom hdlr @ 5128953 of size: 33, ends @ 5128986 Atom ilst @ 5128986 of size: 45, ends @ 5129031 Atom ©too @ 5128994 of size: 37, ends @ 5129031 Atom data @ 5129002 of size: 29, ends @ 5129031 Atom mdat @ 5129031 of size: 249986374, ends @ 255115405 Atom free @ 255115405 of size: 8, ends @ 255115413 Atom free @ 255115413 of size: 73, ends @ 255115486 ```
AtomicParsley output for non-streamable file ``` Atom ftyp @ 0 of size: 32, ends @ 32 Atom moov @ 32 of size: 8951143, ends @ 8951175 Atom mvhd @ 40 of size: 108, ends @ 148 Atom trak @ 148 of size: 4212664, ends @ 4212812 Atom tkhd @ 156 of size: 92, ends @ 248 Atom edts @ 248 of size: 48, ends @ 296 Atom elst @ 256 of size: 40, ends @ 296 Atom mdia @ 296 of size: 4212516, ends @ 4212812 Atom mdhd @ 304 of size: 32, ends @ 336 Atom hdlr @ 336 of size: 45, ends @ 381 Atom minf @ 381 of size: 4212431, ends @ 4212812 Atom vmhd @ 389 of size: 20, ends @ 409 Atom dinf @ 409 of size: 36, ends @ 445 Atom dref @ 417 of size: 28, ends @ 445 Atom stbl @ 445 of size: 4212367, ends @ 4212812 Atom stsd @ 453 of size: 195, ends @ 648 Atom avc1 @ 469 of size: 179, ends @ 648 Atom avcC @ 555 of size: 57, ends @ 612 Atom pasp @ 612 of size: 16, ends @ 628 ~ Atom stts @ 648 of size: 24, ends @ 672 Atom stss @ 672 of size: 108020, ends @ 108692 Atom ctts @ 108692 of size: 1944032, ends @ 2052724 Atom stsc @ 2052724 of size: 40, ends @ 2052764 Atom stsz @ 2052764 of size: 1080028, ends @ 3132792 Atom stco @ 3132792 of size: 1080020, ends @ 4212812 Atom trak @ 4212812 of size: 4738265, ends @ 8951077 Atom tkhd @ 4212820 of size: 92, ends @ 4212912 Atom edts @ 4212912 of size: 36, ends @ 4212948 Atom elst @ 4212920 of size: 28, ends @ 4212948 Atom mdia @ 4212948 of size: 4738129, ends @ 8951077 Atom mdhd @ 4212956 of size: 32, ends @ 4212988 Atom hdlr @ 4212988 of size: 45, ends @ 4213033 Atom minf @ 4213033 of size: 4738044, ends @ 8951077 Atom smhd @ 4213041 of size: 16, ends @ 4213057 Atom dinf @ 4213057 of size: 36, ends @ 4213093 Atom dref @ 4213065 of size: 28, ends @ 4213093 Atom stbl @ 4213093 of size: 4737984, ends @ 8951077 Atom stsd @ 4213101 of size: 126, ends @ 4213227 Atom mp4a @ 4213117 of size: 110, ends @ 4213227 Atom esds @ 4213153 of size: 54, ends @ 4213207 Atom btrt @ 4213207 of size: 20, ends @ 4213227 ~ Atom stts @ 4213227 of size: 64, ends @ 4213291 Atom stsc @ 4213291 of size: 1797220, ends @ 6010511 Atom stsz @ 6010511 of size: 1860492, ends @ 7871003 Atom stco @ 7871003 of size: 1080020, ends @ 8951023 Atom sgpd @ 8951023 of size: 26, ends @ 8951049 ~ Atom sbgp @ 8951049 of size: 28, ends @ 8951077 Atom udta @ 8951077 of size: 98, ends @ 8951175 Atom meta @ 8951085 of size: 90, ends @ 8951175 Atom hdlr @ 8951097 of size: 33, ends @ 8951130 Atom ilst @ 8951130 of size: 45, ends @ 8951175 Atom ©too @ 8951138 of size: 37, ends @ 8951175 Atom data @ 8951146 of size: 29, ends @ 8951175 Atom free @ 8951175 of size: 8, ends @ 8951183 Atom mdat @ 8951183 of size: 578061859, ends @ 587013042 ```

Expected behaviour

Both files should stream in telegram without having to be downloaded first

Actual behaviour

The file with a large header doesnt stream

Operating system

windows 10 pro 20h2

Version of Telegram Desktop

4.0.2

Installation source

Static binary from official website

Logs

No response

github-actions[bot] commented 1 year ago

Hey there!

This issue was inactive for a long time and will be automatically closed in 30 days if there isn't any further activity. We therefore assume that the user has lost interest or resolved the problem on their own.

Don't worry though; if this is an error, let us know with a comment and we'll be happy to reopen the issue.

Thanks!

soredake commented 1 year ago

Still a problem.

soredake commented 1 year ago

For some reason 64gram does not have this problem.

github-actions[bot] commented 1 year ago

Hey there!

This issue was inactive for a long time and will be automatically closed in 30 days if there isn't any further activity. We therefore assume that the user has lost interest or resolved the problem on their own.

Don't worry though; if this is an error, let us know with a comment and we'll be happy to reopen the issue.

Thanks!

soredake commented 1 year ago

Not stale.

github-actions[bot] commented 6 months ago

Hey there!

This issue was inactive for a long time and will be automatically closed in 30 days if there isn't any further activity. We therefore assume that the user has lost interest or resolved the problem on their own.

Don't worry though; if this is an error, let us know with a comment and we'll be happy to reopen the issue.

Thanks!

soredake commented 6 months ago

Nothing changed.

github-actions[bot] commented 1 week ago

Hey there!

This issue was inactive for a long time and will be automatically closed in 30 days if there isn't any further activity. We therefore assume that the user has lost interest or resolved the problem on their own.

Don't worry though; if this is an error, let us know with a comment and we'll be happy to reopen the issue.

Thanks!