为什么我不能创建视频或通过 Internet 发送视频数据?

Why can't I create videos or send video data over the internet?

信息

我一直非常希望能够使用 Python 中的套接字通过 Internet 发送图像和视频数据。但我不知道如何阅读视频和解码bytes

所以我今天有了一个想法并尝试了一下:

with open('VID_READ.mp4', 'rb') as vid_read:
    # 'rb' to read the video data as bytes and avoid codec errors
    byte_data = vid_read.read()
    str_data = str(byte_data)[2:-1] # To avoid codec errors caused by byte decoding
    vid_read.close()

with open('VID_WRITE.mp4', 'w') as vid_write:
    vid_write.write(str_data)

上面的代码完成时没有任何错误,但是当我尝试使用视频播放器打开 VID_WRITE.mp4 时,出现读取错误。

问题

How do I read the byte data in a video, decode it, and write it into another video file without any errors?

套接字发送字节,因此无需转换为字符串。

并且不要转换为 imagevideo 之类的字符串文件,因为它会更改一些字节 (new line) 并且会破坏数据。并且不要削减 [2:-1] 因为你创建了不完整的数据。

简单地读为字节 rb 并写为字节 wb

with open('VID_READ.mp4', 'rb') as vid_read:
      byte_data = vid_read.read()

# ... send bytes using socket ...

with open('VID_WRITE.mp4', 'wb') as vid_write:
      vid_write.write(byte_data)

顺便说一句: 如果你使用 with open(...) as .. 那么你不需要 close() 因为 with 关闭它。


顺便说一句:

如果你想转换或编辑 videoimage 然后使用专门的模块,如 PIL / pillow / wand for images, MoviePy / ffmpeg-python 视频。你不能使用标准 open()