有人知道如何使用ffmpeg(或其他cli)将两个(或更多)视频拼接在一起吗?这是假设所有的影片都在相同的格式和所使用的视频格式允许无损拼接(无转码,刚刚结束对终端的拼接).
您是否知道任何允许我使用RTMP或RTSP通信协议从C#发送编码音频/视频流到流媒体服务器的库?
我正在编写一个python/django应用程序,它需要进行图像处理,然后将图像组合成一个视频(每个图像都是一个帧).图像处理很容易.我正在使用PIL,但是对于转换为视频部分,我被卡住了.我发现pyffmpeg但似乎只是将视频解码为帧,而不是相反.虽然我可能错过了什么.我也听说pythonMagick(imagemagick包装器)可以做到这一点,但我似乎无法在文档中找到有关编码的任何内容.
这是在linux服务器上运行的,必须是python(因为这是应用程序所在的).
我该怎么用?
我正在尝试编写一个脚本,将 2 个单独的视频文件合并为 1 个更宽的视频文件,其中两个视频同时播放。我已经大致弄清楚了,但是当我查看最终输出时,我正在叠加的视频非常慢。
这是我在做什么:
将左侧视频展开为最终视频尺寸
ffmpeg -i left.avi -vf "pad=640:240:0:0:black" left_wide.avi
将右侧视频叠加在左侧视频的顶部
ffmpeg -i left_wide.avi -vf "movie=right.avi [mv]; [in][mv] overlay=320:0"combined_video.avi
在生成的视频中,右侧视频的播放速度约为左侧视频的一半。知道如何让这些文件同步吗?
我有 30 张分辨率为 480 x 640 的 JPEG 图像 (.jpg)。每张图像大约需要 20KB(所有图像大约需要 600KB)。
我正在使用FFmpeg命令将这些图像编码为H264格式的视频。
我需要非常快地完成此操作 - 大约 1 秒。
使用经典命令:
ffmpeg -y -f image2 -r 1/5 -i image_%d.jpg -c:v libx264 -r 30 video.mp4
Run Code Online (Sandbox Code Playgroud)
大约需要90 秒。
添加后 -preset ultrafast:
ffmpeg -y -f image2 -r 1/5 -i image_%d.jpg -c:v libx264 -preset ultrafast -r 30 video.mp4
Run Code Online (Sandbox Code Playgroud)
编码大约需要15 秒,这要好得多,但仍然不够
我也尝试过其他参数,例如:
-profile:v baseline
-qscale:v
-b:v 1000k
-crf 24
Run Code Online (Sandbox Code Playgroud)
但编码时间不低于 10 秒。
我不熟悉 FFmpeg 命令,也不熟悉我需要使用的参数,这就是我在这里发布这个问题的原因。
视频质量需要好,不需要完美。
请注意:我正在使用 ProcessBuilder …
如何计算/检测原始H.264比特流中的帧(图片)?我知道有5种VCL NALU类型,但我不知道如何rec(k)将它们的序列识别为访问单元.我想检测一个帧意味着检测一个访问单元作为访问单元
一组NAL单元,它们按解码顺序连续并且只包含一个主要编码图像.除了主要编码图像之外,访问单元还可以包含一个或多个冗余编码图像,一个辅助编码图像,或不包含编码图像的切片或切片数据分区的其他NAL单元.访问单元的解码总是产生解码图像.
我希望它知道什么是实时流出服务器的FPS.
我正在尝试找出在 REHL 上进行高质量屏幕截图的命令。
我尝试了各种选择,但没有一个真正奏效。质量不够好。我对 ffmpeg 很陌生,不太了解所有不同的标志。所以任何帮助将不胜感激!
我试过的命令:
ffmpeg -y -f x11grab -r 30 -s 1920x1080 -i :0.0+0,0 -vcodec libx264 -strict -2 -b:v 16M output.mov
Run Code Online (Sandbox Code Playgroud)
我尝试的第一个命令。奇怪的是它似乎没有保留指定的比特率-b:v 16M。输出视频的比特率仅为 2mb/s。这不是在进行屏幕捕获时指定比特率的正确方法吗?
ffmpeg -f x11grab -s 1920x1080 -r 30 -i :0.0 -qscale 0 -vcodec huffyuv output.mov
Run Code Online (Sandbox Code Playgroud)
huffyuv 编解码器应该是无损的,但质量似乎并不比 libx264 输出好。
ffmpeg -f x11grab -r 30 -s 1920x1080 -i :0.0+0,0 -vcodec copy -pix_fmt yuv420p -qscale 0 -an output.mkv
ffmpeg -f rawvideo -pix_fmt yuv420p -s:v 1920x1080 -r 30 -i output.mkv -an -c:v libx264 -qscale 0 …Run Code Online (Sandbox Code Playgroud) 我无法理解什么是VBV(视频缓冲验证器)以及它与maxrate有什么关系.
当我使用此命令时:
ffmpeg -i input.mp4 -crf 21 -maxrate 750k -bufsize 750k -codec:v:0 libx264 -s 640x360 -r 30 output.mp4
Run Code Online (Sandbox Code Playgroud)
output.mp4视频的比特率约为730 kb/s
但是当我使用此命令时(相同的命令但使用-bufsize 5000k):
ffmpeg -i input.mp4 -crf 21 -maxrate 750k -bufsize 5000k -codec:v:0 libx264 -s 640x360 -r 30 output.mp4
Run Code Online (Sandbox Code Playgroud)
output.mp4视频的比特率超过750kb/s(约800-900 kb/s).
为什么会这样?为什么我们需要bufsize?bufsize有什么作用?
我在ffmpeg中使用libx264编码视频,我使用了下面的配置。
enCodecContext->bit_rate = 300000;
enCodecContext->width = 80;
enCodecContext->height = 60;
enCodecContext->time_base = (AVRational) {1, 25};
enCodecContext->gop_size = 10;
enCodecContext->max_b_frames = 1;
enCodecContext->pix_fmt = PIX_FMT_YUV420P;
enCodecContext->qcompress = 0.6;
av_opt_set(enCodecContext->priv_data, "preset", "slow", 0);
Run Code Online (Sandbox Code Playgroud)
但是当我调用avcodec_encode_video2with 时enCodecContext,出现错误Input picture width (40) is greater than stride (0)。
avcodec_encode_video2(enCodecContext, &filteredAVPacket, pFilteredAVFrame, &got_packet_ptr);
Run Code Online (Sandbox Code Playgroud)
该pFilteredAVFrame->width和pFilteredAVFrame->height是80和60分别。
配置时我是否遗漏了一些东西libx264,我怎样才能获得一个可行的配置libx264来编码我的视频?
我目前有以下代码,可以在选择后压缩视频
func compressVideo(inputURL: NSURL, outputURL: NSURL, handler:(session: AVAssetExportSession)-> Void)
{
var urlAsset = AVURLAsset(URL: inputURL, options: nil)
var exportSession = AVAssetExportSession(asset: urlAsset, presetName: AVAssetExportPresetMediumQuality) // AVAssetExportPresetHighestQuality)
exportSession!.outputURL = outputURL
exportSession!.outputFileType = AVFileTypeMPEG4 //AVFileTypeQuickTimeMovie
exportSession!.shouldOptimizeForNetworkUse = true
exportSession!.exportAsynchronouslyWithCompletionHandler { () -> Void in
handler(session: exportSession!)
}
}
Run Code Online (Sandbox Code Playgroud)
有什么方法可以将所选视频重新编码为AVVideoCodecH264或其他方法?由于在HTML5播放器(非野生动物园)或Android手机上播放音频时,音频已关闭。
视频文件本身是从Snapchat导出的.mov格式,并且视频中包含照片片段时,会显示音频同步。