excitoon/video-remove-silence

Where's the output file?

Closed this issue · 5 comments

I've run the algorithm video-remove-silence on three different video files, but nothing happens after the process ends. I can't find any output_file anywhere.

Where the output_file should be located? My folder and video remains completely unchanged after running this program.

I'm using Python 3.7, Linux Mint 19.1

The code says it should be called (original name)_result_.(original extension).

Okay, you're right, there was no output, but looking at the log is seems like this last line is supposed to be an error:

Stream map '0:v:0' matches no streams.
To ignore this, add a trailing '?' to the map.

So I made the change it suggests and sure enough, the video_result file is spit out in the same folder. Unfortunately, in that case it lacks the visual part - it's just sound.

I notice also that there's this in the log where the video get extracted:

Output #0, mp4, to '/tmp/tmpbj9nq18_':
  Metadata:
    encoder         : Lavf58.20.100
    Stream #0:0: Video: h264 (libx264) (avc1 / 0x31637661), yuv420p, 1080x1920, q=-1--1, 30 fps, 15360 tbn, 30 tbc
    Metadata:
      encoder         : Lavc58.35.100 libx264
    Side data:
      cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
frame=    0 fps=0.0 q=0.0 Lsize=       0kB time=00:00:00.00 bitrate=N/A speed=   0x    
video:0kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown

So yeah, the error is caused for good reason - ffmpeg was given a 0-second video stream. not sure why this is, but since the dev seems not to be responding, I'll tinker with it.

Okay, I messed around for hours, good thing I didn't give up!

Try removing this line from the script:

decoder.stderr.close()

which says:
decoder.stderr.close()

...which, in my case, stopped the one ffmpeg call from producing zero-length output! Now it all works fine!

Author: I'm not sure why closing standard error would close standard in as well (I'm assuming that's what's happening) but it does!

Okay, now I'm mad - turns out this fix is exactly what was in @eperez 's pull request #6 from back in May!

And I'm mostly mad at myself, because I had already tried to work around this by git-cloning eperez's fork and trying that instead. I did:
git clone https://github.com/eperez/video-remove-silence.git
But that clones the master branch, which (little did I know) has no changes from the original. Turns out the fix was in the bugfix/no-close-stderr branch:
https://github.com/eperez/video-remove-silence/tree/bugfix/no-close-stderr
...so I did not receive the fix at the time. grr!

Anyway, to be fair, the pull request did not have a corresponding issue, and also the pull request does not explain the problem (it only says "to prevent issues") so it wouldn't have caught our attention.

@excitoon , please merge #6 !

Everyone else - in the mean time use:
git clone --single-branch --branch bugfix/no-close-stderr https://github.com/eperez/video-remove-silence.git

Let me try to reproduce it