ffmpeg图片转视频突然不能转h.265了

众所周知,从某些视频网站下载的视频是分段的。比如新浪视频每隔6分钟分段,俗称“”。
现在的任务是将这些视频片段合并起来,并且尽量无损。
方法一:FFmpeg concat 协议
对于 MPEG 格式的视频,可以直接连接:
-i "concat:input1.mpg|input2.mpg|input3.mpg" -c copy output.mpg
对于非 MPEG 格式容器,但是是 MPEG 编码器(H.264、DivX、XviD、MPEG4、MPEG2、AAC、MP2、MP3 等),可以包装进 TS 格式的容器再合并。在新浪视频,有很多视频使用 H.264 编码器,可以采用这个方法
-i input1.flv -c copy -bsf:v h264_mp4toannexb -f mpegts input1.ts
-i input2.flv -c copy -bsf:v h264_mp4toannexb -f mpegts input2.ts
-i input3.flv -c copy -bsf:v h264_mp4toannexb -f mpegts input3.ts
-i "concat:input1.ts|input2.ts|input3.ts" -c copy -bsf:a aac_adtstoasc -movflags +faststart output.mp4
保存 QuickTime/MP4 格式容器的时候,建议加上 -movflags
+faststart。这样分享文件给别人的时候可以边下边看。
方法二:FFmpeg concat 分离器
这种方法成功率很高,也是最好的,但是需要 FFmpeg 1.1 以上版本。先创建一个文本文件filelist.txt:
'input1.mkv'
'input2.mkv'
'input3.mkv'
-f concat -i filelist.txt -c copy output.mkv
注意:使用 FFmpeg concat 分离器时,如果文件名有奇怪的字符,要在 filelist.txt 中转义。
方法三:Mencoder 连接文件并重建索引
这种方法只对很少的视频格式生效。幸运的是,新浪视频使用的 FLV 格式是可以这样连接的。对于没有使用 MPEG 编码器的视频(如 FLV1 编码器),可以尝试这种方法,或许能够成功。
-forceidx -of lavf -oac copy -ovc copy -o output.flv input1.flv input2.flv input3.flv
方法四:使用 FFmpeg concat 过滤器重新编码(有损)
语法有点复杂,但是其实不难。这个方法可以合并不同编码器的视频片段,也可以作为其他方法失效的后备措施。
-i input1.mp4 -i input2.webm -i input3.avi -filter_complex '[0:0] [0:1] [1:0] [1:1] [2:0] [2:1] concat=n=3:v=1:a=1 [v] [a]' -map '[v]' -map '[a]' &编码器选项& output.mkv
如你所见,上面的命令合并了三种不同格式的文件,FFmpeg concat 过滤器会重新编码它们。注意这是有损压缩。
[0:1] [1:0] [1:1] [2:0] [2:1] 分别表示第一个输入文件的视频、音频、第二个输入文件的视频、音频、第三个输入文件的视频、音频。concat=n=3:v=1:a=1 表示有三个输入文件,输出一条视频流和一条音频流。[v]
[a] 就是得到的视频流和音频流的名字,注意在 bash 等 shell 中需要用引号,防止通配符扩展。
以上三种方法,在可能的情况下,最好使用第二种。第一种次之,第三种更次。第四种是后备方案,尽量避免。规格不同的视频合并后可能会有无法预测的结果。有些媒体需要先分离视频和音频,合并完成后再封装回去。对于 Packed B-Frames 的视频,如果封装成 MKV 格式的时候提示 Can't
write packet with unknown timestamp,尝试
FFMpeg无损合并视频的多种方法 python
方法二确实可行 方法1 我试着不行 需要的话自己试试把
python 的调用cmd命令是这么写的
res=os.system(&ifconfig&);
众所周知,...
m3u8文件下载合并的一种方法
现在很多视频网站都把整个视频文件拆分成一个个视频流文件(ts),这些视频流文件的下载地址会放在一个文件中,通常叫做*.m3u8。我们要想下载整个视频文件可以先把这些视频片段下载下来,然后进行拼接,合成...
【ffmpeg】——批量合并视频
最近在做一个项目,关于视频下载的,需要同时对多个视频进行处理,这时我们用到了一个工
具——ffmpeg,工具具体的安装步骤大家可以度娘,在这就不一一介绍啦。
下面进入正题,...
使用ffmpeg的concat可以实现简单的流文件合并功能。
使用ffmpeg的concat可以实现简单的流文件合并功能。
./ffmpeg -i concat:&out002.ts|out003.ts|out004.ts& -acodec cop...
linux下ffmpeg安装实现音频拼接
前言:因为需要支持MP3格式,需要提前安装MP3编码库,作者在这里走的弯路,重新编译的ffmpeg1.下载安装MP3编码库因为FFmpeg默认只支持mp3的解码,不支持mp3编码。如果想把提取出来的音...
ffmpeg concat过滤器解析
ffmpeg里面concat的作用是连接两个过滤器,如ffmpeg -i /home/media/Videos/mytestvideo/input_red.mp4 -i /home/media/Vid...
FFMPEG学习(一)---【命令行】采集视频和音频
FFMPEG常识
参考:ffmpeg-比特率,帧率和文件大小
下载ffmpeg安装包
加入环境变量:
e:\ProgramFiles_D\ffmpeg\bin...
没有更多推荐了,这是手机直播推送流:
https://github.com/wangzuxing/MyFFmpegH264H265YUVOpenGL
https://github.com/jacke121/MyFFmpegH264H265YUVOpenGL
ubuntu 下 X265库 和 libde265库的编译
最近要用到265编解码器,在x265的官网上下载了x265的库,但只包括编码库,没有解码库,接着在网上找到了libde265库,这是针对x265的一个开源的解码库,经过我的编译后,用一个yuv视频进行...
最新版本的ffmpeg 支持 libh265,但是还是初级测试阶段
在linux 上安装ffmpeg 支持h265编码器按照以下步骤:
Anyhow here are the simple ste...
呼,万恶的编译终于都过了,现在想想其实不管用什么编译器道理都是一样的,都是要把要用的交叉编译器以及它的地址信息等告诉给编译器,在cmake编译器下就是在cmakelist.txt下设置交叉编译的环境,...
*投诉人联系方式:
*版权证明: 只允许上传png/jpeg/jpg/gif格式的图片,且小于3M
*详细原因:
交 &em&libde265&/em& HEVC 3积分 立即下载 ...
个是有两个版本,一个是国内人搞的,是国外公司搞的
1.国外公司版本
只是一个编码器,目前没有支持解码
开发语言 c++
web url: www.x265.org
最近要用到265编解码器,在x265的官网上下载了x265的库,但只包括编码库,没有解码库,接着在网上找到了libde265库,这是针对x265的一个开源的解码库,经过我的编译后,用一个yuv视频进行...
转自:http://blog.csdn.net/tttyd/article/details/
个是有两个版本,一个是国内人搞的,是国外公司搞的
1.国外公司版...
没有更多推荐了,&>&H.265/HEVC 视频播放器
H.265/HEVC 视频播放器
上传大小:43.39MB
利用 ffmpeg2.1 库来开发 H.265/HEVC 视频播放器,代码简单明了,是一个非常适合学习使用的 demo 程序,能够帮助朋友们快速开发,此代码在 VS2010 下编译通过,测试可用!
综合评分:3
{%username%}回复{%com_username%}{%time%}\
/*点击出现回复框*/
$(".respond_btn").on("click", function (e) {
$(this).parents(".rightLi").children(".respond_box").show();
e.stopPropagation();
$(".cancel_res").on("click", function (e) {
$(this).parents(".res_b").siblings(".res_area").val("");
$(this).parents(".respond_box").hide();
e.stopPropagation();
/*删除评论*/
$(".del_comment_c").on("click", function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_invalid/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parents(".conLi").remove();
alert(data.msg);
$(".res_btn").click(function (e) {
var parentWrap = $(this).parents(".respond_box"),
q = parentWrap.find(".form1").serializeArray(),
resStr = $.trim(parentWrap.find(".res_area_r").val());
console.log(q);
//var res_area_r = $.trim($(".res_area_r").val());
if (resStr == '') {
$(".res_text").css({color: "red"});
$.post("/index.php/comment/do_comment_reply/", q,
function (data) {
if (data.succ == 1) {
var $target,
evt = e || window.
$target = $(evt.target || evt.srcElement);
var $dd = $target.parents('dd');
var $wrapReply = $dd.find('.respond_box');
console.log($wrapReply);
//var mess = $(".res_area_r").val();
var mess = resS
var str = str.replace(/{%header%}/g, data.header)
.replace(/{%href%}/g, 'http://' + window.location.host + '/user/' + data.username)
.replace(/{%username%}/g, data.username)
.replace(/{%com_username%}/g, data.com_username)
.replace(/{%time%}/g, data.time)
.replace(/{%id%}/g, data.id)
.replace(/{%mess%}/g, mess);
$dd.after(str);
$(".respond_box").hide();
$(".res_area_r").val("");
$(".res_area").val("");
$wrapReply.hide();
alert(data.msg);
}, "json");
/*删除回复*/
$(".rightLi").on("click", '.del_comment_r', function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_comment_del/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parent().parent().parent().parent().parent().remove();
$(e.target).parents('.res_list').remove()
alert(data.msg);
//填充回复
function KeyP(v) {
var parentWrap = $(v).parents(".respond_box");
parentWrap.find(".res_area_r").val($.trim(parentWrap.find(".res_area").val()));
评论共有1条
综合评分:
积分/C币:18
综合评分:
积分/C币:3
综合评分:
积分/C币:7
liulyw_1978
综合评分:
积分/C币:3
综合评分:
积分/C币:3
VIP会员动态
CSDN下载频道资源及相关规则调整公告V11.10
下载频道用户反馈专区
下载频道积分规则调整V1710.18
spring mvc+mybatis+mysql+maven+bootstrap 整合实现增删查改简单实例.zip
资源所需积分/C币
当前拥有积分
当前拥有C币
输入下载码
为了良好体验,不建议使用迅雷下载
H.265/HEVC 视频播放器
会员到期时间:
剩余下载个数:
剩余积分:0
为了良好体验,不建议使用迅雷下载
积分不足!
资源所需积分/C币
当前拥有积分
您可以选择
程序员的必选
绿色安全资源
资源所需积分/C币
当前拥有积分
当前拥有C币
为了良好体验,不建议使用迅雷下载
资源所需积分/C币
当前拥有积分
当前拥有C币
为了良好体验,不建议使用迅雷下载
资源所需积分/C币
当前拥有积分
当前拥有C币
您的积分不足,将扣除 10 C币
为了良好体验,不建议使用迅雷下载
无法举报自己的资源
你当前的下载分为234。
你还不是VIP会员
开通VIP会员权限,免积分下载
你下载资源过于频繁,请输入验证码
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
若举报审核通过,可返还被扣除的积分
被举报人:
请选择类型
资源无法下载 ( 404页面、下载失败、资源本身问题)
资源无法使用 (文件损坏、内容缺失、题文不符)
侵犯版权资源 (侵犯公司或个人版权)
虚假资源 (恶意欺诈、刷分资源)
含色情、危害国家安全内容
含广告、木马病毒资源
*投诉人姓名:
*投诉人联系方式:
*版权证明:
*详细原因:
H.265/HEVC 视频播放器本文详细介绍如何使用ffmpeg把H265解码成YUV420P格式格式的数据。
首先由于采用VS2017开发,我禁用了一个4996的错误:
#pragma error(disable:4996) //全部禁用
#pragma warning(disable:4996)
ffmpeg接收H265的数据,之能一帧一帧发送,不能接收步全的数据,所以需要先把H265解析成一帧数据。
这里我的思路是先建一个大大的缓存,把H265数据保存进来,然后再通过nul头(0x00 0x00 0x00 0x01)来区分每一帧数据。
这里和H264的解析基本完全一样,每一帧的开头4个字节一定是nul头。
char H265Buf[1024 * 512];
int H265Lenth = 0;
while (true)
int iReadSize = fread(frame_buf, 1, 512, InFile);
if (iReadSize &= 0)
memcpy(H265Buf+ H265Lenth, frame_buf, iReadSize);
H265Lenth = H265Lenth + iReadS
//获取一帧数据
while (true)
bool OneFrame =
if (H265Lenth&=8)
for (int i = 4; i & H265Lenth-4; i++)
if (H265Buf[i] == 0x00 && H265Buf[i+1] == 0x00&& H265Buf[i+2] == 0x00&& H265Buf[i+3] == 0x01)
H265Lenth = H265Lenth -
memcpy(H265Buf, H265Buf+i, H265Lenth);
OneFrame =
if (OneFrame)
下面重点介绍使用ffmpeg解析H265
首先各种初始化:
codec = avcodec_find_decoder(AV_CODEC_ID_H265);
c = avcodec_alloc_context3(codec);
if (avcodec_open2(c, codec, NULL) & 0) {
fprintf(stderr, "Could not open codec\n");
丢入H265数据
ret = avcodec_send_packet(c, packet);
获取Yuv420P数据
int ret = avcodec_receive_frame(c, frame);
这里获取到的数据,是保存在AVFrame结构体里 面的,这里我琢磨了好久。
AVFrame有一个成员变量如下,来保存数据,其实使用到了data[0],data[1],data[2]
uint8_t *data[AV_NUM_DATA_POINTERS];
data[0] 保存Y信息
data[1] 保存U信息
data[2] 保存V信息。
但是,不要简单的认为把数据直接写入文件,就是YUV420P的文件了,其实是不对的。这里有富余数据,每一行的Y信息,举个例子,是480,但是他保存所使用的大小为512大小,
可能是为了更快的计算吧,他的每一行的信息,不是绝对信息,而是2的多少次方的放大信息,我们在保存的时候,需要把多余的数据剔除掉。
其中每一行他使用的大小,在linesize里面标识,linesize[0],linesize[1],linesize[2]
int linesize[AV_NUM_DATA_POINTERS];
linesize[0] 保存Y的一行的大小
linesize[1] 保存U的一行的大小
linesize[2] 保存V的一行的大小
想要得到正确的YUV420P的数据,需要进行转换:
int a = 0,
for (i = 0; i&frame-& i++)
memcpy(m_YuvBuf + a, frame-&data[0] + i * frame-&linesize[0], frame-&width);
a += frame-&
for (i = 0; i&frame-&height / 2; i++)
memcpy(m_YuvBuf + a, frame-&data[1] + i * frame-&linesize[1], frame-&width / 2);
a += frame-&width / 2;
for (i = 0; i&frame-&height / 2; i++)
memcpy(m_YuvBuf + a, frame-&data[2] + i * frame-&linesize[2], frame-&width / 2);
a += frame-&width / 2;
YUV420P里面,Y的大小是U和V的4被,可以理解为一帧图像:
YYYYYYYYUUVV
先是8个Y值,在2个U,在2个V,顺序排列。
至此,H265保存为YUV420P搞定。
为了便于大家学习和交流,把工程demo上传如下:
采用VS2017开发 C++开发。
新版的ffmpeg 2.1已经加入了对最新视频编解码标准H.265/HEVC的支持,因此可以解码该格式的视频了。这对视频产业来说将起到一种巨大的推动作用。本文所示的demo是一个简单的H.265格式视...
ffmpeg的开源代码自行在ffmpeg的官方下载(http://ffmpeg.org/)
编译之前需要先安装gcc编译器,本文使用的是arm-linux的交叉编译器,这里简称ar...
突然发现自己曾经做过的东西要记录下来,这样以后就不至于找不到了,早这样该多好。今天整理了一下之前做的demo,希望对你们也有用。如果哪里移植不好。加我qq:
这只是个个简单的demo...
ffmpeg -i film1.ts -f mpegts -an -c:v libx265 -f hevc fm.h265
前一阵子做过一个基于FFmpeg的视频编码器的例子:最简单的基于FFMPEG的视频编码器(YUV编码为H.264)在该例子中,可以将YUV像素数据(YUV420P)编码为H.264码流。因为如今FFm...
OS:CentOS6.4-64bit
--------编译 FFMPEG with h265--------
1.安装 hg tool
#yum install hg
Intel QSV (Quick Sync Video) is a technology which allows decoding and encoding using r...
最新版本的ffmpeg 支持 libh265,但是还是初级测试阶段
在linux 上安装ffmpeg 支持h265编码器按照以下步骤:
Anyhow here are the simple ste...
FFMPEG以其强大的功能而在音视频领域著称,更重要的是它还是开源的!音视频格式转换、裁剪、拼接、提取字幕或某音轨等等,它都能胜任,可谓一把瑞士军刀,小巧但功能强大,是音视频研究的必备利器之一。...
没有更多推荐了,如何使用ffmpeg中的265_百度知道
如何使用ffmpeg中的265
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
开始-》运行-》输入CMD-&回车 输入cd H:\ffmpeg(H:\ffmpeg是你存放文件的路径) 接着在窗口输入ffmpeg 参数就可以了
为你推荐:
其他类似问题
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 ffmpeg流转flv源码 的文章

 

随机推荐