python - 分割视频文件并使它们单独播放

标签 python sockets video ffmpeg webm

我是这条 python 的新手。我将 webm 视频文件分成 block ,但我无法使用 python 程序使它们单独播放。但是在我将 block 加入单个文件后它会播放。我知道这是由于缺少头文件。请帮助我提供将头文件附加到零件以使它们可以单独播放的代码。请回复。非常感谢。

代码如下:

客户端:

import socket, os
import time

client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect(("localhost", 5005))
size = 1024

while True:
    fname = "/home/xincoz/test/conn2.webm"
    fn = client_socket.recv(1024)
    print fn

    fp = open(fname,'wb')
    while True:
        strng = client_socket.recv(int(fn))
        print strng
        if not strng:
            break
        fp.write(strng)
    fp.close()

    print "Data Received successfully"
    exit()

服务器端:

import os,kaa.metadata  
import sys,time 
import socket
import Image

server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(("localhost", 5005))
server_socket.listen(5)

client_socket, address = server_socket.accept()
print "Conencted to - ",address,"\n"

file = '/home/xincoz/Downloads/connect.webm'
a = kaa.metadata.parse(file)

print '\n Maybe, pending work'
file_name = open(file,'rb')
size=str(os.path.getsize(file))
print size
client_socket.send(str(os.path.getsize(file)))
print file_name
strng = file_name.read(os.path.getsize(file))
client_socket.send(strng[0:2000000])
file_name.close()

print str(a)+"Meta Data"
print "Data sent successfully"

最佳答案

我不太熟悉 .webm 格式,但如果是任何类似 .avi 文件的文件,我怀疑将不完整的数据剪切掉并将其保存到文件中就足够了。我假设 [0:2000000] 是您限制大小的地方?如果它像 .avi,那么您的文件应该使用服务器上的 ffmpeg 或 mencoder 等工具正确分割,然后将完整的输出文件发送到客户端,而不是过早地切断数据。

关于python - 分割视频文件并使它们单独播放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17273621/

相关文章:

c - 打开的子套接字如何关闭?

python - 无法使用 CGI 处理程序启用线程安全

java - Android BSD 套接字连接

python - 绘图库;十的分数次幂;科学计数法

linux - 无法从远程主机连接到 linux tcp 套接字应用程序

javascript - 如何在 HTML5 视频标签中播放 F4V 视频

ios - 如何做json类型响应?

shell - 如何生成一个 2 小时长的空白视频

python - 将行/列标题添加到 NumPy 数组

python - 如何按不同日期对 pandas DataFrame 进行分组?