SegmentFault 视频转码的问题
2024-02-26T17:45:34+08:00
https://segmentfault.com/feeds/tag/视频转码
https://creativecommons.org/licenses/by-nc-nd/4.0/
FFmpeg合并视频质量太低?
https://segmentfault.com/q/1010000044659598
2024-02-26T17:45:34+08:00
2024-02-26T17:45:34+08:00
web360
https://segmentfault.com/u/web360
0
<p>有个透明视频 text.mov 和一个背景图 bg.jpg(将作为视频背景),合并之后视频的质量明显降低,设置了帧率、码流、编码方式都不行,有没有解决过类似问题的,悬赏千元求解,谢谢诸位!!!</p>
ffmpeg -c:v copy 的话 force_key_frames 就不生效了?
https://segmentfault.com/q/1010000043470823
2023-02-25T10:55:59+08:00
2023-02-25T10:55:59+08:00
wz12v81j
https://segmentfault.com/u/wz12v81j
0
<p>因为生成的 ts 片段时长不是 hls_time 参数指定的,所以加了 force_key_frames,为了加快时长所以选择了不编码 -c:v copy,但是这样 force_key_frames 好像就没效果了,有什么既不牺牲时间 还让 ts 片段时长准确的配置吗</p>
ffmpeg two pass、2pass、-pass编码问题?
https://segmentfault.com/q/1010000043450043
2023-02-21T12:39:08+08:00
2023-02-21T12:39:08+08:00
wz12v81j
https://segmentfault.com/u/wz12v81j
0
<p>我有大概20个T的视频,需要转码成m3u8,用libx264 preset veryslow crf 23,慢的很,但是文件小,质量高,如果20T都用这种方式转,恐怕要转到明年。</p><p>还有一种是用 h264_nvenc,也就是用显卡转,非常快,但是画质很差,配合cq参数,要想达到crf 23的画质级别,文件比原文件还大,除了快一无是处。。。</p><p>后来不断的找资料,看到知乎答主写的一篇文章:GPU 转码效果为什么不如纯 CPU? - 琴梨梨OvO的回答 - 知乎<a href="https://link.segmentfault.com/?enc=eAItmXA%2BseYfGUT1EiAbFA%3D%3D.rpZQIr27qv9dFYu3b9GvA260bhTbOfh1jek13wgLdbbnwibsVmImQd%2FrdsiHxpyY8CxjsLem4D8Z87v6YXWHPA%3D%3D" rel="nofollow">https://www.zhihu.com/questio...</a></p><p>里面提到一种two pass编码,第一遍用显卡生成编码信息,第二遍用处理器处理流数据,即快又清晰,文件也小,把原理都讲出来了。</p><p>然后我试着加了-pass 1 和 -passlogfile 参数,第一遍用h264_nvenc编码,没生成日志文件,有一个log文件还是空的,再用libx264 加上-pass 2 和 -passlogfile 参数,提示是报错打不开文件,肯定了,毕竟没生成日志文件。</p><p>然后我调换了一下顺序,第一遍用libx264,第二遍用h264_nvenc,速度也没见提升啊,而且效果该差还是差。</p><p>给知乎的答主发了私信,但是一直没回。。。<br>我到底该怎么弄这个2pass,求指教</p>
像各云盘一样,视频网站如何做到在线不同清晰度切换?
https://segmentfault.com/q/1010000043374675
2023-02-01T21:44:49+08:00
2023-02-01T21:44:49+08:00
wz12v81j
https://segmentfault.com/u/wz12v81j
1
<p>我看到对于视频网站 切换不同清晰度的解决方案都是弄多个源文件,比如480、720、1080。</p><p>但是-----------<br>我们用百度网盘、阿里网盘、迅雷的云盘,都可以在线播放并且切换不同的清晰度,我们在往云盘空间添加视频的时候,他不可能顺便给你转码多份,然后存起来吧?人家何必浪费这个空间?<br>尤其是迅雷的云盘,我们把视频添加到云盘以后,直接点击就能原画播放,也可以不同清晰度播放。</p><p>那么像这种云盘他们是怎么做到不同清晰度切换的?</p><p>我自己尝试用 FFmpeg 写了一份实时转换的接口,可是当转换的时候,CPU 使用率飙涨,如果各个云盘厂商使用的是这种解决方案,恐怕几十几百个用户在线播放视频,处理器使用率就居高不下了,望大佬指教。</p><p>附我写的代码,语言是 Node.JS,当用户点击进度条,就会把点击的位置,算出时分秒,叫做startTime 字段传给该接口,然后 FFmpeg 从 startTime 转码到视频结尾,比如用户点击了视频的1分30秒处,该视频总时长为10分,那么 startTime 就是0:1:30.000,把 startTime 赋值给seekInput函数,seekInput可以理解为跳过视频开头多久<br><img src="/img/bVc59TE" alt="" title=""></p>
为什么视频经过 ffmpeg 处理后,数据速率变为 0 了?
https://segmentfault.com/q/1010000042357077
2022-08-22T15:06:38+08:00
2022-08-22T15:06:38+08:00
Lyra
https://segmentfault.com/u/lyra_58c2ee6ff305d
0
<p>如图所示:<br><img src="/img/bVc1Tay" alt="" title=""><img src="/img/bVc1TaE" alt="" title=""></p><p>ffmpeg 版本:4.3.1</p><p>源视频格式:flv</p><p>输出视频格式:flv</p><p>编码器:libx264</p><p>所用命令行:</p><pre><code>ffmpeg -i input.flv -vcodec libx264 -profile:v high -level:v 5.2 -acodec copy -crf 21 output.flv</code></pre>
广播电视行业播放系统是如何统一 以帧为单位的播放视频的
https://segmentfault.com/q/1010000039843936
2021-04-18T10:58:51+08:00
2021-04-18T10:58:51+08:00
乐Code
https://segmentfault.com/u/baikuang
0
<p>问题背景:</p><p>时间格式 HH:mm:ss.ff 最后两位是帧数<br>电视播放编排节目要求无缝衔接,最后的帧数位一定是相同进制的<br>比如一个视频播放时间点是: 10:10:10.10 最后是10帧<br>一个25帧率(每秒25帧)的视频 播放时长是:00:00:10.10 ,则下一个播放时间点是 10:10:20.20 </p><p>问题是:<br>如果非25帧率的视频如何做到这种单位的统一和无缝衔接,<br>比如40帧率的视频,最后不到一秒内可能剩下39帧,不能统一到25帧内</p>
海康威视设备网络sdk预览获取的码流如何转换推送到rtmp
https://segmentfault.com/q/1010000037654175
2020-10-29T15:49:52+08:00
2020-10-29T15:49:52+08:00
初窥门径
https://segmentfault.com/u/junpengshan
0
<h3>问题描述</h3><p>海康威视设备网络sdk预览获取的码流如何转换推送到rtmp</p><h3>问题出现的环境背景及自己尝试过哪些方法</h3><p><strong>海康的接口文档</strong><br>预览接口NET_DVR_RealPlay_V40中预览参数的播放窗口句柄(hPlayWnd)可以设置为空值,直接设置回调函数,或者调用预览接口之后,通过NET_DVR_SetRealDataCallBack、NET_DVR_SetStandardDataCallBack设置回调函数,回调获取实时流数据(前两个接口设置的回调获取的是PS封装的码流,后者获取的是标准RTP封装的码流)之后用户后续自己处理,比如二进制流方式写入文件保存成录像或者调用播放库解码显示等操作。 </p><p><img src="/img/bVcH9Gb" alt="image.png" title="image.png"></p><p>目前能得到码流byte数组<br><img src="/img/bVcH9Gs" alt="image.png" title="image.png"><br><img src="/img/bVcH9Gz" alt="image.png" title="image.png"></p><p>之前做过海康的rtsp转rtmp,用的javaCV的<br>FFmpegFrameGrabber 和 FFmpegFrameRecorder</p><p>现在通过获取的byte[] 怎么解析转换为rtmp,求解</p><h3>相关代码</h3><pre><code>/******************************************************************************
*内部类: FRealDataCallBack * 实现预览回调数据 ******************************************************************************/class FRealDataCallBack implements HCNetSDK.FRealDataCallBack_V30 {
/**
* 预览回调 * * @param lRealHandle 当前的预览句柄
* @param dwDataType 数据类型
* @param pBuffer 存放数据的缓冲区指针
* @param dwBufSize 缓冲区大小
* @param pUser 用户数据
*/ @Override
public void invoke(int lRealHandle, int dwDataType, ByteByReference pBuffer, int dwBufSize, Pointer pUser) {
System.out.println(dwBufSize);
byte[] bytes = ref2Bytes(pBuffer, dwBufSize);
if (videoConverter == null) {
//videoConverter = new VideoConverter();
}
// PS封装的码流
if (dwDataType == HCNetSDK.NET_DVR_SYSHEAD) { //系统头
System.out.println("系统头");
} else if (dwDataType == HCNetSDK.NET_DVR_STREAMDATA) { //流数据(包括复合流或音视频分开的视频流数据)
System.out.println("码流数据");
//videoConverter.convert(bytes);
} else if (dwDataType == HCNetSDK.NET_DVR_AUDIOSTREAMDATA) { // 音频数据
System.out.println("音频数据");
} else if (dwDataType == HCNetSDK.NET_DVR_PRIVATE_DATA) { //私有数据,包括智能信息
System.out.println("私有数据,包括智能信息");
} else {
System.out.println("其他: " + dwDataType);
}
System.out.println(HexUtils.bytes2Hex(bytes));
System.out.println("-------------------------------------------------");
}
public byte[] ref2Bytes(ByteByReference buf, int dwBufSize) {
return buf.getPointer().getByteArray(0, dwBufSize); //此处为通过字节指针获取指定长度的字节数组
}
}</code></pre><h3>你期待的结果是什么?实际看到的错误信息又是什么?</h3><p>通过海康sdk的预览回调,获取的码流,转换推送到rtmp</p>
一些大厂的网盘视频压缩是怎么实现的?
https://segmentfault.com/q/1010000014630786
2018-04-27T12:13:04+08:00
2018-04-27T12:13:04+08:00
爱唠嗑的码农
https://segmentfault.com/u/boxxc
0
<p>我们经常上传视频到百度or115等网盘后,可以在线看视频,而他们网站所播放的视频原件是经过压缩处理的,那在这里请问下大家:</p>
<ol>
<li>这些大厂大多都是用什么工具转成可在线观看的视频格式的?</li>
<li>如过有类似的开源工具,可以分享下对应工具名字不?</li>
</ol>
<p>thx</p>
面试:PHP视频在线解码体验优化问题
https://segmentfault.com/q/1010000011354140
2017-09-25T23:52:17+08:00
2017-09-25T23:52:17+08:00
嘟嘟胖胖啊
https://segmentfault.com/u/moon007
0
<p>前一阵面试,被提问到了一道题目:</p>
<pre><code>在线视频播放,用户看的视频需要在线转码,转格式,如何操作设计,能让用户体验更好一些.
这问题当时 的确把我问住了,因为从没接触过此类问题,当时也不会,就随口答的,提前缓存,边播放,边转格式加载.回来查了好多也没找到答案,希望大神们能给个思路.</code></pre>
一个关于短视频转码的问题
https://segmentfault.com/q/1010000009586596
2017-05-28T14:42:13+08:00
2017-05-28T14:42:13+08:00
rocing
https://segmentfault.com/u/rocing
0
<p>现在主流短视频app、在服务端转码、还是本地转码?如果服务端转码 岂不是发出去等一会才能看得到。还是在服务端转码完成之前看的是本地转出来的文件</p>
php利用ffmpeg转码mp4 时间过长
https://segmentfault.com/q/1010000005808611
2016-06-27T12:36:56+08:00
2016-06-27T12:36:56+08:00
stack曲奇
https://segmentfault.com/u/stack_55ffd2fd662bb
0
<p>找了一个ffmpeg支持h264编码的,php调用exec利用ffmpeg转码时间过长,CPU使用率超过80%,问如何解决。<br>转码命令 另外不知道这里面参数的含义是什么?</p>
<pre><code>$command='..\ffmpeg\bin\ffmpeg.exe -i ' . $file . '.' . $ext . ' -vcodec libx264 -vprofile main -preset slow -b:v 400k -maxrate 400k -bufsize 800k -vf scale=-1:480 -threads 0 -acodec libvo_aacenc -ab 128k ' .$file . '.mp4';</code></pre>