-
-
Notifications
You must be signed in to change notification settings - Fork 1.5k
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
Verify video validity after transcoding #3407
Comments
Hello, Do you have errors in your logs related to this video/resolution? |
Unfortunately I couldn't find anything. The transcoding job reported no errors and I couldn't find anything somewhere else either. |
Do you think your issue is related to #3596? |
I don't thinks so. The issue with #3596 lead to audio only was played during the whole video. But in this issue the video just crashed at a certain minute. |
aaedadd should fix this issue |
We've found three corrupt videos the last week, so I'd say this would be a really helpful feature. |
Same AAC issue? If yes, where do these videos come from? PeerTube lives? External tools? |
Yes, same AAC issue. At least two of them are recorded with OBS and uploaded at the site. |
I've a branch where I'm working on this. To begin with I'm doing the validation in a job that's created when all transcoding is done, just to keep the logic simple. The drawback is that it will not be able to parallelize the transcoding and validation, which I guess we want? If we run them in parallel; should the validation be a part of the |
I tried with a solution where I created a @Chocobozzz Maybe it's better to just to the validation within the TO_TRANSCODE state? From a conceptual perspective it's a part of the transcoding, and a user may not care whether it's transcoding or validating that the transcoding went well. |
Sorry for the late answer. I don't have a lot of time to check the best way to implement this issue, but I think we could run the verify function just after transcoding, to ensure the file is okay. If the verification succeed, then we can move the transcoded file to the videos directory and replace the file in the database |
After updating ffmpeg to version 5.0 we've had a lot of issues where all resolutions are crashing at the same timestamp. Output of
The original files are big (6-9 gb) and I'm wondering if it may be something during the upload that makes the files corrupt. kukhariev/node-uploadx#518 |
You can try to check your assumption by validating the input file |
It seems that it's related to |
Closing this issue now the root cause has been fixed. See also #4867 (comment) |
FYI we've had this problem six times the last month. Same error as described here #3407 (comment) Hopefully the latest node-uploadx will solve it once and for all. |
We're running a fork with #4867 and we still get some validation errors. Mostly "Missing lock ...", hopefully they will be fixed when switching to bullmq, but also some failed jobs having a lot of |
We're still having the |
FYI, same problem appears in PeerTube 5.1.0. |
Describe the problem to be solved
We've imported a YouTube video to PeerTube HLS. It appeared that the PeerTube video where corrupt at a specific format (720p), which meant that the video crashed at a certain minute during a specific resolution. I downloaded the file and rand the following command.
I've tested the 240p version of the video, and it works fine. After doing a new import it works fine.
Describe the solution you would like:
Since data corruption always is a risk when working with data, I guess we should find a way to detect corruptions to avoid a bad user experience. I'd propose a solution where an admin can opt in for validation. When validation is enabled the user have three choices:
A) Don't publish a video before validation for all resolutions has succeeded.
B) Publish the video and all resolutions that didn't fail. If a specific resolution fails, then let the user to replace the file.
C) Run validation after publish and just send a notification the user.
Describe alternatives you have considered
I think the easiest way forward would be to create a plugin that listens for video creations. Upon every creation the file is validated by running ffmpeg. If they fails a notification is sent to the user.
The text was updated successfully, but these errors were encountered: