找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 91818|回复: 42

[特效代码] bat窗口播放视频

[复制链接]
发表于 2021-8-15 09:41:50 | 显示全部楼层 |阅读模式
本帖最后由 看电池 于 2021-8-16 12:36 编辑

之前看到了大佬plp626的cmd窗口显示图片
http://www.bathome.net/thread-11364-1-1.html
因为图片+音乐=视频
所以我就写了一段播放伪视频的bat
帧率超低
  1. @echo off&setlocal enabledelayedexpansion
  2. title 大庆油田 by:看电池
  3. mode con cols=35 lines=31
  4. start y\y.vbs
  5. set v=0
  6. for /l %%i in (0 1 51) do (
  7. set /a v=v+1
  8. y\i.exe y\y!v!.bmp 0 0
  9. for /l %%i in (0 1 380) do echo m>nul
  10. )
  11. pause>nul
复制代码
 楼主| 发表于 2021-8-15 09:47:36 | 显示全部楼层
本帖最后由 看电池 于 2021-8-16 12:38 编辑

附件下载(cmd1152的网站)文件区\bat窗口播放视频.zip
http://cmd1152.ys168.com/
发表于 2021-8-15 10:23:03 | 显示全部楼层
  1. ping /n 1 192.178.1.110 >nul
复制代码
换成
  1. for /l %%t in (1,1,600) do (set ppp=0)
复制代码
发表于 2021-8-15 10:27:00 | 显示全部楼层
回复 2# 看电池


    你给的网址打不开,可否上传到我的空间?
    上传方法:
                1.进入http://cmd1152.ys168.com
                2.打开 文件区 文件夹
                3.点击左上角的 上传文件
                4.选择你要上传的文件
                5.点击确定
 楼主| 发表于 2021-8-15 10:45:58 | 显示全部楼层
回复 4# cmd1152


    谢谢,已上传
 楼主| 发表于 2021-8-15 10:48:34 | 显示全部楼层
本帖最后由 看电池 于 2021-8-15 10:52 编辑

回复 3# cmd1152


   for命令
不太行啊,视频声音不同步
发表于 2021-8-15 14:20:57 | 显示全部楼层
CMD 窗口能播放真视频

Demo Video:
https://cowtransfer.com/s/bb4abb2411f24c
 楼主| 发表于 2021-8-15 16:40:35 | 显示全部楼层
回复 7# peterboy666


    e,这个我看不像是纯bat写的,能给一下代码吗?
发表于 2021-8-16 18:03:48 | 显示全部楼层
本帖最后由 slimay 于 2021-8-16 18:11 编辑
>>>  改进的控制台显示视频第三方 bmp2.exe  <<<
可以实现瞬时逆放视频, 最高 每秒1000张图片的显示速度.音轨同步, 也算是一个视频播放器吧, 但是是控制台下的,只有23KB.
附件下载(cmd1152的网站)文件区\bmp2窗口播放视频.zip
http://cmd1152.ys168.com/

基础用法:
bmp2 "第一张图"  "最后一张图"  延时  "背景音乐"
bmp2 "第一张图"  "最后一张图"  延时   位置的横坐标    位置的纵坐标   "背景音乐"


