Δημοσιεύτηκε: 22 Ιουν 2012, 11:48
Ορίστε η έξοδος:
Τι γίνεται όμως;
Με το που τρέχω το πρόγραμμα φτάνει μέχρι την γραμμή «Press ctrl-c to stop encoding».
Περιμένω κάποια δευτερόλεπτα να ολοκληρωθεί η μετατροπή και μετά εμφανίζεται όλη η υπόλοιπη έξοδος μαζεμένη.
Εικάζω ότι έχει να κάνει με την γραμμή:
Φαντάζομαι ότι η readline() περιμένει να βρει τον χαρακτήρα '\n' για να επιστρέψει τιμή.
Επειδή από κάποιο σημείο ξεκινάν τα carriage return αργεί μέχρι να βρει το επόμενο '\n', πράγμα που γίνεται αφού ολοκληρωθεί η μετατροπή.
- Κώδικας: Επιλογή όλων
ilias@ilias-pc:~/paok$ python test.py
ffmpeg version 0.8.3-4:0.8.3-0ubuntu0.12.04.1, Copyright (c) 2000-2012 the Libav developers
built on Jun 12 2012 16:52:09 with gcc 4.6.3
*** THIS PROGRAM IS DEPRECATED ***
This program is only provided for compatibility and will be removed in a future release. Please use avconv instead.
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/home/ilias/new.mp4':
Metadata:
major_brand : mp42
minor_version : 0
compatible_brands: isommp42
creation_time : 2012-05-30 14:18:13
Duration: 00:03:58.58, start: 0.000000, bitrate: 1442 kb/s
Stream #0.0(und): Video: h264 (High), yuv420p, 1280x720, 1291 kb/s, 24 fps, 24 tbr, 48 tbn, 48 tbc
Metadata:
creation_time : 1970-01-01 00:00:00
Stream #0.1(und): Audio: aac, 44100 Hz, stereo, s16, 149 kb/s
Metadata:
creation_time : 2012-05-30 14:18:14
[buffer @ 0xf7fd00] w:1280 h:720 pixfmt:yuv420p
Output #0, flv, to '/home/ilias/new.flv':
Metadata:
major_brand : mp42
minor_version : 0
compatible_brands: isommp42
creation_time : 2012-05-30 14:18:13
encoder : Lavf53.21.0
Stream #0.0(und): Video: flv, yuv420p, 1280x720, q=2-31, 200 kb/s, 1k tbn, 24 tbc
Metadata:
creation_time : 1970-01-01 00:00:00
Stream #0.1(und): Audio: adpcm_swf, 44100 Hz, stereo, s16, 352 kb/s
Metadata:
creation_time : 2012-05-30 14:18:14
Stream mapping:
Stream #0.0 -> #0.0
Stream #0.1 -> #0.1
Press ctrl-c to stop encoding
frame= 31 fps= 0 q=31.0 size= 467kB time=0.97 bitrate=3927.7kbits/s \rframe= 62 fps= 59 q=31.0 size= 1151kB time=2.46 bitrate=3831.7kbits/s \rframe= 105 fps= 68 q=31.0 size= 1498kB time=3.90 bitrate=3144.8kbits/s \rframe= 149 fps= 73 q=31.0 size= 1948kB time=5.85 bitrate=2727.7kbits/s \rframe= 183 fps= 71 q=24.8 size= 2617kB time=7.34 bitrate=2922.0kbits/s \rframe= 213 fps= 69 q=31.0 size= 2987kB time=8.78 bitrate=2788.0kbits/s \rframe= 241 fps= 67 q=31.0 size= 3266kB time=9.75 bitrate=2743.5kbits/s \rframe= 270 fps= 66 q=31.0 size= 3474kB time=10.73 bitrate=2653.0kbits/s \rframe= 298 fps= 65 q=31.0 size= 3761kB time=12.21 bitrate=2522.8kbits/s \rframe= 327 fps= 64 q=24.8 size= 3938kB time=13.19 bitrate=2445.9kbits/s \rframe= 361 fps= 64 q=31.0 size= 4129kB time=14.63 bitrate=2312.4kbits/s \rframe= 407 fps= 66 q=31.0 size= 4372kB time=16.58 bitrate=2160.5kbits/s \rframe= 449 fps= 68 q=31.0 size= 4616kB time=18.53 bitrate=2040.6kbits/s \rframe= 487 fps= 68 q=31.0 size= 4840kB time=20.02 bitrate=1980.8kbits/s \rframe= 525 fps= 69 q=31.0 size= 5069kB time=21.46 bitrate=1935.6kbits/s \rframe= 565 fps= 69 q=31.0 size= 5298kB time=23.41 bitrate=1854.4kbits/s \rframe= 609 fps= 70 q=31.0 size= 5512kB time=24.89 bitrate=1814.0kbits/s \rframe= 652 fps= 71 q=31.0 size= 5767kB time=26.84 bitrate=1760.1kbits/s \rframe= 697 fps= 72 q=31.0 size= 5986kB time=28.79 bitrate=1703.0kbits/s \rframe= 741 fps= 73 q=31.0 size= 6227kB time=30.74 bitrate=1659.3kbits/s \rframe= 784 fps= 73 q=31.0 size= 6386kB time=32.18 bitrate=1625.4kbits/s \rframe= 825 fps= 74 q=31.0 size= 6662kB time=34.13 bitrate=1599.0kbits/s \rframe= 867 fps= 74 q=31.0 size= 6890kB time=35.62 bitrate=1584.6kbits/s \rframe= 912 fps= 75 q=31.0 size= 7145kB time=37.57 bitrate=1558.0kbits/s \rframe= 956 fps= 75 q=31.0 size= 7414kB time=39.52 bitrate=1536.7kbits/s \rframe= 983 fps= 74 q=31.0 size= 8011kB time=40.50 bitrate=1620.6kbits/s
video:33693kB audio:10299kB global headers:0kB muxing overhead 0.386772%
ilias@ilias-pc:~/paok$
Τι γίνεται όμως;
Με το που τρέχω το πρόγραμμα φτάνει μέχρι την γραμμή «Press ctrl-c to stop encoding».
Περιμένω κάποια δευτερόλεπτα να ολοκληρωθεί η μετατροπή και μετά εμφανίζεται όλη η υπόλοιπη έξοδος μαζεμένη.
Εικάζω ότι έχει να κάνει με την γραμμή:
- Κώδικας: Επιλογή όλων
out = child.stderr.readline()
Φαντάζομαι ότι η readline() περιμένει να βρει τον χαρακτήρα '\n' για να επιστρέψει τιμή.
Επειδή από κάποιο σημείο ξεκινάν τα carriage return αργεί μέχρι να βρει το επόμενο '\n', πράγμα που γίνεται αφού ολοκληρωθεί η μετατροπή.