[Industry News] 世界的尽头是同一批寡头资本家
Tofloor
poster avatar
159******19
deepin
2024-07-09 09:12
Author

世界的尽头是同一批寡头资本家

joy

IMG_20240709_091022.jpg

IMG_20240709_091007.jpg

Reply Favorite View the author
All Replies
2 / 2
To page
tagerw
deepin
2024-07-12 22:13
#21
来自Ubuntu的某位用户
减去视频无声片段,可以先安装ffmpeg,然后运行这段Python代码:
 
# 使用方法: 
# 运行该程序前,用户只需修改下面两个变量即可:
# input_folder_path和output_folder_path。其他不用管。
 
import os
import subprocess
import shutil
 
 
def split_video(input_video_path, segment_length=3600): 
    video_name = os.path.splitext(os.path.basename(input_video_path))[0]
    output_dir = os.path.join(os.path.dirname(input_video_path), video_name + "_segments")
    os.makedirs(output_dir, exist_ok=True)
 
    command = [
        "ffmpeg",
        "-i", input_video_path,
        "-c", "copy",
        "-map", "0",
        "-segment_time", str(segment_length),  
        "-f", "segment",
        "-reset_timestamps", "1",
        os.path.join(output_dir, f"{video_name}_%03d" + os.path.splitext(input_video_path)[1])
    ]
 
    subprocess.run(command, check=True)
    return output_dir, [os.path.join(output_dir, f) for f in os.listdir(output_dir) if f.startswith(video_name)]
 
 
def merge_videos(segment_paths, output_video_path):
    with open('file_list.txt', 'w') as f:
        for path in segment_paths:
            f.write(f"file '{path}'\n")
 
    command = [
        "ffmpeg",
        "-f", "concat",
        "-safe", "0",
        "-i", "file_list.txt",
        "-c", "copy",
        "-c:v", "h264_nvenc",  # 使用 GPU 加速
        "-preset", "fast",
        output_video_path
    ]
 
    subprocess.run(command, check=True)
    os.remove('file_list.txt')  # 清理临时文件
 
 
def process_segment(input_video_path, output_video_path):
    try:
        command = [
            "ffmpeg",
            "-i", input_video_path,
            "-af", "silencedetect=n=-50dB:d=0.1",
            "-c:v", "h264_nvenc",  # 使用 GPU 加速
            "-preset", "fast",
            "-f", "null", "-"
        ]
 
        process = subprocess.Popen(command, stderr=subprocess.PIPE)
        output, error = process.communicate()
 
        if process.returncode != 0:
            print(f"FFmpeg command failed with return code {process.returncode}")
            return
 
        silent_segments = []
        for line in error.decode().splitlines():
            if "silence_start" in line:
                silent_segments.append(float(line.split(": ")[1]))
            elif "silence_end" in line:
                silent_segments.append(float(line.split("|")[0].split(": ")[1]))
 
        non_silent_segments = []
        if silent_segments:
            non_silent_segments.append((0, silent_segments[0]))
            for i in range(1, len(silent_segments) - 1, 2):
                non_silent_segments.append((silent_segments[i], silent_segments[i + 1]))
            non_silent_segments.append((silent_segments[-1], None))
 
        filter_file_path = os.path.join(os.getcwd(),
                                        f"{os.path.splitext(os.path.basename(input_video_path))[0]}_ffmpeg_filter.txt")
        with open(filter_file_path, 'w') as f:
            f.write("select='")
            for start, end in non_silent_segments:
                if end is None:
                    f.write(f"gte(t,{start})+")
                else:
                    f.write(f"between(t,{start},{end})+")
            f.seek(f.tell() - 1, os.SEEK_SET)
            f.truncate()
            f.write("',setpts=N/FRAME_RATE/TB;")
            f.write("aselect='")
            for start, end in non_silent_segments:
                if end is None:
                    f.write(f"gte(t,{start})+")
                else:
                    f.write(f"between(t,{start},{end})+")
            f.seek(f.tell() - 1, os.SEEK_SET)
            f.truncate()
            f.write("',asetpts=N/SR/TB")
 
        ffmpeg_concat_cmd = [
            "ffmpeg",
            "-i", input_video_path,
            "-filter_complex_script", filter_file_path,
            "-c:v", "h264_nvenc",  # 使用 GPU 加速
            "-preset", "fast",
            "-c:a", "aac",
            "-b:a", "192k",
            output_video_path
        ]
 
        subprocess.run(ffmpeg_concat_cmd, check=True)
        print(f"Non-silent segments merged and saved to: {output_video_path}")
    except Exception as e:
        print(f"Error processing segment {input_video_path}: {str(e)}")
    finally:
        if os.path.exists(filter_file_path):
            os.remove(filter_file_path)
 
