Ejemplo n.º 1
0
def testRewrapRawVideoStream():
    """
    Rewrap one raw video stream (no format).
    """
    # get src file of wrap
    inputFileName = os.environ['AVTRANSCODER_TEST_VIDEO_RAW_FILE']
    src_inputFile = av.InputFile(inputFileName)
    src_inputFile.analyse(av.NoDisplayProgress(), av.eAnalyseLevelFirstGop)
    src_properties = src_inputFile.getProperties()
    src_videoStream = src_properties.getVideoProperties()[0]

    formatList = src_properties.getFormatName().split(",")
    outputFileName = "testRewrapRawVideoStream." + formatList[0]
    ouputFile = av.OutputFile(outputFileName)

    transcoder = av.Transcoder(ouputFile)
    transcoder.addStream( av.InputStreamDesc(inputFileName) )
    processStat = transcoder.process()

    # check process stat returned
    checkVideoStat(src_videoStream, processStat.getVideoStat(0))

    # get dst file of wrap
    dst_inputFile = av.InputFile(outputFileName)
    dst_inputFile.analyse(av.NoDisplayProgress(), av.eAnalyseLevelFirstGop)
    dst_properties = dst_inputFile.getProperties()
    dst_videoStream = dst_properties.getVideoProperties()[0]

    # check format
    checkFormat(src_properties, dst_properties)

    # check video properties
    checkStream(src_videoStream, dst_videoStream)
Ejemplo n.º 2
0
def testAddImpossibleMetadata():
    """
    Can't add an impossible metadata to the outputFile.
    """
    inputFileName = os.environ['AVTRANSCODER_TEST_AUDIO_WAVE_FILE']
    outputFileName = "testAddMetadataPlop.wav"

    ouputFile = av.OutputFile(outputFileName)
    transcoder = av.Transcoder(ouputFile)

    # rewrap a stream
    transcoder.addStream(av.InputStreamDesc(inputFileName))

    # add one metadata
    metadata_to_check = ("undefinedMetadataKey", "undefinedMetadataValue")
    ouputFile.addMetadata(metadata_to_check[0], metadata_to_check[1])

    progress = av.NoDisplayProgress()
    transcoder.process(progress)

    inputFile = av.InputFile(outputFileName)
    inputFile.analyse(progress, av.eAnalyseLevelHeader)
    properties = inputFile.getProperties()

    assert_not_in(metadata_to_check, properties.getMetadatas())
Ejemplo n.º 3
0
def testRewrapAVIVideoStream():
    """
    Rewrap one video stream from avi.
    """
    # get src file of wrap
    inputFileName = os.environ['AVTRANSCODER_TEST_VIDEO_AVI_FILE']
    src_inputFile = av.InputFile( inputFileName )
    src_properties = src_inputFile.getProperties()
    src_videoStream = src_properties.getVideoProperties()[0]

    formatList = src_properties.getFormatName().split(",")
    outputFileName = "testRewrapAVIVideoStream." + formatList[0]
    ouputFile = av.OutputFile( outputFileName )

    transcoder = av.Transcoder( ouputFile )
    transcoder.add( inputFileName, 0 )
    progress = av.NoDisplayProgress()
    processStat = transcoder.process( progress )

    # check process stat returned
    checkVideoStat(src_videoStream, processStat.getVideoStat(0))

    # get dst file of wrap
    dst_inputFile = av.InputFile( outputFileName )
    dst_properties = dst_inputFile.getProperties()
    dst_videoStream = dst_properties.getVideoProperties()[0]

    # check format
    checkFormat(src_properties, dst_properties)

    # check video properties
    checkStream(src_videoStream, dst_videoStream)
Ejemplo n.º 4
0
def testRewrapAudioStream():
    """
    Rewrap one audio stream.
    """
    # get src file of wrap
    inputFileName = os.environ['AVTRANSCODER_TEST_AUDIO_WAVE_FILE']
    src_inputFile = av.InputFile( inputFileName )
    src_properties = src_inputFile.getProperties()
    src_audioStream = src_properties.getAudioProperties()[0]

    formatList = src_properties.getFormatName().split(",")
    outputFileName = "testRewrapAudioStream." + formatList[0]
    ouputFile = av.OutputFile( outputFileName )

    transcoder = av.Transcoder( ouputFile )
    transcoder.add( inputFileName, 0 )
    progress = av.NoDisplayProgress()
    processStat = transcoder.process( progress )

    # check process stat returned
    audioStat = processStat.getAudioStat(0)
    assert_equals(src_audioStream.getDuration(), audioStat.getDuration())

    # get dst file of wrap
    dst_inputFile = av.InputFile( outputFileName )
    dst_properties = dst_inputFile.getProperties()
    dst_audioStream = dst_properties.getAudioProperties()[0]

    # check format
    checkFormat(src_properties, dst_properties)

    # check audio properties
    checkStream(src_audioStream, dst_audioStream)
Ejemplo n.º 5
0
def testCheckRawVideoProperties():
    """
    Check properties of a raw video stream.
    A raw stream does not contain header (so the duration, number of frames... needs to be computed).
    """
    inputFileName = os.environ['AVTRANSCODER_TEST_VIDEO_RAW_FILE']
    inputFile = av.InputFile(inputFileName)
    properties = inputFile.getProperties()

    # Check format
    assert_true(properties.isRawFormat())
    assert_equals(properties.getNbStreams(), 1)
    assert_equals(properties.getNbVideoStreams(), 1)
    assert_equals(properties.getDuration(), 0)  # file duration is unknown
    assert_equals(properties.getBitRate(), 0)  # file bitrate is unknown
    assert_equals(properties.getFileSize(), 256293L)

    # Check video stream when analyse the header
    videoStream = properties.getVideoProperties()[0]
    assert_equals(videoStream.getFps(), 25)
    assert_equals(videoStream.getNbFrames(), 0)  # stream nbFrames is unknown
    assert_equals(videoStream.getDuration(), 0)  # stream duration is unknown
    assert_equals(videoStream.getBitRate(), 0)  # stream bitrate is unknown
    # Check video stream when analyse the first GOP
    inputFile.analyse(av.NoDisplayProgress(), av.eAnalyseLevelFirstGop)
    videoStream = properties.getVideoProperties()[0]
    assert_equals(videoStream.getNbFrames(), 200)
    assert_equals(videoStream.getDuration(), 8)
    assert_equals(videoStream.getBitRate(), 177200L)
Ejemplo n.º 6
0
def testAddPossibleMetadata():
    """
    Add metadata 'date' to the outputFile.
    """
    inputFileName = os.environ['AVTRANSCODER_TEST_AUDIO_WAVE_FILE']
    outputFileName = "testAddMetadataDate.wav"

    ouputFile = av.OutputFile(outputFileName)
    transcoder = av.Transcoder(ouputFile)

    # rewrap a stream
    transcoder.addStream(av.InputStreamDesc(inputFileName))

    # add a set of metadata
    metadata_to_check = av.PropertyVector()
    metadata_to_check.append(("date", "value"))
    ouputFile.addMetadata(metadata_to_check)

    progress = av.NoDisplayProgress()
    transcoder.process(progress)

    inputFile = av.InputFile(outputFileName)
    inputFile.analyse(progress, av.eAnalyseLevelHeader)
    properties = inputFile.getProperties()

    for metadata in metadata_to_check:
        assert_in(metadata, properties.getMetadatas())
