Recherche avancée

Médias (91)

Autres articles (112)

Sur d’autres sites (11316)

  • using clang compile ffmpeg with too much warning on osx

    12 juin 2014, par arachide

    I use clang to compile ffmpeg, It reports too much warn

    ./libavutil/arm/intmath.h:102:40: warning: value size does not match register size specified by the constraint and modifier
         [-Wasm-operand-widths]
    ./libavutil/arm/intmath.h:102:40: warning: value size does not match register size specified by the constraint and modifier
         [-Wasm-operand-widths]

    and finally stop with error

    libavcodec/arm/mlpdsp_armv5te.S:5180:9: error: unknown directive
           .hword (75f - 0b) / 2
           ^
    libavcodec/arm/mlpdsp_armv5te.S:5182:9: error: unknown directive
           .hword (76f - 0b) / 2
           ^
    libavcodec/arm/mlpdsp_armv5te.S:5184:9: error: unknown directive
           .hword (77f - 0b) / 2
           ^
    libavcodec/arm/mlpdsp_armv5te.S:5186:9: error: unknown directive
           .hword (78f - 0b) / 2
           ^
    libavcodec/arm/mlpdsp_armv5te.S:5648:9: error: unknown directive

    Is there anyone met the same problem ?

  • Fast green screen video processing on android device

    17 mars 2015, par Si-N

    I have written an app in iOS that takes two video sources, one with moving character on a green screen and any other video. The program then uses the GPUImage framework to add a chroma key shader via OpenGL ES 2 and then merges each frame (so the bottom frame now shows where the green pixels are) and outputs to a new video file. This happens very quickly, faster than real time.

    I have now been tasked with porting the app to Android. I thought it would be fairly straightforward. After doing some research I think I am wrong. There is an Android port of GPUImage but it does not handle video at the moment. I have done some research and come up with a very basic idea.

    I was wondering if you think this approach is feasible :

    Convert one video file to match resolution and type of other video using ffmpeg or JavaCV wrappers.

    Read frame by frame of each video using ffmpeg as MediaMetadataRetriever is very slow and convert into some RGB format. Use shader to apply chroma key effect so both frames are merged.

    Use ffmpeg to output result to a new file.

    This sounds slow, but if it sounds feasible I will try it out. I am not at all sure about making sure the 2 video resolutions / bitrate etc match. One video will be fixed at 1280 * 720 and the other video source will come from the camera on the device so will be variable. Also I think ffmpeg means using NDK which is a whole world of pain I wanted to avoid.

    I have a headache thinking about it. Any advice would be greatly appreciated.

  • ffmpeg crop detect python using subprocess

    12 mai 2015, par JRM

    I want to use python subprocess to call ffmpeg and use crop detect to find all black in a video. The crop detect return I want to put into a string variable and put in a database. At the moment I can get the process running in terminal and but I am unsure about how to grab the specific part of the terminal (stdout) output :

    the script :

    def cropDetect():
       p = subprocess.Popen(["ffmpeg", "-i", "/Desktop/ffprobe_instance/Crop_detect/video_file.mpg", "-vf", "cropdetect=24:16:0", "-vframes", "10", "dummy.mp4"], stdout=subprocess.PIPE)
       result = p.communicate()[0]
       print result


    # SCRIPT
    cropDetect()

    Result in terminal :
    [Parsed_cropdetect_0 @ 0x7fa1d840cb80] x1:719 x2:0 y1:575 y2:0 w :-704 h :-560 x:714 y:570 pos:432142 pts:44102 t:0.490022 crop=-704 :-560:714:570

    How do I take "crop=-704 :-560:714:570" and put it into a variable that I can store in a database ?

    As per update :

    def cropDetect1():
       p = subprocess.check_output(["ffmpeg", "-i", "/Desktop/ffprobe_instance/Crop_detect/video_file.mpg", "-vf", "cropdetect=24:16:0", "-vframes", "10", "dummy.mp4"])
       match = re.search("crop\S+", p)
       crop_result = None
       if match is not None:
           crop_result = match.group()
           print "hello %s" % crop_result

    I can’t seem to print out the "crop_result" - I am presuming that means that the variable is empty ?

    UPDATE : Found it :

    def detectCropFile(localPath):
       fpath = "/xxx/xx/Desktop/Crop_detect/videos/USUV.mp4"
       print "File to detect crop: %s " % fpath
       p = subprocess.Popen(["ffmpeg", "-i", fpath, "-vf", "cropdetect=24:16:0", "-vframes", "500", "-f", "rawvideo", "-y", "/dev/null"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
       infos = p.stderr.read()
       print infos
       allCrops = re.findall(CROP_DETECT_LINE + ".*", infos)
       print allCrops
       mostCommonCrop = Counter(allCrops).most_common(1)
       print "most common crop: %s" % mostCommonCrop
       print mostCommonCrop[0][0]
       global crop
       crop = mostCommonCrop[0][0]
       video_rename()

    Use : p = subprocess.Popen(["ffmpeg", "-i", fpath, "-vf", "cropdetect=24:16:0", "-vframes", "500", "-f", "rawvideo", "-y", "/dev/null"], stdout=subprocess.PIPE, stderr=subprocess.PIPE) to pipe it out