惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

阮一峰的网络日志
阮一峰的网络日志
J
Java Code Geeks
Martin Fowler
Martin Fowler
宝玉的分享
宝玉的分享
V
Visual Studio Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
M
MIT News - Artificial intelligence
U
Unit 42
博客园 - 三生石上(FineUI控件)
博客园 - 聂微东
The GitHub Blog
The GitHub Blog
I
InfoQ
WordPress大学
WordPress大学
H
Help Net Security
D
Docker
B
Blog
腾讯CDC
A
About on SuperTechFans
Recent Announcements
Recent Announcements
雷峰网
雷峰网
有赞技术团队
有赞技术团队
C
Check Point Blog
Y
Y Combinator Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC

FFmpeg

[FFmpeg 的实时性太糟糕了] 后续 intel qsv ffmpeg 编码问题 FFmpeg 的实时性太糟糕了 早就听说过 ffmpeg,但是一直不知道有多牛 使用 FFmpeg 和 GPU 实现最简“图片+无损音频=视频”的方法 FFmpegKit has been officially retired. There will be no further ffmpeg-kit releases. 有没有精通 ffmpeg 的大佬帮我看下这个视频是怎么制作的 求助大佬们, FFmpeg 指令拉实时流转推的正确姿势到底是什么? 在几乎不损失画质的前提下,怎么用 ffmpeg 把 h.264 格式的视频转换成 h.265 格式的? 我又来询问 ffmpeg 问题了!这次是硬件加速! 大佬们, nodejs 和 Python 做类似 jellyfin 实时转码是不是只能用 ffmpeg 实现了 有大佬开发过 ffmpeg 吗?用 c++调用 ffmpeg API 解码视频流 CPU 占用率高,求解决办法 ffmpeg 视频录制切分问题请教 通过 ffmpeg 压缩视频很慢 时间敏感的需求该怎么设置参数呢? ffmpeg 处理后视频时长问题 请教一个关于 ffmpeg 的问题 如何下载官方的 ffmpeg 二进制发布 视频模板替换图片,有偿 ffmpeg 过滤器 xfade 自定义动画的研究 关于我在 fcp 导入视频时出现的无法解决的问题,请求各位 ffmpeg 大佬的帮忙 go + ffmpeg pipe 怎么确定当前转码操作已经结束,可以停了 给人声视频加入背景声音,如何做到自动调整背景的音量 使用 ffmpeg 用 aes 加密 m3u8 文件的疑惑 把歌曲压缩至 7 kbps, FFmpeg 之父发布音频压缩工具 TSAC 求助使用 ffmpeg 压缩.mov 视频输出后丢失元数据问题如何解决 homebrew 安装的 fmpeg 转码速度比较慢?直接编译可以提高速度吗? 使用 nodejs 调用和在 macos 终端里直接调用 ffmpeg 转 m3u8,两者花费时间相差巨大 FFmpeg 如何录屏时排除录制指定的某个窗口 ffmpeg 最近大版本发布为啥这么快 ffmpeg 如何加快解码速度?算力不变的情况下,不在乎解码质量
使用 FFmpeg 试图做个人用的转码点播服务端, 但 mpegts 多个...
lslqtz · 2025-01-03 · via FFmpeg

最近试着写了一份简单的个人用途的转码点播服务端, 完成了之前的想法, 它能把当前工作目录下的视频转为 m3u 切片用于点播. 主要是由于部分 BDMV 视频码率过高, 很难远程点播 NAS 上的内容. Jellyfin 等媒体库方案不在考虑范围.

为了实现浏览器 seek 的效果, 选择由服务端通过 PTS 时间点和 timeBase 来根据关键帧提前生成切片范围, 在请求对应切片后实时转码到 mpegts (并通过浏览器预缓冲避免播放卡顿).

但无论如何调节, 似乎偶尔都会出现音频不连续的问题, 转储后发现目标切片似乎时间和请求长度不完全一致, 调节多次参数仍未解决此问题 (为使切片有足够起始长度只测试到 muxdelay 方法可用, -ss/-t 放于输入之后似乎也无果, 包括 -start_at_zero 等的替代也都尝试过, 使用 hls 或 segment 的话较难控制自由点播进度).

由于 nodejs 服务端较难调用 FFmpeg API, 是用的 命令+管道 的方式. 在这种情况下, 有方法可以解决或规避此问题吗?

服务端的完整代码, 其中相关的代码如下:

		let args = [
			'-ss', startTimeStr,
			'-t', durationTimeStr,
			'-accurate_seek',
			'-i', videoPath,
			'-map', '0:v:0',
			'-c:v', encoder,
			'-b:v', String(bitrate),
			'-bsf:v', 'h264_mp4toannexb',
			'-avoid_negative_ts', 'make_zero',
			'-start_at_zero',
			'-muxdelay', delayTimeStr,
			'-muxpreload', delayTimeStr,
			'-f', 'mpegts',
			'pipe:1'
		];

请求方法:
m3u: http://127.0.0.1:8082/video/rttPlaylist?videoPath=1.mkv
segment: http://127.0.0.1:8002/video/rttSegment?videoPath=1.mkv&start=0.0000&duration=4.0000

(BTW: 其实大部分是 Gemini 写的.)