def process_video(input_video_path, output_video_path):
    output_dir, segments = split_video(input_video_path)  # 这一步解决了视频长度的限制。无论视频长短,都不会出bug。
 
    processed_segments = []
    for segment_path in segments:
        temp_output_path = segment_path.replace(".mp4", "_processed.mp4")
        process_segment(segment_path, temp_output_path)  # 处理每个视频段
        processed_segments.append(temp_output_path)
 
    merge_videos(processed_segments, output_video_path)  # 合并处理过的视频段
    shutil.rmtree(output_dir)  # 删除临时文件夹,包含所有分割的视频段
    print(f"Processed video saved to: {output_video_path}")
 
 
# 运行该程序前,用户只需修改下面两个变量即可
input_folder_path = r"your_input_folder_path" # 更换为实际输入文件夹的路径
output_folder_path = r"your_output_folder_path" # 更换为实际输出文件夹的路径
 
input_video_files = [os.path.join(input_folder_path, file) for file in os.listdir(input_folder_path) if
                     file.endswith(('.mp4', '.flv', '.avi'))]
for input_video_path in input_video_files:
    video_name = os.path.splitext(os.path.basename(input_video_path))[0]
    output_video_path = os.path.join(output_folder_path, f"{video_name}_merged.mp4")
    process_video(input_video_path, output_video_path)

目前大部分人用麒麟或deepin这种桌面系统,很多是因为单位要求或电脑硬件陈旧用不了win,很多人就是把Linux当win的替代品。大多数人是不可能上升到Debian、archlinux、gentoo的,能用Debian、archlinux、gentoo的人,还是那一小批人。

Reply View the author
来自Ubuntu的某位用户
deepin
2024-07-13 16:03
#22
tagerw

目前大部分人用麒麟或deepin这种桌面系统,很多是因为单位要求或电脑硬件陈旧用不了win,很多人就是把Linux当win的替代品。大多数人是不可能上升到Debian、archlinux、gentoo的,能用Debian、archlinux、gentoo的人,还是那一小批人。

可能在你看来能用上Ubuntu这种发行版就很不错了,但是现在的Ubuntu系统也开始夹带Ubuntu Pro这种商业化服务,而且Ubuntu系统的tty都能显示广告

image.png

Reply View the author
tagerw
deepin
2024-07-13 16:44
#23
来自Ubuntu的某位用户

可能在你看来能用上Ubuntu这种发行版就很不错了,但是现在的Ubuntu系统也开始夹带Ubuntu Pro这种商业化服务,而且Ubuntu系统的tty都能显示广告

image.png

我俩的意思可能稍微拧巴了一点,我侧重表达现在很多Linux用户是半被迫,比如工作环境需要,或者设备老旧跑不动win7了。我本人就是被设备老旧逼的,这类人并不会主动拥抱linux去钻研技术,首选桌面化、界面友好、易上手的deepin这类系统,所以这类人对更进一步的Debian、archlinux也没几个主动接触的。你身边可能技术类人员多一些,可能大家就更想技术自由。积极往更上层靠拢。顺便感谢你给我的视频剪辑减掉不说话空白段的程序,我30年前学过Basic,你那段程序,我是一句没看懂啊。甚至都不知道怎么在终端里运行,塞进电脑里面去。