Ejemplo n.º 7
0
def testSetVideoFrame():
    """
    Generate a video stream, and set its frame during process.
    """
    # create output
    outputFileName = "testSetVideoFrame.mov"
    ouputFile = av.OutputFile(outputFileName)

    # create custom profile
    encodingProfile = av.ProfileMap()
    encodingProfile[av.avProfileIdentificator] = "encodingProfile"
    encodingProfile[av.avProfileIdentificatorHuman] = "custom profile"
    encodingProfile[av.avProfileType] = av.avProfileTypeVideo
    encodingProfile[av.avProfileCodec] = "mpeg2video"
    encodingProfile[av.avProfilePixelFormat] = "yuv422p"
    encodingProfile[av.avProfileWidth] = "1920"
    encodingProfile[av.avProfileHeight] = "1080"

    # create transcoder and add a video stream
    transcoder = av.Transcoder(ouputFile)
    transcoder.addGenerateStream(encodingProfile)
    videoDecoder = transcoder.getStreamTranscoder(0).getCurrentDecoder()

    # start process
    ouputFile.beginWrap()
    transcoder.preProcessCodecLatency()
    p = av.ConsoleProgress()

    # process 51 frames
    nbFrames = 255
    for i in range(0, nbFrames, 5):
        transcoder.processFrame()
        p.progress(i, nbFrames)

        # set video frame
        frame = av.VideoFrame(av.VideoFrameDesc(1920, 1080, "rgb24"))
        frame.assignValue(i)
        videoDecoder.setNextFrame(frame)

    # end process
    ouputFile.endWrap()

    # get dst file of transcode
    dst_inputFile = av.InputFile(outputFileName)
    progress = av.NoDisplayProgress()
    dst_inputFile.analyse(progress, av.eAnalyseLevelHeader)
    dst_properties = dst_inputFile.getProperties()
    dst_videoStream = dst_properties.getVideoProperties()[0]

    assert_equals("mpeg2video", dst_videoStream.getCodecName())
    assert_equals(1920, dst_videoStream.getWidth())
    assert_equals(1080, dst_videoStream.getHeight())
    assert_equals(16, dst_videoStream.getDar().num)
    assert_equals(9, dst_videoStream.getDar().den)
Ejemplo n.º 8
0
def testTranscodeNoStream():
    """
    Can't process with no stream.
    """
    outputFileName = "testTranscodeNoStream.avi"

    ouputFile = av.OutputFile(outputFileName)
    transcoder = av.Transcoder(ouputFile)

    progress = av.NoDisplayProgress()
    transcoder.process(progress)
Ejemplo n.º 9
0
def testSetAudioFrame():
    """
    Generate a audio stream, and set its frame during process.
    """

    # create output
    outputFileName = "testSetAudioFrame.wav"
    ouputFile = av.OutputFile( outputFileName )

    # create video frame and codec
    inputAudioCodec = av.AudioCodec( av.eCodecTypeEncoder, "pcm_s24le" );
    audioDesc = av.AudioFrameDesc( 48000, 1, "s32" )
    inputAudioCodec.setAudioParameters( audioDesc );

    # create transcoder and add a video stream
    transcoder = av.Transcoder( ouputFile )
    transcoder.add(  "", 0, "wave24b48kmono", inputAudioCodec )
    audioDecoder = transcoder.getStreamTranscoder( 0 ).getCurrentDecoder()

    # start process
    ouputFile.beginWrap()
    transcoder.preProcessCodecLatency()
    p = av.ConsoleProgress()

    # process 51 frames
    nbFrames = 255
    for i in range(0, nbFrames):
        transcoder.processFrame()
        p.progress( i, nbFrames )

        # set video frame
        frame = av.AudioFrame( audioDesc )
        frame.assign(i)
        audioDecoder.setNextFrame( frame )

    # end process
    ouputFile.endWrap()

    # get dst file of transcode
    dst_inputFile = av.InputFile( outputFileName )
    progress = av.NoDisplayProgress()
    dst_inputFile.analyse( progress, av.eAnalyseLevelHeader )
    dst_properties = dst_inputFile.getProperties()
    dst_audioStream = dst_properties.getAudioProperties()[0]

    assert_equals( "pcm_s24le", dst_audioStream.getCodecName() )
    assert_equals( "PCM signed 24-bit little-endian", dst_audioStream.getCodecLongName() )
    assert_equals( "s32", dst_audioStream.getSampleFormatName() )
    assert_equals( "signed 32 bits", dst_audioStream.getSampleFormatLongName() )
    assert_equals( 48000, dst_audioStream.getSampleRate() )
    assert_equals( 1, dst_audioStream.getNbChannels() )