开放源码
  1. #include <stdio.h>
  2. #include <windows.h>
  3. #include <gdiplus.h>
  4. #include<mmsystem.h>
  5. #pragma comment(lib,"Winmm.lib")
  6. #pragma comment(lib,"Gdiplus.lib")

  7. using namespace Gdiplus;

  8. #define USAGE_INFORMATION "\
  9. Usage: bmp2 [start picture] [end picture] [delayed time]\n\
  10.        bmp2 [start picture] [end picture] [delayed time] [mp3]\n\
  11.        bmp2 [start picture] [end picture] [delayed time] [x position] [y position]\n\
  12.        bmp2 [start picture] [end picture] [delayed time] [x position] [y position] [mp3]\n\
  13. Made by Slimay.\n"

  14. extern "C" HWND WINAPI GetConsoleWindow();

  15. int main( int argc, char** argv )
  16. {
  17.         if( argc - 1 < 3 || argc - 1 > 6 )
  18.         {
  19.                 printf( USAGE_INFORMATION );
  20.                 exit( 1 );
  21.         }

  22.         if( argc - 1 == 4 || argc - 1 == 6 )
  23.         {
  24.                 char* musicFile = ( argc - 1 == 4 ) ? argv[4] : argv[6];
  25.                 char musicStr[512] = {0};
  26.                 sprintf( musicStr, "open %s alias bkmusic", musicFile );
  27.                 mciSendStringA( musicStr, NULL, 0, NULL );
  28.                 mciSendString( "play bkmusic repeat", NULL, 0, NULL );
  29.         }

  30.         // 获取前缀名
  31.         int startNum = -1;
  32.         int endNum = -1;
  33.         float delayTime = atof( argv[3] );
  34.         int xPos = ( argc - 1 >= 5 ) ? atoi( argv[4] ) : 0;
  35.         int yPos = ( argc - 1 >= 5 ) ? atoi( argv[5] ) : 0;

  36.         int numShowWidth = 1;
  37.         char* preName = NULL;
  38.         char* lastName = NULL;

  39.         char* p = argv[1];
  40.         while( *p )
  41.         {
  42.                 if( '0' <= *p && *p <= '9' )
  43.                 {
  44.                         preName = argv[1];                       
  45.                         startNum = atoi( p );
  46.                         *p = 0;

  47.                         p++;
  48.                         while( '0' <= *p && *p <= '9' )
  49.                         {
  50.                                 p++;
  51.                                 numShowWidth ++;
  52.                         }
  53.                         lastName = p;
  54.                         break;
  55.                 }
  56.                 p++;
  57.         }

  58.         p = argv[2];
  59.         while( *p )
  60.         {
  61.                 if( '0' <= *p && *p <= '9' )
  62.                 {
  63.                         endNum = atoi( p );
  64.                         break;
  65.                 }
  66.                 p++;
  67.         }


  68.         ULONG_PTR gdipludToken;
  69.         GdiplusStartupInput gdiplusInput;
  70.         GdiplusStartup(&gdipludToken,&gdiplusInput,NULL);
  71.         {
  72.                 HDC  hDC =GetDC(GetConsoleWindow());
  73.                 HDC memDC = CreateCompatibleDC( hDC );
  74.                 HBITMAP hMemBitmap = CreateCompatibleBitmap(hDC, 1024, 1024);
  75.                 SelectObject(memDC, hMemBitmap);

  76.                 Graphics graph( memDC );
  77.                
  78.                 wchar_t wcsPreName[512 * 2];
  79.                 char picName[512] = {0};
  80.                
  81.                 for( int i = startNum; ( startNum - endNum <= 0 ) ? ( i <= endNum ) : ( i >= endNum ); i += ( ( startNum - endNum <= 0 ) ? ( 1 ) : ( -1 ) ) )
  82.                 {
  83.                         sprintf( picName, "%s%0*d%s", preName, numShowWidth, i, lastName );
  84.                        
  85.                         int textlen = MultiByteToWideChar( CP_ACP, 0, picName, -1, NULL, 0 );
  86.                         MultiByteToWideChar( CP_ACP, 0, picName, -1, (LPWSTR)wcsPreName, textlen );
  87.                         wcsPreName[textlen] = 0x0000;
  88.                        
  89.                         Image* srcIMG = Image::FromFile(wcsPreName);
  90.                         graph.DrawImage(srcIMG, xPos, yPos);
  91.                         BitBlt( hDC, xPos, yPos, srcIMG->GetWidth(), srcIMG->GetHeight(), memDC, 0, 0, SRCCOPY );
  92.        
  93.                         Sleep( ( int )( delayTime * 1000 ) );
  94.                 }
  95.         }
  96.         GdiplusShutdown(gdipludToken);
  97.         return 1;
  98. }
复制代码
发表于 2021-8-17 11:00:40 | 显示全部楼层
我们还在玩基础,大神玩家都可以进阶玩视频了
发表于 2021-8-17 12:10:15 | 显示全部楼层
回复 9# slimay


    看 文件区\bmp2窗口播放视频优化.zip
发表于 2021-8-17 12:11:03 | 显示全部楼层
回复 10# cmd1152


    视频能不能换成https://mr.baidu.com/r/qBa9WTzF8k?f=cp&u=3564ca6d0b2fd204
发表于 2021-8-17 12:13:43 | 显示全部楼层
回复 9# slimay


    视频能不能换成https://mr.baidu.com/r/qBa9WTzF8k?f=cp&u=3564ca6d0b2fd204
发表于 2021-8-17 14:03:08 | 显示全部楼层
回复 13# cmd1152
已经换成了,参见, 文件区 "bmp2已经替换成这个视频了.zip",  直接pr就能把视频导成jpg序列,
发表于 2021-8-17 14:53:57 | 显示全部楼层
回复 14# slimay


    什么是pr,对了,你能不能搞功夫熊猫?2技术
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-16 22:02 , Processed in 0.012176 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表