Reply View the author
来自Ubuntu的某位用户
deepin
2024-07-13 17:11
#24
tagerw

我俩的意思可能稍微拧巴了一点,我侧重表达现在很多Linux用户是半被迫,比如工作环境需要,或者设备老旧跑不动win7了。我本人就是被设备老旧逼的,这类人并不会主动拥抱linux去钻研技术,首选桌面化、界面友好、易上手的deepin这类系统,所以这类人对更进一步的Debian、archlinux也没几个主动接触的。你身边可能技术类人员多一些,可能大家就更想技术自由。积极往更上层靠拢。顺便感谢你给我的视频剪辑减掉不说话空白段的程序,我30年前学过Basic,你那段程序,我是一句没看懂啊。甚至都不知道怎么在终端里运行,塞进电脑里面去。

新建一个后缀为py的文件(touch 剪掉静音片段.py),然后打开这个文件(例如:nano 剪掉静音片段.py)把代码粘贴进去,保存文件,最后输入(python 剪掉静音片段.py),其他注意事项看代码注释

这个程序大概就是先把视频中所有有声音的片段剪出来放一个临时文件夹,然后再按顺序拼回去生成新视频,最后删除这个临时文件夹

当然,剪去视频静音部分FFmpeg Batch AV Converter也是一个替代方案

Reply View the author
tagerw
deepin
2024-07-14 11:27
#25
来自Ubuntu的某位用户

新建一个后缀为py的文件(touch 剪掉静音片段.py),然后打开这个文件(例如:nano 剪掉静音片段.py)把代码粘贴进去,保存文件,最后输入(python 剪掉静音片段.py),其他注意事项看代码注释

这个程序大概就是先把视频中所有有声音的片段剪出来放一个临时文件夹,然后再按顺序拼回去生成新视频,最后删除这个临时文件夹

当然,剪去视频静音部分FFmpeg Batch AV Converter也是一个替代方案

个人觉得即使linux这样开放的环境,在某些技术方面的发展,仍然有落后于手机端的感觉。几个例子。1手机录屏只有机器内部声音,没有环境音,清晰。电脑录屏环境音也进去了,环境音还不好剔除。2电脑视频编辑加字幕一直不容易,有插件的软件不多,大部分是一个字一个字打上去,再大致对齐讲话时间长度。在手机任何一个可发视频的小APP上,微信或抖音或小红书,语音转视频是基本功能,虽说有时候字幕断词断句跟讲话对的不太准。3拍短视频总有不讲话讲错话的时候,在剪映先语音变文字,这时会有空白提示,可选择删除不讲话的空白段。对讲错话部分,找到文字,比对着剪除视频即可。在shotcut里面,只有大致记住讲话的时间段,对着声音波形去剪辑视频。可能手机剪辑精度不高,但大家也都是手机看视频,也没几个觉得手机剪辑出来的视频有多大问题。我坚持用电脑版shotcut剪辑,一个原因是电脑个头大,容易操作。第二个是主要原因,我手机是mate10Pro已经经常卡顿了,运行吃力了。又绕回前面的话,我就是被手机电脑硬件太差,逼得用deepin的。感谢你教我往电脑里塞程序,容我研究一下。

Reply View the author
昵称111
deepin
2024-07-18 16:34
#26

哈哈哈哈哈哈哈

Reply View the author
xiaotb
deepin
2024-07-31 10:51
#27

美国的公司大部分都掌握在犹太人手里。所以大部分公司都是犹太人的口舌。美国的公司都是一个祖宗,威胁其中一个公司,另一个公司肯定不干。

Reply View the author
xiaotb
deepin
2024-07-31 10:51
#28

俄乌冲突后,ubuntu宣布停止对俄罗斯的服务。开源无国界,开源公司有国界

Reply View the author
2 / 2
To page