tl;dr: Well, it’s cheating because it’s not ‘rescuing’ what isn’t recorded, just retrieving and appending
Last night I played a few rounds of some cooperative gameplay with some good friends, and as usual I recorded the session for posterity.
However, when looking over the file created, neither VLC nor ffmpeg
could determine a duration. I used ffmpeg
to create a new file (ffmpeg -i old.mkv -c copy new.mkv
), and when it got to about the 1 hour 50 minute mark in the stream copy, it printed the following error:
invalid return value 0 for stream protocol
[matroska,webm @ 0x55eb60b609c0] Read error
Invalid return value 0 for stream protocol
It’s possible that I ran out of space during recording, so it behoves me to make sure my disks are more clear — hopefully the process of migrating to a combined fileserver will help there! — before I start recording.
Fortunately, I also stream to Twitch and so I could create a ‘highlight’ of the latter part of gameplay- about 45 minutes’ worth. The quality isn’t as good (max bitrate 3500kbit), but it’s better than nothing. So that it can be seamlessly appended, I decided to upscale the size from 720p to 1080p using ffmpeg
:
$ ffmpeg -i ~/downloads/211006613-69819912-48eb80ad-009f-42d5-83aa-f68dda7b7612.mp4 -vf scale=1920x1080:flags=lanczos
-c:a copy -crf 20 -preset slow ~/mounts/storage/video/2017-12-19\ 22-04-59b.mkvframe=105361 fps= 24 q=28.0 size= 2402802kB time=00:29:16.20 bitrate=11208.1kbits/s speed=0.408x
(Conversion in progress! Using -vf scale=1920x1080:flags=lanczos
to scale and -crf 20
to ensure quality stays reasonable)
After that, it should be a simple matter of using the concat
demuxer, assuming the files are similar enough (both are pixel format yuvj420p
)– I previously had issues when trying to create an auto-highlighter/clip creator that minimised re-encoding.
For posterity!
Little post-script: I have used this at least three times already; I should really get on top of disk usage.
Pingback: Invalid Security Token Issues – Bertie Baggio's Wonderland