【问题标题】:Python adding files from URL to file on local filePython将文件从URL添加到本地文件中的文件
【发布时间】:2019-02-13 01:49:02
【问题描述】:

我正在尝试合并来自 Internet 的两个文件,并将输出保存在我的计算机上。我有下面的代码,但没有做我尝试的事情,我总是得到相同的结果。我得到了第一个 URL,仅此而已。 确切地说,我正在尝试将 VideoURL 和 videoURL1 合并到一个名为 output.mp4 的文件中......

videoURL= 'http://file-examples.com/wp-content/uploads/2017/04/file_example_MP4_480_1_5MG.mp4'
videoURL1 = 'http://techslides.com/demos/sample-videos/small.mp4'
# print(str(embeddHTMLString).find('sources: ['))

local_filename = videoURL.split('/')[-1]
# NOTE the stream=True parameter

response = urlopen(videoURL)

response1 = urlopen(videoURL1)

with open(local_filename, 'wb') as f:
    while True:
        chunk = response.read(1024)
        if not chunk:
            break
        f.write(chunk)
with open(local_filename, 'ab+') as d:
    while True:
        chunk1 = response1.read(1024)
        if not chunk1:
            break
        d.write(chunk1)

【问题讨论】:

  • 正确的做法是将2个mp4文件下载到本地,然后concat成一个mp4文件。您不能将它们与附加“组合”。
  • 所以你说没有办法获取文件,然后将它们变成块,然后将它们以字节为单位添加到一个文件中?我很难相信……我可能是出于无知,不知道字节块是如何工作的……
  • 问题不在于块和字节如何工作。媒体文件包含格式头和元数据,将 2 个媒体文件合并为 1 意味着您需要重写新的元数据和格式头,并删除旧的。您将需要 ffmpeg / mp4box 的帮助来为您完成这项工作。
  • 哦,我,谢谢你,我会将此标记为答案!

标签: python-3.x io python-requests


【解决方案1】:

你做错了。 @Tempo810 已经给出了这个答案的要点,您需要单独下载文件并稍后将它们连接成一个文件

我假设您已经分别从您的网址下载了 video1.mp4video2.mp4。现在要合并它们,你根本不能使用 append 来连接文件,因为视频文件包含格式头和元数据,并且将两个媒体文件合二为一意味着你需要重写新的元数据和格式头,并删除旧的。

相反,您可以使用库 moviepy 来拯救自己。以下是如何利用moviepyconcatenate_videoclips() 连接文件的一小段代码示例:

from moviepy.editor import VideoFileClip, concatenate_videoclips
# opening the clips
clip1 = VideoFileClip("video1.mp4")
clip3 = VideoFileClip("video2.mp4")
# lets concat them up
final_clip = concatenate_videoclips([clip1,clip2])
final_clip.write_videofile("output.mp4")

您生成的组合文件是output.mp4。就是这样!

【讨论】:

    猜你喜欢
    • 2021-08-23
    • 2019-01-15
    • 2014-05-09
    • 1970-01-01
    • 1970-01-01
    • 2018-05-05
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    相关资源
    最近更新 更多