1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- import csv
- import requests
- import subprocess
- def get_filesize(url):
- try:
- response = requests.head(url, allow_redirects=True)
- if response.status_code == 200:
- content_length = response.headers.get('Content-Length')
- return int(content_length) if content_length else None
- print(f"Error: HTTP {response.status_code} for {url}")
- return None
- except Exception as e:
- print(f"Error getting filesize for {url}: {e}")
- return None
- def get_bitrate(url):
- try:
- cmd = [
- 'ffprobe',
- '-v', 'error',
- '-select_streams', 'v:0',
- '-show_entries', 'stream=bit_rate',
- '-of', 'default=noprint_wrappers=1:nokey=1',
- url
- ]
- output = subprocess.check_output(cmd, stderr=subprocess.STDOUT, timeout=30)
- bit_rate = output.decode().strip()
- return int(bit_rate) if bit_rate else None
- except subprocess.CalledProcessError as e:
- print(f"ffprobe error for {url}: {e.output.decode().strip()}")
- return None
- except Exception as e:
- print(f"Error getting bitrate for {url}: {e}")
- return None
- def process_csv(csv_file):
- bitrate_counter = 0
- filesize_counter = 0
- with open(csv_file, 'r') as file:
- reader = csv.DictReader(file)
- for row in reader:
- url1, url2 = row['path_264'], row['path_265']
- url1 = "http://visionularcdn.yishihui.com/" + url1
- url2 = "http://vcdn.yishihui.com/" + url2
-
- size1, size2 = get_filesize(url1), get_filesize(url2)
- if None in (size1, size2):
- continue
-
- bitrate1, bitrate2 = get_bitrate(url1), get_bitrate(url2)
- if None in (bitrate1, bitrate2):
- continue
-
- if bitrate1 > bitrate2:
- bitrate_counter += 1
- if size1 > size2:
- filesize_counter += 1
- print(f"码率大于次数: {bitrate_counter}")
- print(f"文件大小大于次数: {filesize_counter}")
- if __name__ == "__main__":
-
-
-
-
-
-
- csv_file_path = '/root/h265.csv'
- process_csv(csv_file_path)
|