Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python文件中的FFmpeg已存在错误_Python_Django_Python 3.x_Ffmpeg_Ffmpy - Fatal编程技术网

Python文件中的FFmpeg已存在错误

Python文件中的FFmpeg已存在错误,python,django,python-3.x,ffmpeg,ffmpy,Python,Django,Python 3.x,Ffmpeg,Ffmpy,我正在做一个使用python(3.6)和Django(2.0)的项目,在这个项目中,我正在将一个视频转换为mp4,如果它是其他格式的 这是我的密码: 来自视图。py: def generate_thumbnail(filename, thumb_name): print('func called') print(filename) video_input_path = os.path.join(filename) img_output_path = os.path

我正在做一个使用python(3.6)和Django(2.0)的项目,在这个项目中,我正在将一个视频转换为mp4,如果它是其他格式的

这是我的密码:

来自视图。py:

def generate_thumbnail(filename, thumb_name):
    print('func called')
    print(filename)
    video_input_path = os.path.join(filename)
    img_output_path = os.path.join(thumb_name)
    subprocess.call(['ffmpeg', '-i', video_input_path, '-ss', '00:00:00.000', 'vframes', '1', img_output_path])


def convert_to_mp4(video_name, only_name):
    os.popen(
        "ffmpeg -i '{input}' -ac 2 -b:v 2000k -c:a aac -c:v libx264 -b:a 160k -vprofile high -bf 0 -strict experimental -f mp4 '{output}.mp4'".format(
            input=video_name, output=only_name))
    return True


def perform_upload(video, thumbnail):
    print('vdieo name is: {}'.format(video))
    servise = discovery.build('storage', 'v1', credentials=credentials)
    bucket_name = 'test_bucket004'
    print('Uploading the video...')
    media = MediaFileUpload(video, chunksize=4149304, mimetype='video/mp4',
                            resumable=True)
    req = servise.objects().insert(
        bucket=bucket_name,
        name=str(video),
        media_body=media,
        body={"cacheControl": "public,max-age=31536000"},
        predefinedAcl='publicRead'
    )
    resp = None
    while resp is None:
        status, resp = req.next_chunk()
    print(resp)
    video_url = 'http://storage.googleapis.com/' + bucket_name + '/' + str(video)

    print('Uploading your thumbnail...')
    media = MediaFileUpload(thumbnail, chunksize=4149304, mimetype='image/jpeg',
                            resumable=True)
    req = servise.objects().insert(
        bucket=bucket_name,
        name=str(thumbnail),
        media_body=media,
        body={"cacheControl": "public,max-age=31536000"},
        predefinedAcl='publicRead'
    )
    resp = None
    while resp is None:
        status, resp = req.next_chunk()
    print(resp)
    thumb_url = 'https://storage.googleapis.com/' + bucket_name + '/' + str(thumbnail)

    return video_url, thumb_url


class VideoConverter(generics.ListCreateAPIView):
    def get(self, request, *args, **kwargs):
        return HttpResponse('Get request', status=200)

    def post(self, request, *args, **kwargs):
        serializer = VideoConverterSerializer(data=self.request.data)
        validation = serializer.is_valid()
        print(serializer.errors)
        if validation is True:
            url = request.POST.get('video_url')
            filename = url.split('/')
            filename = filename[-1]
            print(filename)
            ext = filename.split('.')
            print(ext[-1])
            only_name = ext[0]
            urllib.request.urlretrieve(url, filename)
            generate_thumbnail(filename, only_name + '_thumbnail.jpg')
            if ext == 'mp4':
                videourl, thumb_url = perform_upload(filename, only_name + '_thumbnail.jpg')
            else:
                conversion = convert_to_mp4(filename, only_name)
                if conversion is True:
                    videourl, thumb_url = perform_upload(only_name + '.mp4', only_name + '_thumbnail.jpg')

            return HttpResponse('Video url is: {}\n \nThumbnail url is: {}'.format(videourl, thumb_url))
        else:
            return HttpResponse('Not a valid request')
但当我将Mp4格式的视频传递给它时,它会在IDE控制台中返回一个错误,如下所示:

ffmpeg 4.0.2版版权所有(c)2000-2018 ffmpeg开发者 使用Apple LLVM版本10.0.0(clang-1000.10.43.1)构建 配置:--prefix=/usr/local/cillar/ffmpeg/4.0.2--启用共享--启用pthreads--启用-version3--启用硬编码表--启用avresample--cc=clang--主机cflags=--主机ldflags=--启用gpl--启用-libmp3lame--启用-libx264--启用libxvided--启用opencl--启用视频工具箱--禁用lzma libavutil 56。14.100 / 56. 14.100 libav编解码器58。18.100 / 58. 18.100 libav58格式。12.100 / 58. 12.100 libav58设备。3.100 / 58. 3.100 libav7。16.100 / 7. 16.100 libavresample4。00 / 4. 00 Libsw5。1.100 / 5. 1.100 libswresample 3。1.100 / 3. 1.100 Libroc 55。1.100 / 55. 1.100 从“PHP_GCS.mp4”输入#0、mov、mp4、m4a、3gp、3g2、mj2: 元数据: 主要品牌:mp42 次要版本:1 兼容品牌:mp41mp42isom 创建时间:2018-08-03T13:08:04.000000Z 持续时间:00:01:21.40,开始时间:0.000000,比特率:1584KB/s 流#0:0(und):视频:h264(主)(avc1/0x31637661),yuv420p,1918x1078[SAR 1:1 DAR 137:77],1581kb/s,30fps,30tbr,600tbn,1200tbc(默认) 元数据: 创建时间:2018-08-03T13:08:04.000000Z 处理器名称:核心媒体视频

文件“PHP_GCS.mp4”已存在。覆盖?[是/否]

我真的很困惑为什么会发生这种情况,因为当视频已经是mp4时,我没有使用
ffmpeg
,而只是用于生成缩略图

这里有什么问题


提前谢谢

我认为您的代码中遗漏了一些内容

视频转换器中的Post处理程序具有以下代码:

        ext = filename.split('.')
        print(ext[-1])
        only_name = ext[0]
        urllib.request.urlretrieve(url, filename)
        generate_thumbnail(filename, only_name + '_thumbnail.jpg')
        if ext == 'mp4': # mistake here
但是您没有检查if语句中的正确部分

如果ext[-1]=='mp4',您应该编写
,因为现在您正在将一个列表与一个总是返回false的字符串进行比较


这可能会解决您的问题,如果没有,请让我知道,我将相应地更新我的答案。

我认为您的代码中遗漏了一些内容

视频转换器中的Post处理程序具有以下代码:

        ext = filename.split('.')
        print(ext[-1])
        only_name = ext[0]
        urllib.request.urlretrieve(url, filename)
        generate_thumbnail(filename, only_name + '_thumbnail.jpg')
        if ext == 'mp4': # mistake here
但是您没有检查if语句中的正确部分

如果ext[-1]=='mp4'
,您应该编写
,因为现在您正在将一个列表与一个总是返回false的字符串进行比较


这可能会解决您的问题,如果没有,请让我知道,我将相应地更新我的答案。

不客气!如果这解决了你的问题,请接受我的回答。不客气!如果这解决了你的问题,请接受我的回答。