小编Rus*_*pot的帖子

Moviepy - 输出视频无法播放

moviepy在 Linux Mint 18.1 上使用该库。

具体来说,它moviepy 0.2.3.2python 3.5.2

由于我刚开始,我尝试了这个简单的脚本,它应该一个接一个地连接两个视频:

import moviepy.editor as mp

video1 = mp.VideoFileClip("short.mp4")
video2 = mp.VideoFileClip("motivation.mp4")

final_video = mp.concatenate_videoclips([video1,video2])
final_video.write_videofile("composition.mp4")
Run Code Online (Sandbox Code Playgroud)

这两个视频是我从 YouTube 下载的随机短视频。它们都可以完美地播放,无论是使用 VLC 还是 Linux Mint 提供的标准视频播放器。

脚本运行良好,没有错误,最终消息:

[MoviePy] >>>> Building video composition.mp4
[MoviePy] Writing audio in compositionTEMP_MPY_wvf_snd.mp3
100%|??????????????????????????????| 1449/1449 [00:23<00:00, 59.19it/s]
[MoviePy] Done.
[MoviePy] Writing video composition.mp4
100%|??????????????????????????????| 1971/1971 [11:34<00:00,  2.84it/s]
[MoviePy] Done.
[MoviePy] >>>> Video ready: composition.mp4 
Run Code Online (Sandbox Code Playgroud)

该文件确实已创建,并且它也有一个大小(大约 20 MB)。但是,当我尝试播放它时,没有任何反应:它似乎已损坏。标准视频播放器甚至告诉我“没有要播放的视频流”。

如果我尝试对交互式控制台执行相同的操作并使用final_video.preview(),则会得到一个AttributeError,以及此回溯:

In [5]: final_video.preview()
Exception …
Run Code Online (Sandbox Code Playgroud)

python-3.x moviepy

6
推荐指数
1
解决办法
2781
查看次数

UnicodeDecodeError,再次使用无效的连续字节

我无法弄清楚如何一劳永逸地解决这些问题.当我试着写"è"(我是意大利语)时,我第一次遇到这些问题.经过一些研究,我发现在一开始就添加"#coding:utf-8"似乎解决了这个问题......直到现在.

我编辑了1或2天前编写的代码.它工作得很好....现在,每当我运行脚本时,它都不起作用:它永远不会启动,我会遇到这个错误:

SyntaxError: 'utf-8' codec can't decode byte 0xe0 in position 32: invalid continuation byte.
Run Code Online (Sandbox Code Playgroud)

问题是......位置32?哪里?什么是有问题的线?我不知道我添加了什么,因为我做了一些改动.尝试在调试模式下执行也没有帮助,当我在脚本的最开始"Step Into"时,错误立即出现(顺便说一句,我使用的是Wingware 101作为IDLE,我正在使用Win7的).对不起,如果我没有足够的信息,我可以发布代码,但我害怕这样做,这是一个用意大利语写的烂摊子,也许不容易理解到底发生了什么.

谢谢你的回复和节日快乐!

python unicode utf-8

2
推荐指数
1
解决办法
1万
查看次数

这个来自C教程的阶乘函数是错误的吗?

我在Python中有一点编程经验,为了好奇,我开始学习C,至少是基础知识.在一个教程中,我找到了一个计算阶乘的示例函数,它是这样的:

int factorial(int x)
{
    int i;
    for(i=1; i < x; i++)
    {
        x *= i;  
    }
    return x;
}
Run Code Online (Sandbox Code Playgroud)

我还添加了这些行以查看输出:

#include <stdio.h>

int main()
{
    int val;
    val = factorial(5);
    printf("%d\n",val);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

然后我编译代码gcc factor.c -o factor.out,运行和... ooops,结果是-1899959296,显然有一些错误.

多试几次之后,以printf()同时打印ix,我想通了,出了什么问题(我认为):自从条件for回路检查计数器是否小于x,然后在每一步x变得越来越大,i总是小于x因此循环继续进行,大概是在值x太大时停止(这应该与之相关int,我对各种数据类型还不是很熟悉).

所以,为了"解决"这个问题,我重写了这个函数:

int factorial(int x)
{
    int counter = x;
    int number = x;
    int i; …
Run Code Online (Sandbox Code Playgroud)

c

2
推荐指数
1
解决办法
69
查看次数

标签 统计

c ×1

moviepy ×1

python ×1

python-3.x ×1

unicode ×1

utf-8 ×1