我在ubuntu11上安装了ffmpeg 0.8.9
./configure --enable-gpl --enable-nonfree --enable-pthreads --enable-libfaac --enable-libmp3lame --enable-libx264
当我运行它
ffmpeg -y -i test.mp4 -f mpegts -acodec libmp3lame -ar 48000 -ab 64k -vcodec libx264 -b 250k -flags +loop -cmp +chroma -partitions +parti4x4+partp8x8+partb8x8 -subq 5 -trellis 1 -refs 1 -coder 0 -me_range 16 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -bt 250k -maxrate 250k -bufsize 250k -rc_eq 'blurCplx^(1-qComp)' -qcomp 0.6 -qmin 10 -qmax 51 -qdiff 4 -level 30 -aspect 320:240 -g 30 -async 2 a.ts
Run Code Online (Sandbox Code Playgroud)
它说
未知编码器'libx264'
(注意:同样的错误可能会出现avconv)
我怎样才能解决这个问题?谢谢!
我正在寻找一种方法来旋转我的Debian Wheezy系统上使用Nexus 4拍摄的视频.视频以纵向模式拍摄,我想将它们旋转到横向模式.优选地,旋转是命令行驱动的.
我发现以前的几个问题暗示了一个很好的解决方案,但我似乎无法让它运作起来.
首先是这个问题: 使用FFmpeg旋转视频
但它表明ffmpeg已经过时,我应该使用avconv.我发现这个问题详细说明了前进的方向. https://askubuntu.com/questions/269429/how-can-i-rotate-video-by-180-degrees-with-avconv
这让我使用以下命令:
avconv -i original.mp4 -vf "transpose=1" -codec:v libx264 -preset slow -crf 25 -codec:a copy flipped.mp4
Run Code Online (Sandbox Code Playgroud)
然而,这是非常缓慢的(上次测试花了我超过6小时不到3分钟的镜头)并且不会导致可播放的电影.我也在记录输出时出现错误,该错误表明Mb Rate> level limit.
这里有重新编码的问题吗?在应用轮换之前,我是否应首先将视频从手机重新编码为另一种,更"可行"的编码?或者我错过了另一个重点?
我在文件夹中有几个块.
0001.mp4
0002.mp4
0003.mp4
...
0112.mp4
Run Code Online (Sandbox Code Playgroud)
我想将它们合并到full.mp4中
我试着用:
avconv -f concat -i <(printf "file '%s'\n" /root/chunk/*.mp4) -y \
-c copy /root/test/full.mp4
Run Code Online (Sandbox Code Playgroud)
未知输入格式:'concat'
avconv -f concat -i <(printf "%s|" /root/chunk/*.mp4) -y \
-c copy /root/test/full.mp4
Run Code Online (Sandbox Code Playgroud)
未知输入格式:'concat'
avconv -i concat:`ls -ltr /root/chunk/*.mp4 | awk 'BEGIN {ORS="|"} { print $9 }'` \
-c:v copy -c:a copy /root/test/full.mp4
Run Code Online (Sandbox Code Playgroud)
在上一版中,只有一个输入文件被输出.
如何将文件夹中的所有块合并为完整视频?
我不想使用ffmpeg或其他.仅限Avconv.
我正在尝试使用avconv将一堆png转换成视频,png的编号是filename_<number>这样的,我通常只使用命令:
avconv -r 10 -i filename_%d.png -b:v 1000k test.mp4
我现在想要从文件的子集制作一个视频filename_8- filename_50比方说,所以我将这些文件复制到一个新目录并尝试了相同的命令,但现在我收到了错误:
filename_%d.png: No such file or directory
Run Code Online (Sandbox Code Playgroud)
我认为这是因为编号不是从1开始的?
我怎样才能做到这一点?
这是我知道将DVD图像转换为另一个视频格式(vg MP4)的过程:
VTS_01_n个.VOB文件VIDEO_TS(对于n > = 0)连接到单个VOB文件中.avconv或ffmpeg将该VOB转换为另一种格式.到目前为止一直很好,但现在我想用字幕转换DVD图像.据我所知MKV格式支持字幕,所以它似乎是一个明显的选择.或者,我可以使用任何其他具有硬字幕的格式(字幕作为视频图像的一部分).
但是,DVD图像中的字幕编码是dvdsub,我得到以下错误
Only SUBTITLE_ASS type supported.
Subtitle encoding failed
Run Code Online (Sandbox Code Playgroud)
但是,当avconv -codecs我跑步时,我得到:
...
DES dvdsub DVD subtitles
...
Run Code Online (Sandbox Code Playgroud)
而-c:s copy开关,虽然它可以防止命令失败,但它似乎没有产生玩家可以理解的副标题.
那么,如何使用创建ass字幕?dvdsubavconv
我的VOB文件有八个字幕通道和两个音频通道.Ubuntu视频应用程序不显示任何字幕,只有第一个音频通道似乎正在工作,DVD图像可能会被破坏.
另一个用于双层DVD的文件显示字幕编码错误,但是当使用该-c:s copy开关时,它还会显示:
Application provided invalid, non monotonically increasing dts to muxer in stream 2: 49 >= 49
av_interleaved_write_frame(): Invalid argument
Run Code Online (Sandbox Code Playgroud)
提前感谢您提供有关如何解决这些问题的任何想法.
(我使用的是Ubuntu,ffmpeg别名是avconv.我知道可以安装真正的ffmpeg,但到目前为止我还没有这样做.)
更新:命令和控制台输出: …
查看avconv网站,似乎有大量的视频转换选项.
但是,我迷失在所有技术细节中.
有没有一种简单的方法将.mov转换为.mp4(或h264)?
如果它有点有损,我很高兴.
如果它有助于我使用Ubuntu 12.04.2 LTS.
使用avconv(甚至ffmpeg,所以我可以用作参考),如何通过仅从另一个视频中获取锚点/参考帧来创建时间推移视频?我发现的大部分信息都是关于如何通过组合图像来创建时间推移视频,我想通过从视频中提取帧来实现.比方说,如果一个视频在30 FPS下长达30秒,我想从900帧(900/60 =每15秒)中取出60帧来产生2秒的视频.
我有一段代码,它采用图像流并使用x264将它们写入文件进行编码和avconv.相关位如下
// Setup encoder
sprintf(cmd, "avconv -i pipe: -vcodec copy %s", filename);
fp = popen(cmd, "w");
x264_param_default_preset(¶ms, "ultrafast", "stillimage,zerolatency");
params.i_fps_num = fps;
params.i_fps_den = 1;
x264_picture_alloc(&in, X264_CSP_I420, width, height);
params.i_csp = X264_CSP_I420;
in.img.i_csp = X264_CSP_I420;
x.params.b_vfr_input = 0;
in.i_pts = -1;
out.i_pts = -1;
params.i_width = width;
params.i_height = height;
encoder = x264_encoder_open(¶ms);
in.img.i_plane = 1;
in.img.i_stride[0] = width;
ret = x264_encoder_headers(encoder, &nals, &nheader);
header_size = nals[0].i_payload + nals[1].i_payload + nals[2].i_payload;
fwrite(nals[0].p_payload, header_size, 1, fp);
...
// Loop body
++in.i_pts; …Run Code Online (Sandbox Code Playgroud) 我正在使用HTML5视频标记,如下所示:
<video playsInline muted autoPlay className='video' preload='auto' loop='loop'>
<source src="intro-m-no-audio.mp4" type='video/mp4' />
</video>
Run Code Online (Sandbox Code Playgroud)
如您所见,该muted属性已设置.此外,我确保视频没有更多的音轨:
avconv -i intro-m.mp4 -vcodec copy -an intro-m-no-audio.mp4
Run Code Online (Sandbox Code Playgroud)
这给了:
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'intro-m-no-audio.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
creation_time : 2017-04-13 15:01:27
encoder : Lavf53.21.1
Duration: 00:00:08.40, start: 0.000000, bitrate: 2104 kb/s
Stream #0.0(und): Video: h264 (Baseline), yuv420p, 960x540 [PAR 1:1 DAR 16:9], 2102 kb/s, 25 fps, 25 tbr, 25k tbn, 50 tbc
Metadata:
creation_time : 2017-04-13 15:01:27
Run Code Online (Sandbox Code Playgroud)
如您所见,不再存在音频流.
是的,每次我在Android …
首先,我从图像制作视频的经验几乎为零。
我拥有的是一组 BMP 时间戳图像,我想从中生成视频。由于时间戳不是等距间隔,我不能简单地使用从图像创建恒定帧速率视频的软件。
一个可能的解决方案是以固定的时间间隔创建人工图像,但如果我无法制作 VFR 视频,我更愿意将其作为最后的手段。
关于如何实现我想要的任何建议?