Ejemplo n.º 10
0
def testSetVideoFrame():
    """
    Generate a video stream, and set its frame during process.
    """

    # create output
    outputFileName = "testSetVideoFrame.mov"
    ouputFile = av.OutputFile( outputFileName )

    # create video frame and codec
    inputVideoCodec = av.VideoCodec( av.eCodecTypeEncoder, "mpeg2video" );
    imageDesc = av.VideoFrameDesc( 1920, 1080, "rgb24" )
    inputVideoCodec.setImageParameters( imageDesc )

    # create transcoder and add a video stream
    transcoder = av.Transcoder( ouputFile )
    transcoder.add(  "", 0, "mpeg2", inputVideoCodec )
    videoDecoder = transcoder.getStreamTranscoder( 0 ).getCurrentDecoder()

    # start process
    ouputFile.beginWrap()
    transcoder.preProcessCodecLatency()
    p = av.ConsoleProgress()

    # process 51 frames
    nbFrames = 255
    for i in range(0, nbFrames, 5):
        transcoder.processFrame()
        p.progress( i, nbFrames )

        # set video frame
        frame = av.VideoFrame( imageDesc )
        frame.assign(i)
        videoDecoder.setNextFrame( frame )

    # end process
    ouputFile.endWrap()

    # get dst file of transcode
    dst_inputFile = av.InputFile( outputFileName )
    progress = av.NoDisplayProgress()
    dst_inputFile.analyse( progress, av.eAnalyseLevelHeader )
    dst_properties = dst_inputFile.getProperties()
    dst_videoStream = dst_properties.getVideoProperties()[0]

    assert_equals( "mpeg2video", dst_videoStream.getCodecName() )
    assert_equals( "MPEG-2 video", dst_videoStream.getCodecLongName() )
    assert_equals( 1920, dst_videoStream.getWidth() )
    assert_equals( 1080, dst_videoStream.getHeight() )
    assert_equals( 16, dst_videoStream.getDar().num )
    assert_equals( 9, dst_videoStream.getDar().den )
Ejemplo n.º 11
0
def testTranscodeDummyExistingProfileWithNoEssenceDesc():
    """
    Can't add a dummy stream with no essence desc (for encoder).
    """
    outputFileName = "testTranscodeDummyExistingProfileWithNoEssenceDesc.avi"

    ouputFile = av.OutputFile(outputFileName)
    transcoder = av.Transcoder(ouputFile)

    transcoder.add("", 0, "dnxhd120")
    transcoder.add("", 0, -1, "dnxhd120")

    progress = av.NoDisplayProgress()
    transcoder.process(progress)
Ejemplo n.º 12
0
def testRewrapDummy():
    """
    Can't rewrap a dummy stream (no sense).
    """
    outputFileName = "testRewrapDummy.avi"

    ouputFile = av.OutputFile(outputFileName)
    transcoder = av.Transcoder(ouputFile)

    transcoder.add("", 0, "")
    transcoder.add("", 0, -1, "")

    progress = av.NoDisplayProgress()
    transcoder.process(progress)
Ejemplo n.º 13
0
def testTranscodeDummyNewProfileWithNoEssenceDesc():
    """
    Can't add a dummy stream with no essence desc (for encoder).
    """
    outputFileName = "testTranscodeDummyNewProfileWithNoEssenceDesc.avi"

    ouputFile = av.OutputFile(outputFileName)
    transcoder = av.Transcoder(ouputFile)

    newProfile = {
        av.avProfileIdentificator: "newAudioPreset",
        av.avProfileIdentificatorHuman: "New audio preset",
        av.avProfileType: av.avProfileTypeAudio,
    }
    transcoder.add("", 0, newProfile)
    transcoder.add("", 0, -1, newProfile)

    progress = av.NoDisplayProgress()
    transcoder.process(progress)
