1

ウェブカメラの MJPEG ストリームから有効な JPEG フレームを取得しようとしています。ディスクへの書き込みに成功し、Infranview などのプログラムで開くことができますが、Python やその他のグラフィック プログラムでは有効な JPEG ファイルとして認識されません。私はそれをスナーフしてディスクに書き込むこの関数を書きました

def pull_frame(image_url,filename):
    flag = 0
    # open the url of the webcam stream
    try:
            f = urllib.urlopen(image_url)
    except IOError:
            print "uh oh"
    else:
            # kill first two lines
            try:
                    null = f.readline()
            except:
                    print "duh"
            null = f.readline()
            pop = f.readline()
            # this pulls the length of the content
            count = pop[16:] # length of content.
            print "Size Of Image:" + count
            # read just the amount of the length of content
            if int(count):
                    s = f.read(int(count))
                    flag = 1
                    # write it to a file name
                    p = file(filename,'wb')
                    p.write(s)
                    p.close()

だから私は壊れたJPEGを取得しており、FFMPEGを使用して壊れたjpegから有効なPNGを作成しようとすることで、ハムフィストの回避策を試しましたが、サブプロセスではなくコマンドラインから機能しました。適切な jpeg ヘッダーを使用して mjpeg ストリームからこの jpeg を取得する方法は Python にありますか?

これは、このルーチンから保存されたデータの例である camera1.jpg へのリンクです。これは、認識されず、サムネイルもありません (ただし、infraview は jpg として開くことができます) http://www.2shared.com/photo/ OfZh2XeD/camera1.html

4

0 に答える 0