V2EX MOranonline
 MOranonline 最近的时间轴更新
MOranonline

MOranonline

V2EX 第 733841 号会员,加入于 2025-02-08 00:22:41 +08:00
MOranonline 最近回复了
@cnbatch 后悔加上“无损”二字了,我的主要意思其实是下载下来的音频不压缩传输,不是音频本身无损。下载的时候下载工具是可以转码的嘛,我看着 flac 顺眼就全转成 flac 了(**操作)(主要我也不知道原音频格式,它只让选下载后的格式)
@yazinnnn0 感谢
@watermeter 音频从电脑中传出后,手机和平板也能共享歌单了。
@mxalbert1996 感谢
@jifengg 有些音频是一个半小时的纯音循环 cpu 要跑半个多小时。另外,感谢。
@butanediol2d 对√,问题是全存电脑里也扛不住啊。B 站音频压的不是特别狠,听的其实也还算可以。传国外去的话,我拒绝全时段科学上网。这是我当前想到的最优解馁。
主要是有许多音频是音乐分享站油管 twitch 等乱七八糟的来源,不然就用落雪音乐之类的软件了。
如果有管理员看到,麻烦删个贴谢谢
196 天前
回复了 MOranonline 创建的主题 问与答 使用 FFmpeg 和英伟达显卡最简实现“图片+无损音频=视频”的方法
>需求:搜集到的无损音乐太占空间,决定传到 B 站~~网盘~~。但 pr 导出太太太耗时,于是使用 FFmepeg 的 GPU 加速