Ejemplo n.º 14
0
def testInputFileAnalyseFirstGop():
    """
    Analyse the first gop of an InputFile, and check if the correct attributes are filled.
    """
    inputFileName = os.environ['AVTRANSCODER_TEST_VIDEO_MOV_FILE']
    inputFile = av.InputFile(inputFileName)

    # Analyse first GOP
    progress = av.NoDisplayProgress()
    inputFile.analyse(progress, av.eAnalyseLevelFirstGop)

    # Check properties after GOP analysis
    videoProperties = inputFile.getProperties().getVideoProperties()[0]
    assert_greater(videoProperties.getGopSize(), 0)
    assert_not_equals(videoProperties.getGopStructure(), ())
    for image in videoProperties.getGopStructure():
        pictureType = image[0]
        encodedPictureSize = image[1]
        assert_in(pictureType, ['I', 'P', 'B'])
        assert_greater(encodedPictureSize, 0)
Ejemplo n.º 15
0
def testInputFileAnalyseFirstGop():
    """
    Analyse the first gop of an InputFile, and check if the correct attributes are filled.
    """
    inputFileName = os.environ['AVTRANSCODER_TEST_VIDEO_MOV_FILE']
    inputFile = av.InputFile(inputFileName)

    # The analyse of the first GOP is not done yet
    videoProperties = inputFile.getProperties().getVideoProperties()[0]
    assert_equals(videoProperties.isInterlaced(), False)
    assert_equals(videoProperties.isTopFieldFirst(), False)
    assert_equals(videoProperties.getGopStructure(), ())

    # Analyse first GOP
    progress = av.NoDisplayProgress()
    inputFile.analyse(progress, av.eAnalyseLevelFirstGop)

    # Check properties after GOP analysis
    videoProperties = inputFile.getProperties().getVideoProperties()[0]
    assert_not_equals(videoProperties.getGopStructure(), ())
Ejemplo n.º 16
0
def get_probe_on_file():
    path = request.args.get('path')

    if path == None:
        abort(400)

    level = request.args.get('level', 'fast')

    analyse_gop_state = "disabled"
    if level == 'firstGop':
        analyse_gop_state = "enabled"

    app.logger.info('Analyse path: %s - GOP analysis: %s', path,
                    analyse_gop_state)
    av.preloadCodecsAndFormats()
    inputFile = av.InputFile(str(path))
    if level == 'firstGop':
        inputFile.analyse(av.NoDisplayProgress(), av.eAnalyseLevelFirstGop)
    data = inputFile.getProperties().allPropertiesAsJson()

    response = Response(data, mimetype='application/json')
    response.headers["Access-Control-Allow-Origin"] = "*"
    return response
Ejemplo n.º 17
0
def testAddMetadataDate():
    """
    Add metadata 'date' to the outputFile.
    """
    outputFileName = "testAddMetadataDate.wav"

    ouputFile = av.OutputFile(outputFileName)
    transcoder = av.Transcoder(ouputFile)

    # rewrap a stream
    transcoder.add(os.environ['AVTRANSCODER_TEST_AUDIO_WAVE_FILE'], 0, "")

    # add one metadata
    metadata_to_check = ("date", "value")
    ouputFile.addMetadata(metadata_to_check[0], metadata_to_check[1])

    progress = av.NoDisplayProgress()
    transcoder.process(progress)

    inputFile = av.InputFile(outputFileName)
    inputFile.analyse(progress, av.eAnalyseLevelHeader)
    properties = inputFile.getProperties()

    assert_in(metadata_to_check, properties.getMetadatas())