Вот набросал батник для Windows чтобы делать такую длинную картинку. Этот батник делает разбитие на кадры через ffmpeg и склейку через imagemagick, попутно вычисляя высоту готовой картинки, и формирует правильное имя файла для скрпипта.
Батник должен запускаться из каталога, в который скопированы FFMPEG (в подкаталог ffmpeg, а в нем уже должен быть bin, и в нем ffmpeg.exe) и IMAGEMAGICK (в подкаталог imagemagick, а в нем уже convert.exe). Запуск батника без параметров дает подсказку.
Перед запуском удалите все картинки в выходном каталоге!
Параметры:
input_file_name - входной видео-файл;
output_folder - каталог, куда будет класться длинная картинка и промежуточные кадры;
start_time - время начала вырезанного куска в формате MM:SS;
stop_time - время конца вырезанного куска в формате MM:SS;
output_frames - количество кадров в длинной картинке;
output_width - ширина одного кадра в длинной картинке;
[ffmpeg_options] - необязательные параметры FFMPEG (например, для вырезание участка изображения (crop)).
@rem Run without parameters for help!
@set CMD_NAME=%~nx0%
@set DIR=%~dp0%
@set FFMPEG=%DIR%ffmpeg
@set IMAGEMAGICK=%DIR%imagemagick
@if [%6] EQU [] goto Usage
@set inputfile=%1
@set outputdir=%2
@set tStart=%3
@set tStop=%4
@set resultFrames=%5
@set width=%6
@SHIFT
@SHIFT
@SHIFT
@SHIFT
@SHIFT
@SHIFT
@set OPTIONS=
@:loop1
@if [%1] == [] goto end_loop1
@set OPTIONS=%OPTIONS% %1
@SHIFT
@goto loop1
@:end_loop1
@echo OPTIONS=%OPTIONS%
rem goto :Convert
@setlocal ENABLEDELAYEDEXPANSION
@for /F "tokens=1* delims=:" %%a in ("!tStart!") do @set /a tStartSec=%%a*60+%%b
@echo Start=!tStartSec!
@for /F "tokens=1* delims=:" %%a in ("!tStop!") do @set /a tStopSec=%%a*60+%%b
@echo Stop=!tStopSec!
@set /a tLen=tStopSec-tStartSec
@echo Length=!tLen!
@set /a resultFPS=(1000*resultFrames+(tLen/2))/tLen
@set resultFPS=000%resultFPS%
@echo resultFPS*1000=%resultFPS%
@set resultFPS=%resultFPS:~0,-3%.%resultFPS:~-3%
@echo resultFPS=%resultFPS%
@setlocal DISABLEDELAYEDEXPANSION
@%FFMPEG%\bin\ffmpeg.exe -i %inputfile% -r %resultFPS% -ss %tStartSec% -to %tStopSec% %OPTIONS% -f image2 %outputdir%\i%%04d.jpeg
@:Convert
@echo Set current path: %outputdir%
@pushd %outputdir%
@set fileSet=
@setlocal ENABLEDELAYEDEXPANSION
@for %%i in (*.jpeg) do @set fileSet=!fileSet! %%i
@set fileSet=%fileSet:~1%
@echo %fileSet% | %IMAGEMAGICK%\convert @- -sharpen 0x1.0 -filter Lanczos -distort resize 640x +append out.jpg
@for /f "tokens=*" %%a in ('@%IMAGEMAGICK%\identify -format "%%[fx:h]" out.jpg') do @set height=%%a
@echo Height=%height%
@set output_name=out_%resultFrames%_%width%_%height%.jpg
@ren out.jpg %output_name%
@popd
@echo -------------------------------------------------------------
@echo Result image: %outputdir%\%output_name%
@goto Quit
@:Usage
@echo ----------------------------------------------------------------------
@echo This script makes a scrollable picture from video for SovGVD's script.
@echo Made by Andrey Prikupets, 2014. Many thanks to SovGVD!
@echo See more:
@echo ----------------------------------------------------------------------
@echo Usage:
@echo %CMD_NAME% input_file_name output_folder start_time stop_time output_frames output_width [ffmpeg_options]
@echo Note:
@echo start_time and stop_time have format: MM:SS
@echo Example:
@echo %CMD_NAME% C:\Capture\gopr7489.mp4 C:\VideoOut 1:38 1:55 36 640 -vf "crop=iw-200:ih-200:100:200"
@echo Utilities:
@echo ffmpeg should be copied to: %FFMPEG%
@echo imagemagic should be copied to: %IMAGEMAGICK%
:Quit
Comments
Раз пошла такая пьянка, то вот тут sovgvd.info/portfolio/rotate/upload.php можно загружать свои картинки (ограничение 5мб), после успешной загрузки появится ссылка на просмотр, которой можно поделиться с кем нибудь =)
Я вот думаю надо редактор небольшой намутить, чтобы для каждой фотки выставлять некий центр объекта и чтобы всё это добро автоматически выравнивалось к центру и кадрировалось.
{"assets_hash":"a8b26fa7f6e768b07a72c8c9aadb9422","page_data":{"users":{"41b8a4ac3df9550077792e83":{"_id":"41b8a4ac3df9550077792e83","hid":5271,"name":"Prikupets","nick":"Prikupets","avatar_id":null,"css":""},"4d4325cb3df9550077756c92":{"_id":"4d4325cb3df9550077756c92","hid":79585,"name":"SovGVD","nick":"SovGVD","avatar_id":null,"css":""}},"settings":{"blogs_can_create":false,"blogs_mod_can_delete":false,"blogs_mod_can_hard_delete":false,"blogs_mod_can_add_infractions":false,"can_report_abuse":false,"can_vote":false,"can_see_ip":false,"blogs_edit_comments_max_time":30,"blogs_show_ignored":false,"blogs_reply_old_comment_threshold":30,"votes_add_max_time":168},"entry":{"_id":"53ae9195997073007710fe49","hid":19051,"title":"Скрипт для создания крутящейся картинки в дополнение к просмотрщику SovGVD","html":"<p>Ссылка на скрипт просмотровщика: <a href=\"https://rcopen.com/blogs/79585/19018\" class=\"link link-int link-auto\" data-nd-link-type=\"autolink\" data-nd-link-orig=\"https://rcopen.com/blogs/79585/19018\">rcopen.com/blogs/79585/19018</a></p>\n<p>Вот набросал батник для Windows чтобы делать такую длинную картинку. Этот батник делает разбитие на кадры через ffmpeg и склейку через imagemagick, попутно вычисляя высоту готовой картинки, и формирует правильное имя файла для скрпипта.</p>\n<p>Батник должен запускаться из каталога, в который скопированы FFMPEG (в подкаталог <strong data-nd-pair-src=\"**\">ffmpeg</strong>, а в нем уже должен быть <strong data-nd-pair-src=\"**\">bin</strong>, и в нем ffmpeg.exe) и IMAGEMAGICK (в подкаталог <strong data-nd-pair-src=\"**\">imagemagick</strong>, а в нем уже convert.exe). Запуск батника без параметров дает подсказку.</p>\n<!--cut-->\n<p><strong data-nd-pair-src=\"**\">Перед запуском удалите все картинки в выходном каталоге!<br>\n</strong><br>\n<strong data-nd-pair-src=\"**\">Параметры</strong>:</p>\n<ol>\n<li>input_file_name - входной видео-файл;</li>\n<li>output_folder - каталог, куда будет класться длинная картинка и промежуточные кадры;</li>\n<li>start_time - время начала вырезанного куска в формате MM:SS;</li>\n<li>stop_time - время конца вырезанного куска в формате MM:SS;</li>\n<li>output_frames - количество кадров в длинной картинке;</li>\n<li>output_width - ширина одного кадра в длинной картинке;</li>\n<li>[ffmpeg_options] - необязательные параметры FFMPEG (например, для вырезание участка изображения (crop)).</li>\n</ol>\n<p><strong data-nd-pair-src=\"**\">Пример:</strong></p>\n<p>split.cmd C:\\Capture\\gopr7489.mp4 C:\\VideoOut 1:38 1:55 36 640 -vf “crop=iw-200:ih-200:100:200”</p>\n<p><strong data-nd-pair-src=\"**\">Скрипт (split.cmd):</strong></p>\n<pre class=\"hljs\"><code>@rem Run without parameters for help!\n\n@set CMD_NAME=%~nx0%\n@set DIR=%~dp0%\n@set FFMPEG=%DIR%ffmpeg\n@set IMAGEMAGICK=%DIR%imagemagick\n\n@if [%6] EQU [] goto Usage\n@set inputfile=%1\n@set outputdir=%2\n@set tStart=%3\n@set tStop=%4\n@set resultFrames=%5\n@set width=%6\n\n@SHIFT\n@SHIFT\n@SHIFT\n@SHIFT\n@SHIFT\n@SHIFT\n@set OPTIONS=\n@:loop1\n@if [%1] == [] goto end_loop1\n@set OPTIONS=%OPTIONS% %1\n@SHIFT\n@goto loop1\n\n@:end_loop1\n\n@echo OPTIONS=%OPTIONS%\n\nrem goto :Convert\n\n@setlocal ENABLEDELAYEDEXPANSION\n\n@for /F "tokens=1* delims=:" %%a in ("!tStart!") do @set /a tStartSec=%%a*60+%%b\n@echo Start=!tStartSec!\n\n@for /F "tokens=1* delims=:" %%a in ("!tStop!") do @set /a tStopSec=%%a*60+%%b\n@echo Stop=!tStopSec!\n\n@set /a tLen=tStopSec-tStartSec\n@echo Length=!tLen!\n\n@set /a resultFPS=(1000*resultFrames+(tLen/2))/tLen\n@set resultFPS=000%resultFPS%\n@echo resultFPS*1000=%resultFPS%\n@set resultFPS=%resultFPS:~0,-3%.%resultFPS:~-3%\n@echo resultFPS=%resultFPS%\n\n@setlocal DISABLEDELAYEDEXPANSION\n\n@%FFMPEG%\\bin\\ffmpeg.exe -i %inputfile% -r %resultFPS% -ss %tStartSec% -to %tStopSec% %OPTIONS% -f image2 %outputdir%\\i%%04d.jpeg\n\n@:Convert\n@echo Set current path: %outputdir%\n@pushd %outputdir%\n@set fileSet=\n@setlocal ENABLEDELAYEDEXPANSION\n@for %%i in (*.jpeg) do @set fileSet=!fileSet! %%i\n@set fileSet=%fileSet:~1%\n@echo %fileSet% | %IMAGEMAGICK%\\convert @- -sharpen 0x1.0 -filter Lanczos -distort resize 640x +append out.jpg\n\n@for /f "tokens=*" %%a in ('@%IMAGEMAGICK%\\identify -format "%%[fx:h]" out.jpg') do @set height=%%a\n\n@echo Height=%height%\n@set output_name=out_%resultFrames%_%width%_%height%.jpg\n@ren out.jpg %output_name%\n\n@popd\n\n@echo -------------------------------------------------------------\n@echo Result image: %outputdir%\\%output_name%\n\n@goto Quit\n\n@:Usage\n@echo ----------------------------------------------------------------------\n@echo This script makes a scrollable picture from video for SovGVD's script.\n@echo Made by Andrey Prikupets, 2014. Many thanks to SovGVD!\n@echo See more: \n@echo ----------------------------------------------------------------------\n@echo Usage:\n@echo %CMD_NAME% input_file_name output_folder start_time stop_time output_frames output_width [ffmpeg_options]\n@echo Note:\n@echo start_time and stop_time have format: MM:SS\n@echo Example:\n@echo %CMD_NAME% C:\\Capture\\gopr7489.mp4 C:\\VideoOut 1:38 1:55 36 640 -vf "crop=iw-200:ih-200:100:200"\n@echo Utilities:\n@echo ffmpeg should be copied to: %FFMPEG%\n@echo imagemagic should be copied to: %IMAGEMAGICK%\n\n:Quit\n</code></pre>\n","user":"41b8a4ac3df9550077792e83","ts":"2014-06-28T09:57:41.000Z","st":1,"cache":{"comment_count":3,"last_comment":"53af49e9997073007713465f","last_comment_hid":3,"last_ts":"2014-06-28T23:04:09.000Z","last_user":"4d4325cb3df9550077756c92"},"views":1096,"bookmarks":0,"votes":0},"subscription":null},"locale":"en-US","user_id":"000000000000000000000000","user_hid":0,"user_name":"","user_nick":"","user_avatar":null,"is_member":false,"settings":{"can_access_acp":false,"can_use_dialogs":false,"hide_heavy_content":false},"unread_dialogs":false,"footer":{"rules":{"to":"common.rules"},"contacts":{"to":"rco-nodeca.contacts"}},"navbar":{"tracker":{"to":"users.tracker","autoselect":false,"priority":10},"forum":{"to":"forum.index"},"blogs":{"to":"blogs.index"},"clubs":{"to":"clubs.index"},"market":{"to":"market.index.buy"}},"recaptcha":{"public_key":"6LcyTs0dAAAAADW_1wxPfl0IHuXxBG7vMSSX26Z4"},"layout":"common.layout"}