前置条件清单<br/>
1.支持 NVENC 的 NVIDIA 显卡
确认是否支持 NVENC:
在 CMD 中执行:
```
nvidia-smi
```
或通过 [NVIDIA 官方列表]( https://developer.nvidia.com/video-encode-decode-gpu-support-matrix) 查询您的显卡型号。<br/>
2.更新到最新 NVIDIA 显卡驱动 <br/>
3.支持 `h264_nvenc` 的 FFmpeg 版本 <br/>
- [FFmpeg 官网]( https://www.gyan.dev/ffmpeg/builds/)
- 检查 FFmpeg 是否支持 `h264_nvenc`:
<ul><li>I think 1969 was second best.</li></ul>

```
ffmpeg -encoders | findstr "h264_nvenc"
```
如果输出中有 `h264_nvenc`,则支持。<br/>

---

开始:<br/>
1.将 FFmpeg 的 bin 目录加入环境变量<br/>
2.输入<br/>

```
ffmpeg -hwaccel cuda -threads 24 -loop 1 -i "picture.png" -i "music.flac" -vf "hwupload" -c:v h264_nvenc -preset 0 -cq 23 -rc constqp -c:a flac -shortest "output.mkv"
```
解析:<br/>

- `ffmpeg`:开源命令行工具
- `-hwaccel cuda`:启用 CUDA 硬件加速,利用 NVIDIA 显卡的 CUDA 核心来加速视频处理,从而提高处理效率。
- `-threads 24`:设置处理时使用的线程数为 24 个,多线程加快处理速度,根据电脑配置增减。
- `-loop 1`:使输入的图像循环播放,这里设置循环次数为 1 次,让图像持续显示。
- `-i "picture.png"`:指定输入文件为名为`picture.png`的图像文件。
- `-i "music.flac"`:指定输入文件为名为`music.flac`的音频文件。
- `-vf "hwupload"`:视频滤镜,将输入视频数据上传到硬件设备(这里与前面的硬件加速相关),以便后续在硬件上进行处理。
- `-c:v h264_nvenc`:指定视频编码格式为 H.264 ,并使用 NVIDIA NVENC 编码器进行编码,利用 NVIDIA 显卡的编码能力来生成视频流。
- `-preset 0`:设置编码预设,0 是最快但视频质量最差,可以按需提高。
- `-cq 23`:设置恒定质量因子为 23 。恒定质量因子模式下,编码器会尝试保持输出视频质量恒定,通过调整码率来适应不同的场景复杂度。较低的 CQ 值通常意味着更高的质量,但可能产生更大的文件。
- `-rc constqp`:指定使用恒定 QP (量化参数)模式进行编码,与`-cq`类似,用于控制视频质量。
- `-c:a flac`:指定音频编码格式为 FLAC ,保持音频的原始编码格式不变
- `-shortest`:使输出视频的时长与输入中最短的流的时长相同,即当音频和视频时长不同时,以最短的时长为准来生成输出视频,确保音频和视频同步结束。
- `"output.mkv"`:指定输出文件名为`output.mkv`,然后发到 B 站网盘就行了。

---

批量处理:<br/>
视频按顺序数字重命名(如 `video1.mp4`, `video2.mp4` 等),且需要与对应的图片(如 `pic1.png`, `pic2.png`)

1.每个视频关联一张图片
```batch
@echo off
set "input_dir=.\videos" # 视频存放目录(如已重命名的 video1.mp4 )
set "image_dir=.\images" # 图片存放目录(需要同名的 pic1.png 等)
set "output_dir=.\outputs" # 输出目录

for %%a in ("%input_dir%\*.mp4") do (
set "video_file=%%~nxa"
set "prefix=%%~na"
ffmpeg -hwaccel cuda -threads 24 -i "%%a" -i "%image_dir%\pic%%~na.png" ^ # 注意:这里的图片名格式可自定义(如 pic1.png 需替换为 pic##匹配你的命名)
-filter_complex "[0:v]scale=trunc(iw/2)*2:trunc(ih/2)*2[vid]; [vid][1:v] overlay=10:10" ^ # 图片叠加在左上角( 10 像素偏移)
-c:v h264_nvenc -preset 0 -cq 23 -rc constqp ^
-c:a copy ^ # 音频直接复制(加速处理)
"%output_dir%\output_%%~na.mkv"
)
```

2.所有视频使用同一张背景图片
```batch
@echo off
set "input_dir=.\videos" # 视频目录
set "image_file=.\background.png" # 固定背景图片路径
set "output_dir=.\outputs"

for %%a in ("%input_dir%\*.mp4") do (
ffmpeg -hwaccel cuda -threads 24 -i "%%a" -loop 1 -i "%image_file%" ^ # 循环播放图片
-filter_complex "[0:v]scale=trunc(iw/2)*2:trunc(ih/2)*2[vid]; [1:v]scale=trunc(iw/2)*2:trunc(ih/2)*2[img]; [vid][img] overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2" ^ # 图片居中叠加
-c:v h264_nvenc -preset 0 -cq 23 -rc constqp ^
-c:a copy
"%output_dir%\output_%%~na.mkv"
)
```

3.注意事项
- 确保所有视频/图片格式被 FFmpeg 支持(jpg 格式图片需要额外命令转换)
- 若视频名包含空格/符号,需用引号包裹路径:
- 批处理脚本默认顺序执行,可通过多线程化进程(如 GNU Parallel )提速~~电脑包扛不住吧~~<br/>
4.效果示例
```text
# 输入视频目录:
videos/
├── video1.mp4
├── video2.mp4
└── video3.mp4

# 输入图片目录(场景 1 ):
images/
├── pic1.png
├── pic2.png
└── pic3.png

# 输出目录:
outputs/
├── output_video1.mkv
├── output_video2.mkv
└── output_video3.mkv
```

5.自动化
#### **(1) 保存为批处理文件( Windows )**
```batch
# 保存为 batch_process.bat ,双击运行即可。
```

#### **(2) 可视化进度条(可选)**
```batch
echo Processing videos:
FOR /L %i IN (1,1,50) DO (
echo %i%%
ping localhost -n 1 >nul
)
```

然后可以**快速完成批量视频与图片的合成处理**,传到 B 站~~网盘~~。如需进一步定制(如动态图片透明度、图片/视频尺寸调整、不同叠加效果、音轨混音等)自行添加命令<br/>
使用开源的 B 站音频播放器[电梓播放器]( https://github.com/kenmingwang/azusa-player)<br/>然后完美音乐软件 get☆ daze
新人首次发帖,编辑过程中误触 ctrl+enter ,直接发了出来,然后发现不能删帖。挺好的规则,使我旋转两周半。点击下沉 10 天继续编辑。
怎么删,靠
关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4829 人在线   最高记录 6679       Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 15ms UTC 01:07 PVG 09:07 LAX 18:07 JFK 21:07
Do have faith in what you're doing.
ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86