Ole*_*rpa 6 gpu ffmpeg nvidia thumbnails scale
我尝试在 GPU 上加速生成缩略图,因此编译 ffmpeg 3.4.1 并运行命令:
\n\n./ffmpeg -i ~/Videos/1080.mp4 -vf "hwupload_cuda,thumbnail_cuda=100,scale_cuda=107:60,hwdownload,format=yuv420p" -vframes 1 -y ~/Videos/thumbs/thumb%03d.jpg\nRun Code Online (Sandbox Code Playgroud)\n\n但我得到了错误的输出图片(缩略图的颜色是绿色):
\n\n\n\n正确的图像必须是黑色。\n如何使第一张图像具有正确的颜色?
\n\n\n\n日志:-loglevel 详细
\n\nffmpeg version N-89707-g89b84cb Copyright (c) 2000-2018 the FFmpeg developers\n built with gcc 4.8 (Ubuntu 4.8.4-2ubuntu1~14.04.3)\n configuration: --cpu=native --enable-pthreads --extra-version=hd --enable-gnutls --enable-vaapi --enable-vdpau --enable-nonfree --enable-gpl --enable-swscale --enable-libx264 --enable-version3 --enable-nvenc --enable-libnpp --enable-cuda --enable-cuvid --enable-cuda-sdk --enable-filter=scale_cuda --enable-filter=thumbnail_cuda --extra-cflags=-I/usr/local/cuda-8.0/include --extra-ldflags=-L/usr/local/cuda-8.0/lib64\n libavutil 56. 7.100 / 56. 7.100\n libavcodec 58. 9.100 / 58. 9.100\n libavformat 58. 3.100 / 58. 3.100\n libavdevice 58. 0.100 / 58. 0.100\n libavfilter 7. 11.100 / 7. 11.100\n libswscale 5. 0.101 / 5. 0.101\n libswresample 3. 0.101 / 3. 0.101\n libpostproc 55. 0.100 / 55. 0.100\n[h264 @ 0x392ed40] Reinit context to 1920x1088, pix_fmt: yuv420p\nInput #0, mov,mp4,m4a,3gp,3g2,mj2, from \'/home/alex/Videos/1080.mp4\':\n Metadata:\n major_brand : mp42\n minor_version : 0\n compatible_brands: isommp42\n creation_time : 2012-05-30T20:01:34.000000Z\n Duration: 00:01:14.21, start: 0.000000, bitrate: 5476 kb/s\n Stream #0:0(und): Video: h264 (High), 1 reference frame (avc1 / 0x31637661), yuv420p(left), 1920x1080 (1920x1088), 5321 kb/s, 29.97 fps, 29.97 tbr, 60k tbn, 59.94 tbc (default)\n Metadata:\n creation_time : 1970-01-01T00:00:00.000000Z\n handler_name : VideoHandler\n Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 152 kb/s (default)\n Metadata:\n creation_time : 2012-05-30T20:01:34.000000Z\n handler_name : IsoMedia File Produced by Google, 5-11-2011\nStream mapping:\n Stream #0:0 -> #0:0 (h264 (native) -> mjpeg (native))\nPress [q] to stop, [?] for help\n[h264 @ 0x3a38280] Reinit context to 1920x1088, pix_fmt: yuv420p\n[Parsed_thumbnail_cuda_1 @ 0x4e3d8c0] batch size: 100 frames\n[graph 0 input from stream 0:0 @ 0x4e8b640] w:1920 h:1080 pixfmt:yuv420p tb:1/60000 fr:30000/1001 sar:0/1 sws_param:flags=2\n[auto_scaler_0 @ 0x4e8ca00] w:iw h:ih flags:\'bicubic\' interl:0\n[format @ 0x4e8b540] auto-inserting filter \'auto_scaler_0\' between the filter \'Parsed_format_4\' and the filter \'format\'\n[Parsed_scale_cuda_2 @ 0x4e89380] w:1920 h:1080 -> w:107 h:60\n[swscaler @ 0x4ebf0c0] deprecated pixel format used, make sure you did set range correctly\n[auto_scaler_0 @ 0x4e8ca00] w:107 h:60 fmt:yuv420p sar:0/1 -> w:107 h:60 fmt:yuvj420p sar:0/1 flags:0x4\nOutput #0, image2, to \'/home/alex/Videos/thumbs/thumb%03d.jpg\':\n Metadata:\n major_brand : mp42\n minor_version : 0\n compatible_brands: isommp42\n encoder : Lavf58.3.100\n Stream #0:0(und): Video: mjpeg, 1 reference frame, yuvj420p(pc, left), 107x60, q=2-31, 200 kb/s, 29.97 fps, 29.97 tbn, 29.97 tbc (default)\n Metadata:\n creation_time : 1970-01-01T00:00:00.000000Z\n handler_name : VideoHandler\n encoder : Lavc58.9.100 mjpeg\n Side data:\n cpb: bitrate max/min/avg: 0/0/200000 buffer size: 0 vbv_delay: -1\n[Parsed_thumbnail_cuda_1 @ 0x4e3d8c0] frame id #76 (pts_time=2.535867) selected from a set of 100 images\nNo more output streams to write to, finishing.\nframe= 1 fps=0.9 q=3.1 Lsize=N/A time=00:00:02.56 bitrate=N/A speed=2.26x \nvideo:2kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown\nInput file #0 (/home/alex/Videos/1080.mp4):\n Input stream #0:0 (video): 115 packets read (134655 bytes); 101 frames decoded; \n Input stream #0:1 (audio): 1 packets read (9 bytes); \n Total: 116 packets (134664 bytes) demuxed\nOutput file #0 (/home/alex/Videos/thumbs/thumb%03d.jpg):\n Output stream #0:0 (video): 1 frames encoded; 1 packets muxed (1864 bytes); \n Total: 1 packets (1864 bytes) muxed\nRun Code Online (Sandbox Code Playgroud)\n\n更新,工作!\n在hwupload前添加format=nv12
\n\n-vf "format=nv12,hwupload_cuda,thumbnail_cuda,scale_cuda=1280:72\xe2\x80\x8c\xe2\x80\x8b0,hwdownload,format=\xe2\x80\x8c\xe2\x80\x8bnv12"
对于这种情况,最好的方法是在 GPU 上解码。由于 CPU 的负载会减少,因此它会提高性能。您可以使用以下命令来完成此操作:
ffmpeg -hwaccel cuvid -c:v h264_cuvid -i video_source \
-vf "thumbnail_cuda=2,scale_cuda=107:60,hwdownload,format=nv12" \
-vframes 1 frame.jpg
Run Code Online (Sandbox Code Playgroud)
最好在解码步骤中调整大小,如下所示:
ffmpeg -hwaccel cuvid -c:v h264_cuvid -resize 107x60 -i video_source \
-vf "thumbnail_cuda=2,hwdownload,format=nv12" \
-vframes 1 frame.jpg
Run Code Online (Sandbox Code Playgroud)
这些命令显示如何解码 h264 视频,如果您需要解码 mpeg2、hevc、vp8、vp9、vc1 那么您可以从下面的列表中选择合适的解码器:
ffmpeg -decoders | grep cuvid
V..... h264_cuvid Nvidia CUVID H264 decoder (codec h264)
V..... hevc_cuvid Nvidia CUVID HEVC decoder (codec hevc)
V..... mjpeg_cuvid Nvidia CUVID MJPEG decoder (codec mjpeg)
V..... mpeg1_cuvid Nvidia CUVID MPEG1VIDEO decoder (codec mpeg1video)
V..... mpeg2_cuvid Nvidia CUVID MPEG2VIDEO decoder (codec mpeg2video)
V..... mpeg4_cuvid Nvidia CUVID MPEG4 decoder (codec mpeg4)
V..... vc1_cuvid Nvidia CUVID VC1 decoder (codec vc1)
V..... vp8_cuvid Nvidia CUVID VP8 decoder (codec vp8)
V..... vp9_cuvid Nvidia CUVID VP9 decoder (codec vp9)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4441 次 |
| 最近记录: |