[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
1 / 2
To page
感恩的心
deepin
2024-07-09 09:16
#1

微信图片_20240709091524.jpg

这才是真实原因

Reply View the author
sshnuke
deepin
2024-07-09 09:17
#2

mmexport1720487789517.png

微软不想他们做的某些事被国产安卓机捕捉到而已

Reply View the author
sshnuke
deepin
2024-07-09 09:41
#3

不衍生的话,authenticator这APP在国内每个安卓应用市场的版本都不太一样,并且都不是最新的

Reply View the author
131******66
deepin
2024-07-09 09:56
#4

搞他就完了。

Reply View the author
fallingstar-ten
deepin
2024-07-09 09:59
#5
It has been deleted!
风月相知
deepin
2024-07-09 10:11
#6

这是新闻学的又一次胜利

Reply View the author
buyike
deepin
2024-07-09 13:29
#7

再正常不过的事,就如同我现在弃用windows在用deepin是一个道理。

Reply View the author
晚秋(lateautumn)
Moderator
2024-07-09 14:01
#8
buyike

再正常不过的事,就如同我现在弃用windows在用deepin是一个道理。

agree 我也一样,摆脱了瘟疫,用上了深度。

Reply View the author
乾豫恒益
deepin
2024-07-09 14:31
#9

看来“假想敌” 给他们涨工资了 ...

Reply View the author
zmqsybzc
deepin
2024-07-09 14:48
#10

估计有不好的目的……现在我已经摆脱Windows了。等国产硬件成熟之后,我就可以跟英特尔、英伟达、AMD、微软等公司控制的产品说再见了

applaud

Reply View the author
来自Ubuntu的某位用户
deepin
2024-07-09 15:12
#11
晚秋(lateautumn)

agree 我也一样,摆脱了瘟疫,用上了深度。

最好再上升一个层次,用Debian、archlinux、gentoo这种完全由社区驱动的linux发行版,完全摆脱商业化

Reply View the author
jjcui8595
deepin
2024-07-09 15:13
#12

这样的话,咱们就用华为

Reply View the author
buyike
deepin
2024-07-09 16:05
#13
jjcui8595

这样的话,咱们就用华为

华为,我尊重他,但不神化他。

在满足我的需求情况下,尽可能的选择他,但也仅此而已。

Reply View the author
唱跳RapMusic
deepin
2024-07-09 16:52
#14

德国总理都能监听,

其他都是小卡拉咪

Reply View the author
jjcui8595
deepin
2024-07-09 20:50
#15
buyike

华为,我尊重他,但不神化他。

在满足我的需求情况下,尽可能的选择他,但也仅此而已。

这就够了

Reply View the author
tagerw
deepin
2024-07-10 11:59
#16
buyike

再正常不过的事,就如同我现在弃用windows在用deepin是一个道理。

我个人笔记本电脑也是用deepin有5年了,只是Linux整体仍然不够给力。配套软件资源也太少。很多软件有win版没Linux版,并且说是能用安卓APP实际上,大部分使用起来会卡死,并且大部分安卓APP还不能直接在deepin平台上安装。任重道远。

Reply View the author
tagerw
deepin
2024-07-10 12:02
#17
来自Ubuntu的某位用户

最好再上升一个层次,用Debian、archlinux、gentoo这种完全由社区驱动的linux发行版,完全摆脱商业化

对大多数人来说,用deepin这种平台已经是另类了,我经常因为没有合适的软件可用被人嘲笑。这好歹还是个中文平台,在上升一级,怕是用的人更少了。

Reply View the author
来自Ubuntu的某位用户
deepin
2024-07-10 12:36
#18
tagerw

对大多数人来说,用deepin这种平台已经是另类了,我经常因为没有合适的软件可用被人嘲笑。这好歹还是个中文平台,在上升一级,怕是用的人更少了。

我们linux哪里没有合适的软件?

PS可以用GIMP、Krinta替代

PR、剪映可以用OpenShot、Shotcut、Kdenlive这种

WPS可以用Open Office替代,Open Office不仅文档格式转换服务全部免费,而且还可以安装插件,智谱Copilot插件是WPS AI免费替代

……

在linux的世界,常用软件的开源替代品免费,至少不用送钱给科技巨头了

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

我们linux哪里没有合适的软件?

PS可以用GIMP、Krinta替代

PR、剪映可以用OpenShot、Shotcut、Kdenlive这种

WPS可以用Open Office替代,Open Office不仅文档格式转换服务全部免费,而且还可以安装插件,智谱Copilot插件是WPS AI免费替代

……

在linux的世界,常用软件的开源替代品免费,至少不用送钱给科技巨头了

我用GIMP,WPS。但因为WPS中的PPT插入视频文件,播放就崩,我为了放映PPT还专门安装了LebreOffice,我的视频剪辑使用shotcut,但要承认shotcut在方便性上远不如剪映。比如剪掉没有讲话声音的片段,自动增加字幕等。使用Linux,就是绞尽脑汁跟大家一样罢了。

Reply View the author
来自Ubuntu的某位用户
deepin
2024-07-12 13:28
#20
tagerw

我用GIMP,WPS。但因为WPS中的PPT插入视频文件,播放就崩,我为了放映PPT还专门安装了LebreOffice,我的视频剪辑使用shotcut,但要承认shotcut在方便性上远不如剪映。比如剪掉没有讲话声音的片段,自动增加字幕等。使用Linux,就是绞尽脑汁跟大家一样罢了。

减去视频无声片段,可以先安装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)
Reply View the author
1 / 2
To page