ImageSourceをスタックに追加してそこからビデオを作成する簡単な方法はありますか?ImageSourceからビデオを作成する
答えて
あなたは一例として
http://joshsmithonwpf.wordpress.com/2008/04/23/good-old-fashion-image-animations-in-wpf/
を使用することができます。その後、あなたが動画としてキャプチャするSnagItのか、Microsoft式エンコーダプロのような画面キャプチャプログラムを使用することができ、ここでラジによって指さ
すぐにお返事ありがとうございます。ええ、私は、圧縮されていないAVIや何かを出力したようなものです:D – Anders
ジョシュ・スミスさんのブログは(http://joshsmithonwpf.wordpress.com/2008/04/23/good-old-fashion-image-animations-in-wpf/)WPFアプリのフォルダから画像を示す良い例です。この一度
ええ、それは問題ではない、私は彼のアプローチを理解しています。しかし、画像から非圧縮AVIなどを作成するためのAPIまたは何かが必要ですか?ありがとう。 – Anders
使用ビットマップからaviファイルを作成する方法について、サンプルコードについては、このライブラリavifilewrapper検索にアプリを変換するSaveenレディのブログで見ることができ取り組んでいます。このarticleは、ビジュアルをビットマップにレンダリングする方法を説明しています。私はそれがそれより簡単になるとは思わない。
WPFにはビデオエンコーディングライブラリが含まれていないため、エンコーディングを行うには外部エンコーディングライブラリを用意する必要があります。 This blog postには、Windows Mediaエンコーダーを使用してその操作を行う方法が記載されています。また、mencoderのようなものをあなたのアプリケーションにバンドルし、それをあなたが制御してあなたのアプリケーションから監視する外部プロセスとして起動することもできます。
私はすでにこのようなクラスをしました。私はsystem.DrawingBitmapである "ImageInfo"を提出すればよい。これは、次のコードを使用して簡単に作成することができます。
Public Function WpfBitmapSourceToBitmap(ByVal source As BitmapSource) As System.Drawing.Bitmap
If source Is Nothing Then Return Nothing
Dim bmp As New System.Drawing.Bitmap(source.PixelWidth, source.PixelHeight, System.Drawing.Imaging.PixelFormat.Format32bppPArgb)
Dim data As System.Drawing.Imaging.BitmapData = bmp.LockBits(New System.Drawing.Rectangle(System.Drawing.Point.Empty, bmp.Size), System.Drawing.Imaging.ImageLockMode.[WriteOnly], System.Drawing.Imaging.PixelFormat.Format32bppPArgb)
source.CopyPixels(Int32Rect.Empty, data.Scan0, data.Height * data.Stride, data.Stride)
bmp.UnlockBits(data)
Return bmp
End Function
それから私は
Public Class clsAviWriter
Inherits MAINInterface.TB.Imaging.Pia7.clsDspTemplate
Private cAvi As AviReaderWriter.AviFile.AviManager
Private AviStream As AviReaderWriter.AviFile.VideoStream
Private AudioStream As AviReaderWriter.AviFile.AudioStream
Private cFps As clsTbQueue
Private OldFpsDate As Date = Now
''' <summary>
''' The image object to paint graphical objects on it
''' </summary>
''' <value>descriptor of the image</value>
Public Overrides Property ImageInfo() As MAINInterface.TB.Imaging.Pia7.clsImageInfo
Get
Return Me._ImageInfo
End Get
Set(ByVal value As MAINInterface.TB.Imaging.Pia7.clsImageInfo)
Me._ImageInfo = value
Call WriteFrame()
Call Me.OnPropertyChanged(Me.Guid)
End Set
End Property
Private Sub WriteFrame()
Dim D As Date = Now
Dim Fps As Single
Me.cFps.Values.Add(D.Subtract(Me.OldFpsDate).Ticks)
Me.OldFpsDate = D
Me.cFps.Trim()
Fps = 1000/New TimeSpan(Me.cFps.Average).TotalMilliseconds
Me.cFps.BufferSize = TB.Math.myTrim(Fps * 1, 1, 1000)
If Me.AviStream IsNot Nothing Then
Me.AviStream.AddFrame(Me._ImageInfo.Image.Clone)
End If
End Sub
Public Sub New()
Me.ClassDescription = "Write images into an avi file"
Me.cFps = New clsTbQueue(10)
End Sub
Private Sub InitializeAvi()
Dim W As String
Dim Fps As Single
Dim di As New IO.DirectoryInfo(TB.SystemMain.AppPath & "Avi\")
TB.FileSystem.CreateDirectories(di)
W = IO.Path.Combine(di.FullName, "Record_" & Now.Ticks.ToString("0") & ".avi")
Me.cAvi = New AviReaderWriter.AviFile.AviManager(W, False)
Dim Opts As New AviReaderWriter.AviFile.Avi.AVICOMPRESSOPTIONS
Opts.fccType = 0
Opts.fccHandler = 1684633208
Opts.dwKeyFrameEvery = 0
Opts.dwQuality = 0 '0 ... 10000
Opts.dwFlags = 8 'AVICOMRPESSF_KEYFRAMES = 4
Opts.dwBytesPerSecond = 0
Opts.lpFormat = 0
Opts.lpParms = New IntPtr(0)
Opts.cbParms = 3532
Opts.dwInterleaveEvery = 0
Fps = 1000/New TimeSpan(Me.cFps.Average).TotalMilliseconds
'Dim bm1 As Bitmap
'bm1 = TB.Imaging.CreateReScaledImage(Me.pic.Image, New Size(Me.pic.Image.Width, Me.pic.Image.Height), False)
Me.AviStream = cAvi.AddVideoStream(Opts, Math.Floor(TB.Math.myTrim(Fps, 1, 50)), Me._ImageInfo.Image.Clone)
End Sub
Public Overrides Property Run() As Boolean
Get
Return Me._Run
End Get
Set(ByVal value As Boolean)
If Me._Run <> value Then
Me._Run = value
If Me._Run = True Then
Call InitializeAvi()
Else
If Me.cAvi IsNot Nothing Then
Me.cAvi.Close()
Me.cAvi = Nothing
Me.AviStream = Nothing
End If
End If
Call Me.OnPropertyChanged(Me.Guid)
End If
End Set
End Property
End Class
それにフレームを追加し、予め選択されたコーデック(例えばXVID MPEG4)とのAVIファイルとして保存するAviClassをしましたより多くのコードについて
はここを見て:http://www.wischik.com/lu/programmer/avi_utils.htmlとMSDNまたはhttp://www.codeproject.com/KB/audio-video/avigenerator.aspx
を私は(上記のコードは、使用可能なパブリックないいくつかのより多くの参照が必要です)どのように見えるか、そのようなシーケンスができる表示するためにソースコードを掲載しました。初期化し、フレームを追加し、FPS値を保存し、ハードディスクに安全に保存するだけでよいことがわかります。
また、DirectShowを検索してすべての動作を確認することもできます。
- 1. OpenCVビデオをテキストファイルから作成する
- 2. 画像からビデオを作成する
- 3. ストリーミングイメージからビデオを作成するC#
- 4. サーバーからのビデオURLからビデオのサムネイルを作成するには?
- 5. ビデオURLからサムネイル画像を作成!
- 6. Android:ビデオURIからビデオサムネイルを作成
- 7. WPF/Silverlightアニメーションからビデオを作成
- 8. ビデオをアップロードしてdjangoのビデオからサムネイルを作成
- 9. ビデオからオーディオポッドキャストを作成するサービスですか?
- 10. Pythonを使ってフレームからビデオを作成するには?
- 11. ほぼ静止画からビデオを作成する
- 12. HTML5ビデオからMP4作成時間を取得する
- 13. Javaで64ビットウィンドウのスクリーンキャプチャからビデオを作成する
- 14. Androidの画像リストからビデオを作成する方法
- 15. キャンバスとビデオ要素からMediaStreamを作成する
- 16. dailymotionビデオからサムネイル画像を作成する方法
- 17. 可視ウィンドウまたはビューからビデオを作成する
- 18. アンドロイドの画面アクティビティからビデオを作成する
- 19. ウェブサイトアナリティクスからビデオ録画を作成する
- 20. 画像からビデオを生成する
- 21. Nativescriptのbase64文字列からのImageSource
- 22. ビデオをプログラムで作成しますか?
- 23. PHPは文字列データからビデオを作成します
- 24. camからビデオを見ながら、スクリーンショットを作成する方法は?
- 25. ビデオURLからサムネイルを作成する方法はありますか?
- 26. キャンバスオーバーレイでビデオからスクリーンショットを作る
- 27. レイヤードビデオのビデオを作成する
- 28. OpenCVが画像からビデオを作成できない
- 29. FFMPEGで600 pngの画像から20秒のビデオを作成
- 30. は、RGBフレームからwebmビデオを作成する必要があります
もし私がこれを数回アップアップすることができたら、私はそれをやります。これは私がやりたいことが大好きなものです。 – Tim